sbuild (Debian sbuild) 0.85.0 (04 January 2023) on debian-ci-siliconvalley +==============================================================================+ | workflow 0.11.11-1 (armel) Wed, 24 Sep 2025 04:15:00 +0000 | +==============================================================================+ Package: workflow Version: 0.11.11-1 Source Version: 0.11.11-1 Distribution: unstable Machine Architecture: amd64 Host Architecture: armel Build Architecture: amd64 Build Profiles: cross nocheck Build Type: any I: NOTICE: Log filtering will replace 'var/run/schroot/mount/sid-amd64-sbuild-b51db958-d528-47b3-a941-11d845218989' with '<>' I: NOTICE: Log filtering will replace 'build/workflow-u9Yda7/resolver-VUHUtd' with '<>' +------------------------------------------------------------------------------+ | Update chroot | +------------------------------------------------------------------------------+ Hit:1 http://localhost:3142/debian unstable InRelease Get:2 http://localhost:3142/debian unstable/main armel Packages [9608 kB] Fetched 9608 kB in 1s (12.2 MB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +------------------------------------------------------------------------------+ | Fetch source files | +------------------------------------------------------------------------------+ Check APT --------- Checking available source versions... Download source files with APT ------------------------------ Reading package lists... NOTICE: 'workflow' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/debian/workflow.git Please use: git clone https://salsa.debian.org/debian/workflow.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 449 kB of source archives. Get:1 http://localhost:3142/debian unstable/main workflow 0.11.11-1 (dsc) [2030 B] Get:2 http://localhost:3142/debian unstable/main workflow 0.11.11-1 (tar) [441 kB] Get:3 http://localhost:3142/debian unstable/main workflow 0.11.11-1 (diff) [6280 B] Fetched 449 kB in 0s (8891 kB/s) Download complete and in download only mode I: NOTICE: Log filtering will replace 'build/workflow-u9Yda7/workflow-0.11.11' with '<>' I: NOTICE: Log filtering will replace 'build/workflow-u9Yda7' with '<>' +------------------------------------------------------------------------------+ | Install package build dependencies | +------------------------------------------------------------------------------+ Setup apt archive ----------------- Merged Build-Depends: dpkg-dev (>= 1.22.5), debhelper-compat (= 13), cmake, libssl-dev, libc-dev, libstdc++-dev, build-essential:amd64, fakeroot:amd64, crossbuild-essential-armel:amd64, libc-dev:armel, libstdc++-dev:armel Filtered Build-Depends: dpkg-dev (>= 1.22.5), debhelper-compat (= 13), cmake, libssl-dev, libc-dev, libstdc++-dev, build-essential:amd64, fakeroot:amd64, crossbuild-essential-armel:amd64, libc-dev:armel, libstdc++-dev:armel dpkg-deb: warning: root directory /<>/sbuild-build-depends-main-dummy has unusual owner or group 1000:119 dpkg-deb: hint: you might need to pass --root-owner-group, see for further details dpkg-deb: warning: ignoring 1 warning about the control file(s) dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/<>/apt_archive/sbuild-build-depends-main-dummy.deb'. Ign:1 copy:/<>/apt_archive ./ InRelease Get:2 copy:/<>/apt_archive ./ Release [609 B] Ign:3 copy:/<>/apt_archive ./ Release.gpg Get:4 copy:/<>/apt_archive ./ Sources [780 B] Get:5 copy:/<>/apt_archive ./ Packages [798 B] Fetched 2187 B in 0s (0 B/s) Reading package lists... Reading package lists... Install main build dependencies (apt-based resolver) ---------------------------------------------------- Installing build dependencies Reading package lists... Building dependency tree... Reading state information... Execute external solver... The following additional packages will be installed: autoconf automake autopoint autotools-dev binutils-arm-linux-gnueabi bsdextrautils cmake cmake-data cpp-15-arm-linux-gnueabi cpp-arm-linux-gnueabi crossbuild-essential-armel debhelper dh-autoreconf dh-strip-nondeterminism dwz fakeroot file g++-15-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-15-arm-linux-gnueabi gcc-15-arm-linux-gnueabi-base gcc-15-base:armel gcc-15-cross-base-ports gcc-arm-linux-gnueabi gettext gettext-base groff-base intltool-debian libarchive-zip-perl libarchive13t64 libasan8:armel libasan8-armel-cross libatomic1:armel libatomic1-armel-cross libbrotli1 libc6:armel libc6-armel-cross libc6-dev:armel libc6-dev-armel-cross libcom-err2 libcrypt-dev:armel libcrypt1:armel libcurl4t64 libdebhelper-perl libelf1t64 libexpat1 libfakeroot libffi8 libfile-stripnondeterminism-perl libgcc-15-dev:armel libgcc-15-dev-armel-cross libgcc-s1:armel libgcc-s1-armel-cross libgnutls30t64 libgomp1:armel libgomp1-armel-cross libgssapi-krb5-2 libidn2-0 libjsoncpp26 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap2 libmagic-mgc libmagic1t64 libncursesw6 libnghttp2-14 libnghttp3-9 libp11-kit0 libpipeline1 libproc2-0 libpsl5t64 librhash1 librtmp1 libsasl2-2 libsasl2-modules-db libssh2-1t64 libssl-dev:armel libssl3t64:armel libstdc++-15-dev:armel libstdc++-15-dev-armel-cross libstdc++6:armel libstdc++6-armel-cross libtasn1-6 libtool libubsan1:armel libubsan1-armel-cross libuchardet0 libunistring5 libuv1t64 libxml2-16 libzstd1:armel linux-libc-dev-armel-cross m4 man-db po-debconf procps sensible-utils zlib1g:armel Suggested packages: autoconf-archive gnu-standards autoconf-doc binutils-doc cmake-doc cmake-format elpa-cmake-mode ninja-build gcc-15-locales cpp-15-doc cpp-doc dh-make gcc-15-doc manpages-dev flex bison gdb-arm-linux-gnueabi gcc-doc gettext-doc libasprintf-dev libgettextpo-dev gnulib-l10n groff lrzip glibc-doc:armel libc-l10n:armel locales:armel libnss-nis:armel libnss-nisplus:armel manpages-dev:armel gnutls-bin krb5-doc krb5-user libssl-doc:armel libstdc++-15-doc:armel libtool-doc gfortran | fortran95-compiler m4-doc apparmor less www-browser libmail-box-perl Recommended packages: curl | wget | lynx libidn2-0:armel ca-certificates libarchive-cpio-perl krb5-locales libldap-common libgpm2 publicsuffix libsasl2-modules libltdl-dev libmail-sendmail-perl psmisc linux-sysctl-defaults The following NEW packages will be installed: autoconf automake autopoint autotools-dev binutils-arm-linux-gnueabi bsdextrautils cmake cmake-data cpp-15-arm-linux-gnueabi cpp-arm-linux-gnueabi crossbuild-essential-armel debhelper dh-autoreconf dh-strip-nondeterminism dwz fakeroot file g++-15-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-15-arm-linux-gnueabi gcc-15-arm-linux-gnueabi-base gcc-15-base:armel gcc-15-cross-base-ports gcc-arm-linux-gnueabi gettext gettext-base groff-base intltool-debian libarchive-zip-perl libarchive13t64 libasan8:armel libasan8-armel-cross libatomic1:armel libatomic1-armel-cross libbrotli1 libc6:armel libc6-armel-cross libc6-dev:armel libc6-dev-armel-cross libcom-err2 libcrypt-dev:armel libcrypt1:armel libcurl4t64 libdebhelper-perl libelf1t64 libexpat1 libfakeroot libffi8 libfile-stripnondeterminism-perl libgcc-15-dev:armel libgcc-15-dev-armel-cross libgcc-s1:armel libgcc-s1-armel-cross libgnutls30t64 libgomp1:armel libgomp1-armel-cross libgssapi-krb5-2 libidn2-0 libjsoncpp26 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap2 libmagic-mgc libmagic1t64 libncursesw6 libnghttp2-14 libnghttp3-9 libp11-kit0 libpipeline1 libproc2-0 libpsl5t64 librhash1 librtmp1 libsasl2-2 libsasl2-modules-db libssh2-1t64 libssl-dev:armel libssl3t64:armel libstdc++-15-dev:armel libstdc++-15-dev-armel-cross libstdc++6:armel libstdc++6-armel-cross libtasn1-6 libtool libubsan1:armel libubsan1-armel-cross libuchardet0 libunistring5 libuv1t64 libxml2-16 libzstd1:armel linux-libc-dev-armel-cross m4 man-db po-debconf procps sbuild-build-depends-main-dummy:armel sensible-utils zlib1g:armel 0 upgraded, 101 newly installed, 0 to remove and 0 not upgraded. Need to get 317 MB of archives. After this operation, 1319 MB of additional disk space will be used. Get:1 copy:/<>/apt_archive ./ sbuild-build-depends-main-dummy 0.invalid.0 [940 B] Get:2 http://localhost:3142/debian unstable/main amd64 libexpat1 amd64 2.7.2-1 [111 kB] Get:3 http://localhost:3142/debian unstable/main amd64 libncursesw6 amd64 6.5+20250216-2 [135 kB] Get:4 http://localhost:3142/debian unstable/main amd64 libproc2-0 amd64 2:4.0.4-9 [65.6 kB] Get:5 http://localhost:3142/debian unstable/main amd64 procps amd64 2:4.0.4-9 [882 kB] Get:6 http://localhost:3142/debian unstable/main amd64 sensible-utils all 0.0.26 [27.0 kB] Get:7 http://localhost:3142/debian unstable/main amd64 libmagic-mgc amd64 1:5.46-5 [338 kB] Get:8 http://localhost:3142/debian unstable/main amd64 libmagic1t64 amd64 1:5.46-5 [109 kB] Get:9 http://localhost:3142/debian unstable/main amd64 file amd64 1:5.46-5 [43.6 kB] Get:10 http://localhost:3142/debian unstable/main amd64 gettext-base amd64 0.23.1-2+b1 [244 kB] Get:11 http://localhost:3142/debian unstable/main amd64 libuchardet0 amd64 0.0.8-2 [68.5 kB] Get:12 http://localhost:3142/debian unstable/main amd64 groff-base amd64 1.23.0-9 [1187 kB] Get:13 http://localhost:3142/debian unstable/main amd64 bsdextrautils amd64 2.41.1-3 [100 kB] Get:14 http://localhost:3142/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get:15 http://localhost:3142/debian unstable/main amd64 man-db amd64 2.13.1-1 [1469 kB] Get:16 http://localhost:3142/debian unstable/main amd64 m4 amd64 1.4.20-1 [324 kB] Get:17 http://localhost:3142/debian unstable/main amd64 autoconf all 2.72-3.1 [494 kB] Get:18 http://localhost:3142/debian unstable/main amd64 autotools-dev all 20240727.1 [60.2 kB] Get:19 http://localhost:3142/debian unstable/main amd64 automake all 1:1.17-4 [862 kB] Get:20 http://localhost:3142/debian unstable/main amd64 autopoint all 0.23.1-2 [770 kB] Get:21 http://localhost:3142/debian unstable/main amd64 binutils-arm-linux-gnueabi amd64 2.45-7 [1627 kB] Get:22 http://localhost:3142/debian unstable/main amd64 cmake-data all 4.1.1+really3.31.6-2 [2268 kB] Get:23 http://localhost:3142/debian unstable/main amd64 libxml2-16 amd64 2.14.5+dfsg-0.2 [638 kB] Get:24 http://localhost:3142/debian unstable/main amd64 libarchive13t64 amd64 3.7.4-4+b1 [349 kB] Get:25 http://localhost:3142/debian unstable/main amd64 libbrotli1 amd64 1.1.0-2+b7 [307 kB] Get:26 http://localhost:3142/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-5 [33.0 kB] Get:27 http://localhost:3142/debian unstable/main amd64 libcom-err2 amd64 1.47.2-3+b3 [25.0 kB] Get:28 http://localhost:3142/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-5 [81.5 kB] Get:29 http://localhost:3142/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-6 [9456 B] Get:30 http://localhost:3142/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-5 [326 kB] Get:31 http://localhost:3142/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-5 [138 kB] Get:32 http://localhost:3142/debian unstable/main amd64 libunistring5 amd64 1.3-2 [477 kB] Get:33 http://localhost:3142/debian unstable/main amd64 libidn2-0 amd64 2.3.8-4 [110 kB] Get:34 http://localhost:3142/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-9 [19.8 kB] Get:35 http://localhost:3142/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-9 [57.5 kB] Get:36 http://localhost:3142/debian unstable/main amd64 libldap2 amd64 2.6.10+dfsg-1 [194 kB] Get:37 http://localhost:3142/debian unstable/main amd64 libnghttp2-14 amd64 1.64.0-1.1+b1 [76.2 kB] Get:38 http://localhost:3142/debian unstable/main amd64 libnghttp3-9 amd64 1.11.0-1 [73.7 kB] Get:39 http://localhost:3142/debian unstable/main amd64 libpsl5t64 amd64 0.21.2-1.1+b1 [57.2 kB] Get:40 http://localhost:3142/debian unstable/main amd64 libffi8 amd64 3.5.2-2 [25.5 kB] Get:41 http://localhost:3142/debian unstable/main amd64 libp11-kit0 amd64 0.25.9-2 [443 kB] Get:42 http://localhost:3142/debian unstable/main amd64 libtasn1-6 amd64 4.20.0-2 [49.9 kB] Get:43 http://localhost:3142/debian unstable/main amd64 libgnutls30t64 amd64 3.8.10-2 [1484 kB] Get:44 http://localhost:3142/debian unstable/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-3 [58.3 kB] Get:45 http://localhost:3142/debian unstable/main amd64 libssh2-1t64 amd64 1.11.1-1 [245 kB] Get:46 http://localhost:3142/debian unstable/main amd64 libcurl4t64 amd64 8.16.0-1 [437 kB] Get:47 http://localhost:3142/debian unstable/main amd64 libjsoncpp26 amd64 1.9.6-4 [89.4 kB] Get:48 http://localhost:3142/debian unstable/main amd64 librhash1 amd64 1.4.6-1 [137 kB] Get:49 http://localhost:3142/debian unstable/main amd64 libuv1t64 amd64 1.51.0-2 [155 kB] Get:50 http://localhost:3142/debian unstable/main amd64 cmake amd64 4.1.1+really3.31.6-2 [12.2 MB] Get:51 http://localhost:3142/debian unstable/main amd64 gcc-15-arm-linux-gnueabi-base amd64 15.2.0-4cross1 [53.0 kB] Get:52 http://localhost:3142/debian unstable/main amd64 cpp-15-arm-linux-gnueabi amd64 15.2.0-4cross1 [80.4 MB] Get:53 http://localhost:3142/debian unstable/main amd64 cpp-arm-linux-gnueabi amd64 4:15.2.0-4 [4448 B] Get:54 http://localhost:3142/debian unstable/main amd64 gcc-15-cross-base-ports all 15.2.0-4cross1 [48.4 kB] Get:55 http://localhost:3142/debian unstable/main amd64 libc6-armel-cross all 2.41-11cross1 [942 kB] Get:56 http://localhost:3142/debian unstable/main amd64 libgcc-s1-armel-cross all 15.2.0-4cross1 [38.9 kB] Get:57 http://localhost:3142/debian unstable/main amd64 libgomp1-armel-cross all 15.2.0-4cross1 [113 kB] Get:58 http://localhost:3142/debian unstable/main amd64 libatomic1-armel-cross all 15.2.0-4cross1 [9472 B] Get:59 http://localhost:3142/debian unstable/main amd64 libasan8-armel-cross all 15.2.0-4cross1 [2590 kB] Get:60 http://localhost:3142/debian unstable/main amd64 libstdc++6-armel-cross all 15.2.0-4cross1 [561 kB] Get:61 http://localhost:3142/debian unstable/main amd64 libubsan1-armel-cross all 15.2.0-4cross1 [1072 kB] Get:62 http://localhost:3142/debian unstable/main amd64 libgcc-15-dev-armel-cross all 15.2.0-4cross1 [755 kB] Get:63 http://localhost:3142/debian unstable/main amd64 gcc-15-arm-linux-gnueabi amd64 15.2.0-4cross1 [88.1 MB] Get:64 http://localhost:3142/debian unstable/main amd64 gcc-arm-linux-gnueabi amd64 4:15.2.0-4 [1456 B] Get:65 http://localhost:3142/debian unstable/main amd64 linux-libc-dev-armel-cross all 6.12.38-1cross1 [2430 kB] Get:66 http://localhost:3142/debian unstable/main amd64 libc6-dev-armel-cross all 2.41-11cross1 [1358 kB] Get:67 http://localhost:3142/debian unstable/main amd64 libstdc++-15-dev-armel-cross all 15.2.0-4cross1 [2409 kB] Get:68 http://localhost:3142/debian unstable/main amd64 g++-15-arm-linux-gnueabi amd64 15.2.0-4cross1 [85.9 MB] Get:69 http://localhost:3142/debian unstable/main amd64 g++-arm-linux-gnueabi amd64 4:15.2.0-4 [1204 B] Get:70 http://localhost:3142/debian unstable/main amd64 crossbuild-essential-armel all 12.12 [3552 B] Get:71 http://localhost:3142/debian unstable/main amd64 libdebhelper-perl all 13.27 [92.2 kB] Get:72 http://localhost:3142/debian unstable/main amd64 libtool all 2.5.4-5 [540 kB] Get:73 http://localhost:3142/debian unstable/main amd64 dh-autoreconf all 21 [12.2 kB] Get:74 http://localhost:3142/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get:75 http://localhost:3142/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.15.0-1 [19.9 kB] Get:76 http://localhost:3142/debian unstable/main amd64 dh-strip-nondeterminism all 1.15.0-1 [8812 B] Get:77 http://localhost:3142/debian unstable/main amd64 libelf1t64 amd64 0.193-3 [192 kB] Get:78 http://localhost:3142/debian unstable/main amd64 dwz amd64 0.16-2 [108 kB] Get:79 http://localhost:3142/debian unstable/main amd64 gettext amd64 0.23.1-2+b1 [1680 kB] Get:80 http://localhost:3142/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get:81 http://localhost:3142/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get:82 http://localhost:3142/debian unstable/main amd64 debhelper all 13.27 [940 kB] Get:83 http://localhost:3142/debian unstable/main amd64 libfakeroot amd64 1.37.1.2-1 [29.7 kB] Get:84 http://localhost:3142/debian unstable/main amd64 fakeroot amd64 1.37.1.2-1 [76.0 kB] Get:85 http://localhost:3142/debian unstable/main armel gcc-15-base armel 15.2.0-4 [52.8 kB] Get:86 http://localhost:3142/debian unstable/main armel libgcc-s1 armel 15.2.0-4 [38.9 kB] Get:87 http://localhost:3142/debian unstable/main armel libc6 armel 2.41-12 [2262 kB] Get:88 http://localhost:3142/debian unstable/main armel libasan8 armel 15.2.0-4 [2601 kB] Get:89 http://localhost:3142/debian unstable/main armel libatomic1 armel 15.2.0-4 [9708 B] Get:90 http://localhost:3142/debian unstable/main armel libcrypt1 armel 1:4.4.38-1 [97.4 kB] Get:91 http://localhost:3142/debian unstable/main armel libcrypt-dev armel 1:4.4.38-1 [127 kB] Get:92 http://localhost:3142/debian unstable/main armel libc6-dev armel 2.41-12 [1362 kB] Get:93 http://localhost:3142/debian unstable/main armel libgomp1 armel 15.2.0-4 [116 kB] Get:94 http://localhost:3142/debian unstable/main armel libstdc++6 armel 15.2.0-4 [608 kB] Get:95 http://localhost:3142/debian unstable/main armel libubsan1 armel 15.2.0-4 [1072 kB] Get:96 http://localhost:3142/debian unstable/main armel libgcc-15-dev armel 15.2.0-4 [761 kB] Get:97 http://localhost:3142/debian unstable/main armel libzstd1 armel 1.5.7+dfsg-1.1 [270 kB] Get:98 http://localhost:3142/debian unstable/main armel zlib1g armel 1:1.3.dfsg+really1.3.1-1+b1 [75.3 kB] Get:99 http://localhost:3142/debian unstable/main armel libssl3t64 armel 3.5.3-1 [1955 kB] Get:100 http://localhost:3142/debian unstable/main armel libssl-dev armel 3.5.3-1 [2554 kB] Get:101 http://localhost:3142/debian unstable/main armel libstdc++-15-dev armel 15.2.0-4 [2406 kB] Preconfiguring packages ... Fetched 317 MB in 2s (209 MB/s) Selecting previously unselected package libexpat1:amd64. (Reading database ... 12958 files and directories currently installed.) Preparing to unpack .../000-libexpat1_2.7.2-1_amd64.deb ... Unpacking libexpat1:amd64 (2.7.2-1) ... Selecting previously unselected package libncursesw6:amd64. Preparing to unpack .../001-libncursesw6_6.5+20250216-2_amd64.deb ... Unpacking libncursesw6:amd64 (6.5+20250216-2) ... Selecting previously unselected package libproc2-0:amd64. Preparing to unpack .../002-libproc2-0_2%3a4.0.4-9_amd64.deb ... Unpacking libproc2-0:amd64 (2:4.0.4-9) ... Selecting previously unselected package procps. Preparing to unpack .../003-procps_2%3a4.0.4-9_amd64.deb ... Unpacking procps (2:4.0.4-9) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../004-sensible-utils_0.0.26_all.deb ... Unpacking sensible-utils (0.0.26) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../005-libmagic-mgc_1%3a5.46-5_amd64.deb ... Unpacking libmagic-mgc (1:5.46-5) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../006-libmagic1t64_1%3a5.46-5_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.46-5) ... Selecting previously unselected package file. Preparing to unpack .../007-file_1%3a5.46-5_amd64.deb ... Unpacking file (1:5.46-5) ... Selecting previously unselected package gettext-base. Preparing to unpack .../008-gettext-base_0.23.1-2+b1_amd64.deb ... Unpacking gettext-base (0.23.1-2+b1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../009-libuchardet0_0.0.8-2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-2) ... Selecting previously unselected package groff-base. Preparing to unpack .../010-groff-base_1.23.0-9_amd64.deb ... Unpacking groff-base (1.23.0-9) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../011-bsdextrautils_2.41.1-3_amd64.deb ... Unpacking bsdextrautils (2.41.1-3) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../012-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../013-man-db_2.13.1-1_amd64.deb ... Unpacking man-db (2.13.1-1) ... Selecting previously unselected package m4. Preparing to unpack .../014-m4_1.4.20-1_amd64.deb ... Unpacking m4 (1.4.20-1) ... Selecting previously unselected package autoconf. Preparing to unpack .../015-autoconf_2.72-3.1_all.deb ... Unpacking autoconf (2.72-3.1) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../016-autotools-dev_20240727.1_all.deb ... Unpacking autotools-dev (20240727.1) ... Selecting previously unselected package automake. Preparing to unpack .../017-automake_1%3a1.17-4_all.deb ... Unpacking automake (1:1.17-4) ... Selecting previously unselected package autopoint. Preparing to unpack .../018-autopoint_0.23.1-2_all.deb ... Unpacking autopoint (0.23.1-2) ... Selecting previously unselected package binutils-arm-linux-gnueabi. Preparing to unpack .../019-binutils-arm-linux-gnueabi_2.45-7_amd64.deb ... Unpacking binutils-arm-linux-gnueabi (2.45-7) ... Selecting previously unselected package cmake-data. Preparing to unpack .../020-cmake-data_4.1.1+really3.31.6-2_all.deb ... Unpacking cmake-data (4.1.1+really3.31.6-2) ... Selecting previously unselected package libxml2-16:amd64. Preparing to unpack .../021-libxml2-16_2.14.5+dfsg-0.2_amd64.deb ... Unpacking libxml2-16:amd64 (2.14.5+dfsg-0.2) ... Selecting previously unselected package libarchive13t64:amd64. Preparing to unpack .../022-libarchive13t64_3.7.4-4+b1_amd64.deb ... Unpacking libarchive13t64:amd64 (3.7.4-4+b1) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../023-libbrotli1_1.1.0-2+b7_amd64.deb ... Unpacking libbrotli1:amd64 (1.1.0-2+b7) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../024-libkrb5support0_1.21.3-5_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-5) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../025-libcom-err2_1.47.2-3+b3_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-3+b3) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../026-libk5crypto3_1.21.3-5_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-5) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../027-libkeyutils1_1.6.3-6_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-6) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../028-libkrb5-3_1.21.3-5_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-5) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../029-libgssapi-krb5-2_1.21.3-5_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-5) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../030-libunistring5_1.3-2_amd64.deb ... Unpacking libunistring5:amd64 (1.3-2) ... Selecting previously unselected package libidn2-0:amd64. Preparing to unpack .../031-libidn2-0_2.3.8-4_amd64.deb ... Unpacking libidn2-0:amd64 (2.3.8-4) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../032-libsasl2-modules-db_2.1.28+dfsg1-9_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../033-libsasl2-2_2.1.28+dfsg1-9_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libldap2:amd64. Preparing to unpack .../034-libldap2_2.6.10+dfsg-1_amd64.deb ... Unpacking libldap2:amd64 (2.6.10+dfsg-1) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../035-libnghttp2-14_1.64.0-1.1+b1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.64.0-1.1+b1) ... Selecting previously unselected package libnghttp3-9:amd64. Preparing to unpack .../036-libnghttp3-9_1.11.0-1_amd64.deb ... Unpacking libnghttp3-9:amd64 (1.11.0-1) ... Selecting previously unselected package libpsl5t64:amd64. Preparing to unpack .../037-libpsl5t64_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl5t64:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../038-libffi8_3.5.2-2_amd64.deb ... Unpacking libffi8:amd64 (3.5.2-2) ... Selecting previously unselected package libp11-kit0:amd64. Preparing to unpack .../039-libp11-kit0_0.25.9-2_amd64.deb ... Unpacking libp11-kit0:amd64 (0.25.9-2) ... Selecting previously unselected package libtasn1-6:amd64. Preparing to unpack .../040-libtasn1-6_4.20.0-2_amd64.deb ... Unpacking libtasn1-6:amd64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:amd64. Preparing to unpack .../041-libgnutls30t64_3.8.10-2_amd64.deb ... Unpacking libgnutls30t64:amd64 (3.8.10-2) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../042-librtmp1_2.4+20151223.gitfa8646d.1-3_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-3) ... Selecting previously unselected package libssh2-1t64:amd64. Preparing to unpack .../043-libssh2-1t64_1.11.1-1_amd64.deb ... Unpacking libssh2-1t64:amd64 (1.11.1-1) ... Selecting previously unselected package libcurl4t64:amd64. Preparing to unpack .../044-libcurl4t64_8.16.0-1_amd64.deb ... Unpacking libcurl4t64:amd64 (8.16.0-1) ... Selecting previously unselected package libjsoncpp26:amd64. Preparing to unpack .../045-libjsoncpp26_1.9.6-4_amd64.deb ... Unpacking libjsoncpp26:amd64 (1.9.6-4) ... Selecting previously unselected package librhash1:amd64. Preparing to unpack .../046-librhash1_1.4.6-1_amd64.deb ... Unpacking librhash1:amd64 (1.4.6-1) ... Selecting previously unselected package libuv1t64:amd64. Preparing to unpack .../047-libuv1t64_1.51.0-2_amd64.deb ... Unpacking libuv1t64:amd64 (1.51.0-2) ... Selecting previously unselected package cmake. Preparing to unpack .../048-cmake_4.1.1+really3.31.6-2_amd64.deb ... Unpacking cmake (4.1.1+really3.31.6-2) ... Selecting previously unselected package gcc-15-arm-linux-gnueabi-base:amd64. Preparing to unpack .../049-gcc-15-arm-linux-gnueabi-base_15.2.0-4cross1_amd64.deb ... Unpacking gcc-15-arm-linux-gnueabi-base:amd64 (15.2.0-4cross1) ... Selecting previously unselected package cpp-15-arm-linux-gnueabi. Preparing to unpack .../050-cpp-15-arm-linux-gnueabi_15.2.0-4cross1_amd64.deb ... Unpacking cpp-15-arm-linux-gnueabi (15.2.0-4cross1) ... Selecting previously unselected package cpp-arm-linux-gnueabi. Preparing to unpack .../051-cpp-arm-linux-gnueabi_4%3a15.2.0-4_amd64.deb ... Unpacking cpp-arm-linux-gnueabi (4:15.2.0-4) ... Selecting previously unselected package gcc-15-cross-base-ports. Preparing to unpack .../052-gcc-15-cross-base-ports_15.2.0-4cross1_all.deb ... Unpacking gcc-15-cross-base-ports (15.2.0-4cross1) ... Selecting previously unselected package libc6-armel-cross. Preparing to unpack .../053-libc6-armel-cross_2.41-11cross1_all.deb ... Unpacking libc6-armel-cross (2.41-11cross1) ... Selecting previously unselected package libgcc-s1-armel-cross. Preparing to unpack .../054-libgcc-s1-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libgcc-s1-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package libgomp1-armel-cross. Preparing to unpack .../055-libgomp1-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libgomp1-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package libatomic1-armel-cross. Preparing to unpack .../056-libatomic1-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libatomic1-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package libasan8-armel-cross. Preparing to unpack .../057-libasan8-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libasan8-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package libstdc++6-armel-cross. Preparing to unpack .../058-libstdc++6-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libstdc++6-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package libubsan1-armel-cross. Preparing to unpack .../059-libubsan1-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libubsan1-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package libgcc-15-dev-armel-cross. Preparing to unpack .../060-libgcc-15-dev-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libgcc-15-dev-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package gcc-15-arm-linux-gnueabi. Preparing to unpack .../061-gcc-15-arm-linux-gnueabi_15.2.0-4cross1_amd64.deb ... Unpacking gcc-15-arm-linux-gnueabi (15.2.0-4cross1) ... Selecting previously unselected package gcc-arm-linux-gnueabi. Preparing to unpack .../062-gcc-arm-linux-gnueabi_4%3a15.2.0-4_amd64.deb ... Unpacking gcc-arm-linux-gnueabi (4:15.2.0-4) ... Selecting previously unselected package linux-libc-dev-armel-cross. Preparing to unpack .../063-linux-libc-dev-armel-cross_6.12.38-1cross1_all.deb ... Unpacking linux-libc-dev-armel-cross (6.12.38-1cross1) ... Selecting previously unselected package libc6-dev-armel-cross. Preparing to unpack .../064-libc6-dev-armel-cross_2.41-11cross1_all.deb ... Unpacking libc6-dev-armel-cross (2.41-11cross1) ... Selecting previously unselected package libstdc++-15-dev-armel-cross. Preparing to unpack .../065-libstdc++-15-dev-armel-cross_15.2.0-4cross1_all.deb ... Unpacking libstdc++-15-dev-armel-cross (15.2.0-4cross1) ... Selecting previously unselected package g++-15-arm-linux-gnueabi. Preparing to unpack .../066-g++-15-arm-linux-gnueabi_15.2.0-4cross1_amd64.deb ... Unpacking g++-15-arm-linux-gnueabi (15.2.0-4cross1) ... Selecting previously unselected package g++-arm-linux-gnueabi. Preparing to unpack .../067-g++-arm-linux-gnueabi_4%3a15.2.0-4_amd64.deb ... Unpacking g++-arm-linux-gnueabi (4:15.2.0-4) ... Selecting previously unselected package crossbuild-essential-armel. Preparing to unpack .../068-crossbuild-essential-armel_12.12_all.deb ... Unpacking crossbuild-essential-armel (12.12) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../069-libdebhelper-perl_13.27_all.deb ... Unpacking libdebhelper-perl (13.27) ... Selecting previously unselected package libtool. Preparing to unpack .../070-libtool_2.5.4-5_all.deb ... Unpacking libtool (2.5.4-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../071-dh-autoreconf_21_all.deb ... Unpacking dh-autoreconf (21) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../072-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../073-libfile-stripnondeterminism-perl_1.15.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.15.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../074-dh-strip-nondeterminism_1.15.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.15.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../075-libelf1t64_0.193-3_amd64.deb ... Unpacking libelf1t64:amd64 (0.193-3) ... Selecting previously unselected package dwz. Preparing to unpack .../076-dwz_0.16-2_amd64.deb ... Unpacking dwz (0.16-2) ... Selecting previously unselected package gettext. Preparing to unpack .../077-gettext_0.23.1-2+b1_amd64.deb ... Unpacking gettext (0.23.1-2+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../078-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../079-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../080-debhelper_13.27_all.deb ... Unpacking debhelper (13.27) ... Selecting previously unselected package libfakeroot:amd64. Preparing to unpack .../081-libfakeroot_1.37.1.2-1_amd64.deb ... Unpacking libfakeroot:amd64 (1.37.1.2-1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../082-fakeroot_1.37.1.2-1_amd64.deb ... Unpacking fakeroot (1.37.1.2-1) ... Selecting previously unselected package gcc-15-base:armel. Preparing to unpack .../083-gcc-15-base_15.2.0-4_armel.deb ... Unpacking gcc-15-base:armel (15.2.0-4) ... Selecting previously unselected package libgcc-s1:armel. Preparing to unpack .../084-libgcc-s1_15.2.0-4_armel.deb ... Unpacking libgcc-s1:armel (15.2.0-4) ... Selecting previously unselected package libc6:armel. Preparing to unpack .../085-libc6_2.41-12_armel.deb ... Unpacking libc6:armel (2.41-12) ... Selecting previously unselected package libasan8:armel. Preparing to unpack .../086-libasan8_15.2.0-4_armel.deb ... Unpacking libasan8:armel (15.2.0-4) ... Selecting previously unselected package libatomic1:armel. Preparing to unpack .../087-libatomic1_15.2.0-4_armel.deb ... Unpacking libatomic1:armel (15.2.0-4) ... Selecting previously unselected package libcrypt1:armel. Preparing to unpack .../088-libcrypt1_1%3a4.4.38-1_armel.deb ... Unpacking libcrypt1:armel (1:4.4.38-1) ... Selecting previously unselected package libcrypt-dev:armel. Preparing to unpack .../089-libcrypt-dev_1%3a4.4.38-1_armel.deb ... Unpacking libcrypt-dev:armel (1:4.4.38-1) ... Selecting previously unselected package libc6-dev:armel. Preparing to unpack .../090-libc6-dev_2.41-12_armel.deb ... Unpacking libc6-dev:armel (2.41-12) ... Selecting previously unselected package libgomp1:armel. Preparing to unpack .../091-libgomp1_15.2.0-4_armel.deb ... Unpacking libgomp1:armel (15.2.0-4) ... Selecting previously unselected package libstdc++6:armel. Preparing to unpack .../092-libstdc++6_15.2.0-4_armel.deb ... Unpacking libstdc++6:armel (15.2.0-4) ... Selecting previously unselected package libubsan1:armel. Preparing to unpack .../093-libubsan1_15.2.0-4_armel.deb ... Unpacking libubsan1:armel (15.2.0-4) ... Selecting previously unselected package libgcc-15-dev:armel. Preparing to unpack .../094-libgcc-15-dev_15.2.0-4_armel.deb ... Unpacking libgcc-15-dev:armel (15.2.0-4) ... Selecting previously unselected package libzstd1:armel. Preparing to unpack .../095-libzstd1_1.5.7+dfsg-1.1_armel.deb ... Unpacking libzstd1:armel (1.5.7+dfsg-1.1) ... Selecting previously unselected package zlib1g:armel. Preparing to unpack .../096-zlib1g_1%3a1.3.dfsg+really1.3.1-1+b1_armel.deb ... Unpacking zlib1g:armel (1:1.3.dfsg+really1.3.1-1+b1) ... Selecting previously unselected package libssl3t64:armel. Preparing to unpack .../097-libssl3t64_3.5.3-1_armel.deb ... Unpacking libssl3t64:armel (3.5.3-1) ... Selecting previously unselected package libssl-dev:armel. Preparing to unpack .../098-libssl-dev_3.5.3-1_armel.deb ... Unpacking libssl-dev:armel (3.5.3-1) ... Selecting previously unselected package libstdc++-15-dev:armel. Preparing to unpack .../099-libstdc++-15-dev_15.2.0-4_armel.deb ... Unpacking libstdc++-15-dev:armel (15.2.0-4) ... Selecting previously unselected package sbuild-build-depends-main-dummy:armel. Preparing to unpack .../100-sbuild-build-depends-main-dummy_0.invalid.0_armel.deb ... Unpacking sbuild-build-depends-main-dummy:armel (0.invalid.0) ... Setting up libexpat1:amd64 (2.7.2-1) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libkeyutils1:amd64 (1.6.3-6) ... Setting up binutils-arm-linux-gnueabi (2.45-7) ... Setting up bsdextrautils (2.41.1-3) ... Setting up libmagic-mgc (1:5.46-5) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libxml2-16:amd64 (2.14.5+dfsg-0.2) ... Setting up libdebhelper-perl (13.27) ... Setting up libbrotli1:amd64 (1.1.0-2+b7) ... Setting up gcc-15-cross-base-ports (15.2.0-4cross1) ... Setting up libuv1t64:amd64 (1.51.0-2) ... Setting up libmagic1t64:amd64 (1:5.46-5) ... Setting up libnghttp2-14:amd64 (1.64.0-1.1+b1) ... Setting up gettext-base (0.23.1-2+b1) ... Setting up m4 (1.4.20-1) ... Setting up libcom-err2:amd64 (1.47.2-3+b3) ... Setting up file (1:5.46-5) ... Setting up libfakeroot:amd64 (1.37.1.2-1) ... Setting up libelf1t64:amd64 (0.193-3) ... Setting up libkrb5support0:amd64 (1.21.3-5) ... Setting up linux-libc-dev-armel-cross (6.12.38-1cross1) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-9) ... Setting up fakeroot (1.37.1.2-1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Setting up autotools-dev (20240727.1) ... Setting up libjsoncpp26:amd64 (1.9.6-4) ... Setting up libproc2-0:amd64 (2:4.0.4-9) ... Setting up libunistring5:amd64 (1.3-2) ... Setting up autopoint (0.23.1-2) ... Setting up gcc-15-arm-linux-gnueabi-base:amd64 (15.2.0-4cross1) ... Setting up libncursesw6:amd64 (6.5+20250216-2) ... Setting up libk5crypto3:amd64 (1.21.3-5) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-9) ... Setting up autoconf (2.72-3.1) ... Setting up libnghttp3-9:amd64 (1.11.0-1) ... Setting up libc6-armel-cross (2.41-11cross1) ... Setting up libffi8:amd64 (3.5.2-2) ... Setting up dwz (0.16-2) ... Setting up sensible-utils (0.0.26) ... Setting up libuchardet0:amd64 (0.0.8-2) ... Setting up procps (2:4.0.4-9) ... Setting up libtasn1-6:amd64 (4.20.0-2) ... Setting up cmake-data (4.1.1+really3.31.6-2) ... Setting up librhash1:amd64 (1.4.6-1) ... Setting up libkrb5-3:amd64 (1.21.3-5) ... Setting up libssh2-1t64:amd64 (1.11.1-1) ... Setting up libc6-dev-armel-cross (2.41-11cross1) ... Setting up gcc-15-base:armel (15.2.0-4) ... Setting up cpp-15-arm-linux-gnueabi (15.2.0-4cross1) ... Setting up libarchive13t64:amd64 (3.7.4-4+b1) ... Setting up libldap2:amd64 (2.6.10+dfsg-1) ... Setting up automake (1:1.17-4) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.15.0-1) ... Setting up gettext (0.23.1-2+b1) ... Setting up libgomp1-armel-cross (15.2.0-4cross1) ... Setting up libtool (2.5.4-5) ... Setting up libgcc-s1-armel-cross (15.2.0-4cross1) ... Setting up libidn2-0:amd64 (2.3.8-4) ... Setting up libstdc++6-armel-cross (15.2.0-4cross1) ... Setting up libatomic1-armel-cross (15.2.0-4cross1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (21) ... Setting up cpp-arm-linux-gnueabi (4:15.2.0-4) ... Setting up libubsan1-armel-cross (15.2.0-4cross1) ... Setting up libp11-kit0:amd64 (0.25.9-2) ... Setting up libgssapi-krb5-2:amd64 (1.21.3-5) ... Setting up dh-strip-nondeterminism (1.15.0-1) ... Setting up groff-base (1.23.0-9) ... Setting up libgnutls30t64:amd64 (3.8.10-2) ... Setting up libasan8-armel-cross (15.2.0-4cross1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpsl5t64:amd64 (0.21.2-1.1+b1) ... Setting up man-db (2.13.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-3) ... Setting up libgcc-15-dev-armel-cross (15.2.0-4cross1) ... Setting up gcc-15-arm-linux-gnueabi (15.2.0-4cross1) ... Setting up libcurl4t64:amd64 (8.16.0-1) ... Setting up debhelper (13.27) ... Setting up libstdc++-15-dev-armel-cross (15.2.0-4cross1) ... Setting up gcc-arm-linux-gnueabi (4:15.2.0-4) ... Setting up cmake (4.1.1+really3.31.6-2) ... Setting up g++-15-arm-linux-gnueabi (15.2.0-4cross1) ... Setting up g++-arm-linux-gnueabi (4:15.2.0-4) ... Setting up crossbuild-essential-armel (12.12) ... Setting up libgcc-s1:armel (15.2.0-4) ... Setting up libc6:armel (2.41-12) ... Setting up libasan8:armel (15.2.0-4) ... Setting up libstdc++6:armel (15.2.0-4) ... Setting up libzstd1:armel (1.5.7+dfsg-1.1) ... Setting up zlib1g:armel (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up libcrypt1:armel (1:4.4.38-1) ... Setting up libgomp1:armel (15.2.0-4) ... Setting up libatomic1:armel (15.2.0-4) ... Setting up libubsan1:armel (15.2.0-4) ... Setting up libcrypt-dev:armel (1:4.4.38-1) ... Setting up libc6-dev:armel (2.41-12) ... Setting up libgcc-15-dev:armel (15.2.0-4) ... Setting up libssl3t64:armel (3.5.3-1) ... Setting up libstdc++-15-dev:armel (15.2.0-4) ... Setting up libssl-dev:armel (3.5.3-1) ... Setting up sbuild-build-depends-main-dummy:armel (0.invalid.0) ... Processing triggers for libc-bin (2.41-12) ... +------------------------------------------------------------------------------+ | Check architectures | +------------------------------------------------------------------------------+ Arch check ok (armel included in any) +------------------------------------------------------------------------------+ | Build environment | +------------------------------------------------------------------------------+ Kernel: Linux 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) amd64 (x86_64) Toolchain package versions: binutils_2.45-7 dpkg-dev_1.22.21 g++-15_15.2.0-4 gcc-15_15.2.0-4 libc6-dev_2.41-12 libstdc++-15-dev_15.2.0-4 libstdc++-15-dev-armel-cross_15.2.0-4cross1 libstdc++6_15.2.0-4 libstdc++6-armel-cross_15.2.0-4cross1 linux-libc-dev_6.16.8-1 Package versions: apt_3.1.5 apt-utils_3.1.5 autoconf_2.72-3.1 automake_1:1.17-4 autopoint_0.23.1-2 autotools-dev_20240727.1 base-files_14 base-passwd_3.6.7 bash_5.3-1 binutils_2.45-7 binutils-arm-linux-gnueabi_2.45-7 binutils-common_2.45-7 binutils-x86-64-linux-gnu_2.45-7 bsdextrautils_2.41.1-3 bsdutils_1:2.41.1-3 build-essential_12.12 bzip2_1.0.8-6 cmake_4.1.1+really3.31.6-2 cmake-data_4.1.1+really3.31.6-2 coreutils_9.7-3 cpp_4:15.2.0-4 cpp-15_15.2.0-4 cpp-15-arm-linux-gnueabi_15.2.0-4cross1 cpp-15-x86-64-linux-gnu_15.2.0-4 cpp-arm-linux-gnueabi_4:15.2.0-4 cpp-x86-64-linux-gnu_4:15.2.0-4 crossbuild-essential-armel_12.12 dash_0.5.12-12 debconf_1.5.91 debhelper_13.27 debian-archive-keyring_2025.1 debianutils_5.23.2 dh-autoreconf_21 dh-strip-nondeterminism_1.15.0-1 diffutils_1:3.10-4 dpkg_1.22.21 dpkg-dev_1.22.21 dwz_0.16-2 fakeroot_1.37.1.2-1 file_1:5.46-5 findutils_4.10.0-3 g++_4:15.2.0-4 g++-15_15.2.0-4 g++-15-arm-linux-gnueabi_15.2.0-4cross1 g++-15-x86-64-linux-gnu_15.2.0-4 g++-arm-linux-gnueabi_4:15.2.0-4 g++-x86-64-linux-gnu_4:15.2.0-4 gcc_4:15.2.0-4 gcc-15_15.2.0-4 gcc-15-arm-linux-gnueabi_15.2.0-4cross1 gcc-15-arm-linux-gnueabi-base_15.2.0-4cross1 gcc-15-base_15.2.0-4 gcc-15-cross-base-ports_15.2.0-4cross1 gcc-15-x86-64-linux-gnu_15.2.0-4 gcc-arm-linux-gnueabi_4:15.2.0-4 gcc-x86-64-linux-gnu_4:15.2.0-4 gettext_0.23.1-2+b1 gettext-base_0.23.1-2+b1 grep_3.11-4 groff-base_1.23.0-9 gzip_1.13-1 hostname_3.25 init-system-helpers_1.69 intltool-debian_0.35.0+20060710.6 libacl1_2.3.2-2+b1 libapt-pkg7.0_3.1.5 libarchive-zip-perl_1.68-1 libarchive13t64_3.7.4-4+b1 libasan8_15.2.0-4 libasan8-armel-cross_15.2.0-4cross1 libatomic1_15.2.0-4 libatomic1-armel-cross_15.2.0-4cross1 libattr1_1:2.5.2-3 libaudit-common_1:4.1.2-1 libaudit1_1:4.1.2-1 libbinutils_2.45-7 libblkid1_2.41.1-3 libbrotli1_1.1.0-2+b7 libbsd0_0.12.2-2 libbz2-1.0_1.0.8-6 libc-bin_2.41-12 libc-dev-bin_2.41-12 libc6_2.41-12 libc6-armel-cross_2.41-11cross1 libc6-dev_2.41-12 libc6-dev-armel-cross_2.41-11cross1 libcap-ng0_0.8.5-4+b1 libcap2_1:2.75-10+b1 libcc1-0_15.2.0-4 libcom-err2_1.47.2-3+b3 libcrypt-dev_1:4.4.38-1 libcrypt1_1:4.4.38-1 libctf-nobfd0_2.45-7 libctf0_2.45-7 libcurl4t64_8.16.0-1 libdb5.3t64_5.3.28+dfsg2-9 libdebconfclient0_0.280 libdebhelper-perl_13.27 libdpkg-perl_1.22.21 libelf1t64_0.193-3 libexpat1_2.7.2-1 libfakeroot_1.37.1.2-1 libffi8_3.5.2-2 libfile-stripnondeterminism-perl_1.15.0-1 libgcc-15-dev_15.2.0-4 libgcc-15-dev-armel-cross_15.2.0-4cross1 libgcc-s1_15.2.0-4 libgcc-s1-armel-cross_15.2.0-4cross1 libgdbm-compat4t64_1.26-1 libgdbm6t64_1.26-1 libgmp10_2:6.3.0+dfsg-5 libgnutls30t64_3.8.10-2 libgomp1_15.2.0-4 libgomp1-armel-cross_15.2.0-4cross1 libgprofng0_2.45-7 libgssapi-krb5-2_1.21.3-5 libhogweed6t64_3.10.2-1 libhwasan0_15.2.0-4 libidn2-0_2.3.8-4 libisl23_0.27-1 libitm1_15.2.0-4 libjansson4_2.14-2+b3 libjsoncpp26_1.9.6-4 libk5crypto3_1.21.3-5 libkeyutils1_1.6.3-6 libkrb5-3_1.21.3-5 libkrb5support0_1.21.3-5 liblastlog2-2_2.41.1-3 libldap2_2.6.10+dfsg-1 liblsan0_15.2.0-4 liblz4-1_1.10.0-4 liblzma5_5.8.1-1.1 libmagic-mgc_1:5.46-5 libmagic1t64_1:5.46-5 libmd0_1.1.0-2+b1 libmount1_2.41.1-3 libmpc3_1.3.1-2 libmpfr6_4.2.2-2 libncursesw6_6.5+20250216-2 libnettle8t64_3.10.2-1 libnghttp2-14_1.64.0-1.1+b1 libnghttp3-9_1.11.0-1 libp11-kit0_0.25.9-2 libpam-modules_1.7.0-5 libpam-modules-bin_1.7.0-5 libpam-runtime_1.7.0-5 libpam0g_1.7.0-5 libpcre2-8-0_10.46-1 libperl5.40_5.40.1-6 libpipeline1_1.5.8-1 libproc2-0_2:4.0.4-9 libpsl5t64_0.21.2-1.1+b1 libquadmath0_15.2.0-4 librhash1_1.4.6-1 librtmp1_2.4+20151223.gitfa8646d.1-3 libsasl2-2_2.1.28+dfsg1-9 libsasl2-modules-db_2.1.28+dfsg1-9 libseccomp2_2.6.0-2 libselinux1_3.8.1-1 libsemanage-common_3.8.1-1 libsemanage2_3.8.1-1 libsepol2_3.8.1-1 libsframe2_2.45-7 libsmartcols1_2.41.1-3 libsqlite3-0_3.46.1-8 libssh2-1t64_1.11.1-1 libssl-dev_3.5.3-1 libssl3t64_3.5.3-1 libstdc++-15-dev_15.2.0-4 libstdc++-15-dev-armel-cross_15.2.0-4cross1 libstdc++6_15.2.0-4 libstdc++6-armel-cross_15.2.0-4cross1 libsystemd0_258-1 libtasn1-6_4.20.0-2 libtinfo6_6.5+20250216-2 libtool_2.5.4-5 libtsan2_15.2.0-4 libubsan1_15.2.0-4 libubsan1-armel-cross_15.2.0-4cross1 libuchardet0_0.0.8-2 libudev1_258-1 libunistring5_1.3-2 libuuid1_2.41.1-3 libuv1t64_1.51.0-2 libxml2-16_2.14.5+dfsg-0.2 libxxhash0_0.8.3-2 libzstd1_1.5.7+dfsg-1.1 linux-libc-dev_6.16.8-1 linux-libc-dev-armel-cross_6.12.38-1cross1 login_1:4.16.0-2+really2.41.1-3 login.defs_1:4.18.0-1 m4_1.4.20-1 make_4.4.1-2 man-db_2.13.1-1 mawk_1.3.4.20250131-1 mount_2.41.1-3 ncurses-base_6.5+20250216-2 ncurses-bin_6.5+20250216-2 openssl-provider-legacy_3.5.3-1 passwd_1:4.18.0-1 patch_2.8-2 perl_5.40.1-6 perl-base_5.40.1-6 perl-modules-5.40_5.40.1-6 po-debconf_1.0.21+nmu1 procps_2:4.0.4-9 rpcsvc-proto_1.4.3-1 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-2 sensible-utils_0.0.26 sqv_1.3.0-3 sysvinit-utils_3.14-4 tar_1.35+dfsg-3.1 tzdata_2025b-5 util-linux_2.41.1-3 xz-utils_5.8.1-1.1 zlib1g_1:1.3.dfsg+really1.3.1-1+b1 +------------------------------------------------------------------------------+ | Build | +------------------------------------------------------------------------------+ Unpack source ------------- -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: workflow Binary: libworkflow0t64, libworkflow-dev Architecture: any Version: 0.11.11-1 Maintainer: Lance Lin Homepage: https://github.com/sogou/workflow Standards-Version: 4.7.2 Vcs-Browser: https://salsa.debian.org/debian/workflow Vcs-Git: https://salsa.debian.org/debian/workflow.git Testsuite: autopkgtest Testsuite-Triggers: @builddeps@ Build-Depends: dpkg-dev (>= 1.22.5), debhelper-compat (= 13), cmake, libgtest-dev , libssl-dev Package-List: libworkflow-dev deb libdevel optional arch=any libworkflow0t64 deb libs optional arch=any Checksums-Sha1: 996b5f84fb0c566d228fc8a63720fae7288911fd 440914 workflow_0.11.11.orig.tar.gz e1bab7f1b03f0cba659738054967c450adde3e75 6280 workflow_0.11.11-1.debian.tar.xz Checksums-Sha256: 5b526cdd6c2c38c89b1966afca481b54b1342ac1f53b150f2ca0353659ac7efa 440914 workflow_0.11.11.orig.tar.gz 07b9bdc3fe17a76a20a64a16c6e5000f578620dba2581665d3f18431766b51d8 6280 workflow_0.11.11-1.debian.tar.xz Files: ab98ae588a0819df30cfa620a6c5f998 440914 workflow_0.11.11.orig.tar.gz e3da25b1a6fe5203bc3373112bae8a73 6280 workflow_0.11.11-1.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEESjHbWh7kCWyHOZiAkDZJKUwz+bcFAmjRYCMACgkQkDZJKUwz +bfRvg//U3eiDNa/AJrJs8yDvBXwvIW9HwOnhRSoXFCOs7rRrjS8KJdR1m85CL0E fjbMTlQX4n/Cx0fa0ypXjRQTztflTZc/1QXP/1TLTUoHMcTz3nJUFNrtRfVgO2vP 4oJ1HEQN75ihQVRokoma52GsEB9HjiZJj37iwQNJfnTFn9BSM6gezNDYtYAnL9Rs wTP5aIcZYY03o1meH6WjmzDaW5L+zCDY85TelIR2rRVs2j8cKbBmK6TyoiEKBdvL bVMe7gE5isX6hHf5E0UYohjgu607uYAiK9RdYNuADe2nuccuWir3kyyCeNXMvO1r pCgkpMfjB8FSFAlV7plSamsIX1tHcgZrONgxCJg5eaJWqdomEWw0oYaBlR5NQFsA 5BtNX4p4sPW+DxiKPLz2qDY0ChIyNRV7bLaWHlmyJwYI5SQM8tFDfyjZICWGQfQb ZSELM8IcyCJ6q1gQRw9dC4aNabfFYm6iefsAVPFNcgkATamRmxyV0oLxV0GYAj8k HIcHrQ6haWONAxF8S81OEv3oFf+1ypczDDLOaomTJI2L7cK2xFySpiJCBKWZme8D 4g9jk3QMATb33yfsetADYBfX2MIqPD7BLQR+Tpix9xoRxCu8FDkrYb1nwLmnF1fL J5mB+9ZCnzc3KQTeNqrSMowdmhnlX1QJ5Yv41TMWhlAJxggziV8= =C+LM -----END PGP SIGNATURE----- dpkg-source: warning: cannot verify inline signature for ./workflow_0.11.11-1.dsc: no acceptable signature found dpkg-source: info: extracting workflow in /<> dpkg-source: info: unpacking workflow_0.11.11.orig.tar.gz dpkg-source: info: unpacking workflow_0.11.11-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying fix_ftbfs_with_gtest.patch dpkg-source: info: applying remove-online-tests.patch dpkg-source: info: applying adjust-server-name.patch dpkg-source: info: applying add_hardening_flag_for_tests.patch Check disk space ---------------- Sufficient free space for build User Environment ---------------- APT_CONFIG=/var/lib/sbuild/apt.conf CONFIG_SITE=/etc/dpkg-cross/cross-config.armel DEB_BUILD_OPTIONS=nocheck HOME=/sbuild-nonexistent LANG=en_US.UTF-8 LC_ALL=C.UTF-8 LOGNAME=crossqa OLDPWD=/home/crossqa PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games SBUILD_CONFIG=/tmp/tmp.YO4qwVFU8o/sbuild.conf SCHROOT_ALIAS_NAME=unstable-amd64-sbuild SCHROOT_CHROOT_NAME=sid-amd64-sbuild SCHROOT_COMMAND=env SCHROOT_GID=1000 SCHROOT_GROUP=crossqa SCHROOT_SESSION_ID=sid-amd64-sbuild-b51db958-d528-47b3-a941-11d845218989 SCHROOT_UID=1000 SCHROOT_USER=crossqa SHELL=/bin/sh USER=crossqa XDG_SESSION_CLASS=user dpkg-buildpackage ----------------- Command: dpkg-buildpackage --sanitize-env -aarmel -Pcross,nocheck -us -uc -B -rfakeroot --jobs-try=1 dpkg-buildpackage: info: source package workflow dpkg-buildpackage: info: source version 0.11.11-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Lance Lin dpkg-architecture: warning: specified GNU system type arm-linux-gnueabi does not match CC system type x86_64-linux-gnu, try setting a correct CC environment variable dpkg-source --before-build . dpkg-buildpackage: info: host architecture armel debian/rules clean dh clean --buildsystem=cmake dh_auto_clean -O--buildsystem=cmake dh_autoreconf_clean -O--buildsystem=cmake dh_clean -O--buildsystem=cmake debian/rules binary-arch dh binary-arch --buildsystem=cmake dh_update_autotools_config -a -O--buildsystem=cmake dh_autoreconf -a -O--buildsystem=cmake dh_auto_configure -a -O--buildsystem=cmake cd obj-arm-linux-gnueabi && DEB_PYTHON_INSTALL_LAYOUT=deb PKG_CONFIG=/usr/bin/arm-linux-gnueabi-pkg-config cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DFETCHCONTENT_FULLY_DISCONNECTED=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=armv7l -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g\+\+ -DPKG_CONFIG_EXECUTABLE=/usr/bin/arm-linux-gnueabi-pkg-config -DPKGCONFIG_EXECUTABLE=/usr/bin/arm-linux-gnueabi-pkg-config -DQMAKE_EXECUTABLE=/usr/bin/arm-linux-gnueabi-qmake -DCMAKE_INSTALL_LIBDIR=lib/arm-linux-gnueabi -DBUILD_TESTING:BOOL=OFF .. -- The C compiler identification is GNU 15.2.0 -- The CXX compiler identification is GNU 15.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/arm-linux-gnueabi-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/arm-linux-gnueabi-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done CMAKE_C_FLAGS_DEBUG is -g CMAKE_C_FLAGS_RELEASE is -O3 -DNDEBUG CMAKE_C_FLAGS_RELWITHDEBINFO is -O2 -g -DNDEBUG CMAKE_C_FLAGS_MINSIZEREL is -Os -DNDEBUG CMAKE_CXX_FLAGS_DEBUG is -g CMAKE_CXX_FLAGS_RELEASE is -O3 -DNDEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO is -O2 -g -DNDEBUG CMAKE_CXX_FLAGS_MINSIZEREL is -Os -DNDEBUG -- Found OpenSSL: /usr/lib/arm-linux-gnueabi/libcrypto.so (found version "3.5.3") -- Configuring done (0.4s) -- Generating done (0.0s) CMake Warning: Manually-specified variables were not used by the project: BUILD_TESTING CMAKE_EXPORT_NO_PACKAGE_REGISTRY CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY FETCHCONTENT_FULLY_DISCONNECTED PKGCONFIG_EXECUTABLE QMAKE_EXECUTABLE -- Build files have been written to: /<>/obj-arm-linux-gnueabi dh_auto_build -a -O--buildsystem=cmake cd obj-arm-linux-gnueabi && make -j1 INSTALL="install --strip-program=true" VERBOSE=1 make[1]: Entering directory '/<>/obj-arm-linux-gnueabi' /usr/bin/cmake -S/<> -B/<>/obj-arm-linux-gnueabi --check-build-system CMakeFiles/Makefile.cmake 0 /usr/bin/cmake -E cmake_progress_start /<>/obj-arm-linux-gnueabi/CMakeFiles /<>/obj-arm-linux-gnueabi//CMakeFiles/progress.marks make -f CMakeFiles/Makefile2 all make[2]: Entering directory '/<>/obj-arm-linux-gnueabi' make -f CMakeFiles/LINK_HEADERS.dir/build.make CMakeFiles/LINK_HEADERS.dir/depend make[3]: Entering directory '/<>/obj-arm-linux-gnueabi' cd /<>/obj-arm-linux-gnueabi && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /<> /<> /<>/obj-arm-linux-gnueabi /<>/obj-arm-linux-gnueabi /<>/obj-arm-linux-gnueabi/CMakeFiles/LINK_HEADERS.dir/DependInfo.cmake "--color=" make[3]: Leaving directory '/<>/obj-arm-linux-gnueabi' make -f CMakeFiles/LINK_HEADERS.dir/build.make CMakeFiles/LINK_HEADERS.dir/build make[3]: Entering directory '/<>/obj-arm-linux-gnueabi' /usr/bin/cmake -E make_directory /<>/_include/workflow /usr/bin/cmake -E copy_if_different /<>/src/protocol/ProtocolMessage.h /<>/_include/workflow/ProtocolMessage.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/http_parser.h /<>/_include/workflow/http_parser.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/HttpMessage.h /<>/_include/workflow/HttpMessage.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/HttpUtil.h /<>/_include/workflow/HttpUtil.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/redis_parser.h /<>/_include/workflow/redis_parser.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/RedisMessage.h /<>/_include/workflow/RedisMessage.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/mysql_stream.h /<>/_include/workflow/mysql_stream.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/MySQLMessage.h /<>/_include/workflow/MySQLMessage.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/MySQLMessage.inl /<>/_include/workflow/MySQLMessage.inl /usr/bin/cmake -E copy_if_different /<>/src/protocol/MySQLResult.h /<>/_include/workflow/MySQLResult.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/MySQLResult.inl /<>/_include/workflow/MySQLResult.inl /usr/bin/cmake -E copy_if_different /<>/src/protocol/MySQLUtil.h /<>/_include/workflow/MySQLUtil.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/mysql_parser.h /<>/_include/workflow/mysql_parser.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/mysql_types.h /<>/_include/workflow/mysql_types.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/mysql_byteorder.h /<>/_include/workflow/mysql_byteorder.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/PackageWrapper.h /<>/_include/workflow/PackageWrapper.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/SSLWrapper.h /<>/_include/workflow/SSLWrapper.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/dns_types.h /<>/_include/workflow/dns_types.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/dns_parser.h /<>/_include/workflow/dns_parser.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/DnsMessage.h /<>/_include/workflow/DnsMessage.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/DnsUtil.h /<>/_include/workflow/DnsUtil.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/TLVMessage.h /<>/_include/workflow/TLVMessage.h /usr/bin/cmake -E copy_if_different /<>/src/protocol/ConsulDataTypes.h /<>/_include/workflow/ConsulDataTypes.h /usr/bin/cmake -E copy_if_different /<>/src/server/WFServer.h /<>/_include/workflow/WFServer.h /usr/bin/cmake -E copy_if_different /<>/src/server/WFDnsServer.h /<>/_include/workflow/WFDnsServer.h /usr/bin/cmake -E copy_if_different /<>/src/server/WFHttpServer.h /<>/_include/workflow/WFHttpServer.h /usr/bin/cmake -E copy_if_different /<>/src/server/WFRedisServer.h /<>/_include/workflow/WFRedisServer.h /usr/bin/cmake -E copy_if_different /<>/src/server/WFMySQLServer.h /<>/_include/workflow/WFMySQLServer.h /usr/bin/cmake -E copy_if_different /<>/src/client/WFHttpChunkedClient.h /<>/_include/workflow/WFHttpChunkedClient.h /usr/bin/cmake -E copy_if_different /<>/src/client/WFMySQLConnection.h /<>/_include/workflow/WFMySQLConnection.h /usr/bin/cmake -E copy_if_different /<>/src/client/WFRedisSubscriber.h /<>/_include/workflow/WFRedisSubscriber.h /usr/bin/cmake -E copy_if_different /<>/src/client/WFConsulClient.h /<>/_include/workflow/WFConsulClient.h /usr/bin/cmake -E copy_if_different /<>/src/client/WFDnsClient.h /<>/_include/workflow/WFDnsClient.h /usr/bin/cmake -E copy_if_different /<>/src/manager/DnsCache.h /<>/_include/workflow/DnsCache.h /usr/bin/cmake -E copy_if_different /<>/src/manager/WFGlobal.h /<>/_include/workflow/WFGlobal.h /usr/bin/cmake -E copy_if_different /<>/src/manager/UpstreamManager.h /<>/_include/workflow/UpstreamManager.h /usr/bin/cmake -E copy_if_different /<>/src/manager/RouteManager.h /<>/_include/workflow/RouteManager.h /usr/bin/cmake -E copy_if_different /<>/src/manager/EndpointParams.h /<>/_include/workflow/EndpointParams.h /usr/bin/cmake -E copy_if_different /<>/src/manager/WFFuture.h /<>/_include/workflow/WFFuture.h /usr/bin/cmake -E copy_if_different /<>/src/manager/WFFacilities.h /<>/_include/workflow/WFFacilities.h /usr/bin/cmake -E copy_if_different /<>/src/manager/WFFacilities.inl /<>/_include/workflow/WFFacilities.inl /usr/bin/cmake -E copy_if_different /<>/src/util/json_parser.h /<>/_include/workflow/json_parser.h /usr/bin/cmake -E copy_if_different /<>/src/util/EncodeStream.h /<>/_include/workflow/EncodeStream.h /usr/bin/cmake -E copy_if_different /<>/src/util/LRUCache.h /<>/_include/workflow/LRUCache.h /usr/bin/cmake -E copy_if_different /<>/src/util/StringUtil.h /<>/_include/workflow/StringUtil.h /usr/bin/cmake -E copy_if_different /<>/src/util/URIParser.h /<>/_include/workflow/URIParser.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFConnection.h /<>/_include/workflow/WFConnection.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFTask.h /<>/_include/workflow/WFTask.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFTask.inl /<>/_include/workflow/WFTask.inl /usr/bin/cmake -E copy_if_different /<>/src/factory/WFGraphTask.h /<>/_include/workflow/WFGraphTask.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFTaskError.h /<>/_include/workflow/WFTaskError.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFTaskFactory.h /<>/_include/workflow/WFTaskFactory.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFTaskFactory.inl /<>/_include/workflow/WFTaskFactory.inl /usr/bin/cmake -E copy_if_different /<>/src/factory/WFAlgoTaskFactory.h /<>/_include/workflow/WFAlgoTaskFactory.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFAlgoTaskFactory.inl /<>/_include/workflow/WFAlgoTaskFactory.inl /usr/bin/cmake -E copy_if_different /<>/src/factory/Workflow.h /<>/_include/workflow/Workflow.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFOperator.h /<>/_include/workflow/WFOperator.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFResourcePool.h /<>/_include/workflow/WFResourcePool.h /usr/bin/cmake -E copy_if_different /<>/src/factory/WFMessageQueue.h /<>/_include/workflow/WFMessageQueue.h /usr/bin/cmake -E copy_if_different /<>/src/factory/HttpTaskImpl.inl /<>/_include/workflow/HttpTaskImpl.inl /usr/bin/cmake -E copy_if_different /<>/src/factory/RedisTaskImpl.inl /<>/_include/workflow/RedisTaskImpl.inl /usr/bin/cmake -E copy_if_different /<>/src/nameservice/WFNameService.h /<>/_include/workflow/WFNameService.h /usr/bin/cmake -E copy_if_different /<>/src/nameservice/WFDnsResolver.h /<>/_include/workflow/WFDnsResolver.h /usr/bin/cmake -E copy_if_different /<>/src/nameservice/WFServiceGovernance.h /<>/_include/workflow/WFServiceGovernance.h /usr/bin/cmake -E copy_if_different /<>/src/nameservice/UpstreamPolicies.h /<>/_include/workflow/UpstreamPolicies.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/CommRequest.h /<>/_include/workflow/CommRequest.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/CommScheduler.h /<>/_include/workflow/CommScheduler.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/Communicator.h /<>/_include/workflow/Communicator.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/SleepRequest.h /<>/_include/workflow/SleepRequest.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/ExecRequest.h /<>/_include/workflow/ExecRequest.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/IORequest.h /<>/_include/workflow/IORequest.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/Executor.h /<>/_include/workflow/Executor.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/list.h /<>/_include/workflow/list.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/mpoller.h /<>/_include/workflow/mpoller.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/poller.h /<>/_include/workflow/poller.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/msgqueue.h /<>/_include/workflow/msgqueue.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/rbtree.h /<>/_include/workflow/rbtree.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/SubTask.h /<>/_include/workflow/SubTask.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/thrdpool.h /<>/_include/workflow/thrdpool.h /usr/bin/cmake -E copy_if_different /<>/src/kernel/IOService_linux.h /<>/_include/workflow/IOService_linux.h make[3]: Leaving directory '/<>/obj-arm-linux-gnueabi' [ 0%] Built target LINK_HEADERS make -f src/client/CMakeFiles/client.dir/build.make src/client/CMakeFiles/client.dir/depend make[3]: Entering directory '/<>/obj-arm-linux-gnueabi' cd /<>/obj-arm-linux-gnueabi && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /<> /<>/src/client /<>/obj-arm-linux-gnueabi /<>/obj-arm-linux-gnueabi/src/client /<>/obj-arm-linux-gnueabi/src/client/CMakeFiles/client.dir/DependInfo.cmake "--color=" make[3]: Leaving directory '/<>/obj-arm-linux-gnueabi' make -f src/client/CMakeFiles/client.dir/build.make src/client/CMakeFiles/client.dir/build make[3]: Entering directory '/<>/obj-arm-linux-gnueabi' [ 1%] Building CXX object src/client/CMakeFiles/client.dir/WFDnsClient.cc.o cd /<>/obj-arm-linux-gnueabi/src/client && /usr/bin/arm-linux-gnueabi-g++ -I/<>/_include/workflow -g -O2 -ffile-prefix-map=/<>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -pipe -std=c++11 -fno-exceptions -Wno-invalid-offsetof -MD -MT src/client/CMakeFiles/client.dir/WFDnsClient.cc.o -MF CMakeFiles/client.dir/WFDnsClient.cc.o.d -o CMakeFiles/client.dir/WFDnsClient.cc.o -c /<>/src/client/WFDnsClient.cc [ 3%] Building CXX object src/client/CMakeFiles/client.dir/WFHttpChunkedClient.cc.o cd /<>/obj-arm-linux-gnueabi/src/client && /usr/bin/arm-linux-gnueabi-g++ -I/<>/_include/workflow -g -O2 -ffile-prefix-map=/<>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -pipe -std=c++11 -fno-exceptions -Wno-invalid-offsetof -MD -MT src/client/CMakeFiles/client.dir/WFHttpChunkedClient.cc.o -MF CMakeFiles/client.dir/WFHttpChunkedClient.cc.o.d -o CMakeFiles/client.dir/WFHttpChunkedClient.cc.o -c /<>/src/client/WFHttpChunkedClient.cc [ 5%] Building CXX object src/client/CMakeFiles/client.dir/WFRedisSubscriber.cc.o cd /<>/obj-arm-linux-gnueabi/src/client && /usr/bin/arm-linux-gnueabi-g++ -I/<>/_include/workflow -g -O2 -ffile-prefix-map=/<>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -pipe -std=c++11 -fno-exceptions -Wno-invalid-offsetof -MD -MT src/client/CMakeFiles/client.dir/WFRedisSubscriber.cc.o -MF CMakeFiles/client.dir/WFRedisSubscriber.cc.o.d -o CMakeFiles/client.dir/WFRedisSubscriber.cc.o -c /<>/src/client/WFRedisSubscriber.cc [ 6%] Building CXX object src/client/CMakeFiles/client.dir/WFMySQLConnection.cc.o cd /<>/obj-arm-linux-gnueabi/src/client && /usr/bin/arm-linux-gnueabi-g++ -I/<>/_include/workflow -g -O2 -ffile-prefix-map=/<>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -pipe -std=c++11 -fno-exceptions -Wno-invalid-offsetof -MD -MT src/client/CMakeFiles/client.dir/WFMySQLConnection.cc.o -MF CMakeFiles/client.dir/WFMySQLConnection.cc.o.d -o CMakeFiles/client.dir/WFMySQLConnection.cc.o -c /<>/src/client/WFMySQLConnection.cc [ 8%] Building CXX object src/client/CMakeFiles/client.dir/WFConsulClient.cc.o cd /<>/obj-arm-linux-gnueabi/src/client && /usr/bin/arm-linux-gnueabi-g++ -I/<>/_include/workflow -g -O2 -ffile-prefix-map=/<>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -fPIC -pipe -std=c++11 -fno-exceptions -Wno-invalid-offsetof -MD -MT src/client/CMakeFiles/client.dir/WFConsulClient.cc.o -MF CMakeFiles/client.dir/WFConsulClient.cc.o.d -o CMakeFiles/client.dir/WFConsulClient.cc.o -c /<>/src/client/WFConsulClient.cc during RTL pass: late_combine In file included from /<>/_include/workflow/HttpMessage.h:27, from /<>/_include/workflow/HttpUtil.h:27, from /<>/src/client/WFConsulClient.cc:29: /<>/_include/workflow/ProtocolMessage.h: In member function ‘virtual int protocol::ProtocolMessage::feedback(const void*, size_t)’: /<>/_include/workflow/ProtocolMessage.h:83:9: internal compiler error: Segmentation fault 83 | } | ^ 0x1d76aff internal_error(char const*, ...) ../../src/gcc/diagnostic-global-context.cc:517 0xf0dd1f crash_signal ../../src/gcc/toplev.cc:322 0x1c9c4f8 rtl_ssa::clobber_info::recompute_group() ../../src/gcc/rtl-ssa/accesses.cc:67 0x1c55007 rtl_ssa::clobber_info::group() const ../../src/gcc/rtl-ssa/member-fns.inl:200 0x1c55007 rtl_ssa::first_clobber_in_group(rtl_ssa::clobber_info*) ../../src/gcc/rtl-ssa/access-utils.h:244 0x1c55007 rtl_ssa::first_clobber_in_group(rtl_ssa::clobber_info*) ../../src/gcc/rtl-ssa/access-utils.h:241 0x1c55007 last_access<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> ../../src/gcc/rtl-ssa/access-utils.h:460 0x1c56451 prev_access<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> ../../src/gcc/rtl-ssa/access-utils.h:491 0x1c56451 restrict_movement_for_defs<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> ../../src/gcc/rtl-ssa/movement.h:229 0x1c56451 restrict_movement<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> ../../src/gcc/rtl-ssa/change-utils.h:66 0x1c56451 substitute_nondebug_use ../../src/gcc/late-combine.cc:249 0x1c56451 substitute_nondebug_uses ../../src/gcc/late-combine.cc:271 0x1c5612c substitute_nondebug_uses ../../src/gcc/late-combine.cc:275 0x1c57574 run ../../src/gcc/late-combine.cc:440 0x1c57574 combine_into_uses ../../src/gcc/late-combine.cc:690 0x1c57da4 execute ../../src/gcc/late-combine.cc:718 0x1c57da4 execute ../../src/gcc/late-combine.cc:771 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. Preprocessed source stored into /tmp/ccnqtseM.out file, please attach this to your bugreport. === BEGIN GCC DUMP === 859623: // Target: arm-linux-gnueabi 859623: // Configured with: ../src/configure -v --with-pkgversion='Debian 15.2.0-4' --with-bugurl=file:///usr/share/doc/gcc-15/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,algol68 --prefix=/usr --with-gcc-major-version-only --program-suffix=-15 --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --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 --without-target-system-zlib --enable-multiarch --disable-sjlj-exceptions --with-arch=armv5te --with-float=soft --disable-werror --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabi --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include --with-build-config=bootstrap-lto-lean --enable-link-serialization=3 859623: // Thread model: posix 859623: // Supported LTO compression algorithms: zlib zstd 859623: // gcc version 15.2.0 (Debian 15.2.0-4) 859623: // 859623: // during RTL pass: late_combine 859623: // In file included from /<>/_include/workflow/HttpMessage.h:27, 859623: // from /<>/_include/workflow/HttpUtil.h:27, 859623: // from /<>/src/client/WFConsulClient.cc:29: 859623: // /<>/_include/workflow/ProtocolMessage.h: In member function ‘virtual int protocol::ProtocolMessage::feedback(const void*, size_t)’: 859623: // /<>/_include/workflow/ProtocolMessage.h:83:9: internal compiler error: Segmentation fault 859623: // 83 | } 859623: // | ^ 859623: // 0x1d76aff internal_error(char const*, ...) 859623: // ../../src/gcc/diagnostic-global-context.cc:517 859623: // 0xf0dd1f crash_signal 859623: // ../../src/gcc/toplev.cc:322 859623: // 0x1c9c4f8 rtl_ssa::clobber_info::recompute_group() 859623: // ../../src/gcc/rtl-ssa/accesses.cc:67 859623: // 0x1c55007 rtl_ssa::clobber_info::group() const 859623: // ../../src/gcc/rtl-ssa/member-fns.inl:200 859623: // 0x1c55007 rtl_ssa::first_clobber_in_group(rtl_ssa::clobber_info*) 859623: // ../../src/gcc/rtl-ssa/access-utils.h:244 859623: // 0x1c55007 rtl_ssa::first_clobber_in_group(rtl_ssa::clobber_info*) 859623: // ../../src/gcc/rtl-ssa/access-utils.h:241 859623: // 0x1c55007 last_access<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> 859623: // ../../src/gcc/rtl-ssa/access-utils.h:460 859623: // 0x1c56451 prev_access<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> 859623: // ../../src/gcc/rtl-ssa/access-utils.h:491 859623: // 0x1c56451 restrict_movement_for_defs<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> 859623: // ../../src/gcc/rtl-ssa/movement.h:229 859623: // 0x1c56451 restrict_movement<(anonymous namespace)::insn_combination::substitute_nondebug_use(rtl_ssa::use_info*)::local_ignore> 859623: // ../../src/gcc/rtl-ssa/change-utils.h:66 859623: // 0x1c56451 substitute_nondebug_use 859623: // ../../src/gcc/late-combine.cc:249 859623: // 0x1c56451 substitute_nondebug_uses 859623: // ../../src/gcc/late-combine.cc:271 859623: // 0x1c5612c substitute_nondebug_uses 859623: // ../../src/gcc/late-combine.cc:275 859623: // 0x1c57574 run 859623: // ../../src/gcc/late-combine.cc:440 859623: // 0x1c57574 combine_into_uses 859623: // ../../src/gcc/late-combine.cc:690 859623: // 0x1c57da4 execute 859623: // ../../src/gcc/late-combine.cc:718 859623: // 0x1c57da4 execute 859623: // ../../src/gcc/late-combine.cc:771 859623: // Please submit a full bug report, with preprocessed source (by using -freport-bug). 859623: // Please include the complete backtrace with any bug report. 859623: // See for instructions. 859623: 859623: // /usr/libexec/gcc-cross/arm-linux-gnueabi/15/cc1plus -quiet -I /<>/_include/workflow -imultilib . -imultiarch arm-linux-gnueabi -MD CMakeFiles/client.dir/WFConsulClient.cc.d -MF CMakeFiles/client.dir/WFConsulClient.cc.o.d -MT src/client/CMakeFiles/client.dir/WFConsulClient.cc.o -D_GNU_SOURCE -D _LARGEFILE_SOURCE -D _FILE_OFFSET_BITS=64 -D _TIME_BITS=64 -D _FORTIFY_SOURCE=2 /<>/src/client/WFConsulClient.cc -quiet -dumpdir CMakeFiles/client.dir/ -dumpbase WFConsulClient.cc.cc -dumpbase-ext .cc -mfloat-abi=soft -mtls-dialect=gnu -marm -mlibarch=armv5te -march=armv5te -g -O2 -Wformat=1 -Werror=format-security -Wdate-time -Wall -Wno-invalid-offsetof -std=c++11 -ffile-prefix-map=/<>=. -fstack-protector-strong -fstack-clash-protection -fPIC -fno-exceptions -o - -frandom-seed=0 -fdump-noaddr 859623: 859623: # 0 "/<>/src/client/WFConsulClient.cc" 859623: # 1 "/<>/obj-arm-linux-gnueabi/src/client//" 859623: # 0 "" 859623: # 0 "" 859623: # 1 "/usr/arm-linux-gnueabi/include/stdc-predef.h" 1 3 859623: # 0 "" 2 859623: # 1 "/<>/src/client/WFConsulClient.cc" 859623: # 19 "/<>/src/client/WFConsulClient.cc" 859623: # 1 "/usr/arm-linux-gnueabi/include/stdio.h" 1 3 859623: # 28 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 1 3 859623: # 33 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/features.h" 1 3 859623: # 415 "/usr/arm-linux-gnueabi/include/features.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/features-time64.h" 1 3 859623: # 20 "/usr/arm-linux-gnueabi/include/features-time64.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 859623: # 21 "/usr/arm-linux-gnueabi/include/features-time64.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/timesize.h" 1 3 859623: # 22 "/usr/arm-linux-gnueabi/include/features-time64.h" 2 3 859623: # 416 "/usr/arm-linux-gnueabi/include/features.h" 2 3 859623: # 523 "/usr/arm-linux-gnueabi/include/features.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/cdefs.h" 1 3 859623: # 730 "/usr/arm-linux-gnueabi/include/sys/cdefs.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 859623: # 731 "/usr/arm-linux-gnueabi/include/sys/cdefs.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/long-double.h" 1 3 859623: # 732 "/usr/arm-linux-gnueabi/include/sys/cdefs.h" 2 3 859623: # 524 "/usr/arm-linux-gnueabi/include/features.h" 2 3 859623: # 547 "/usr/arm-linux-gnueabi/include/features.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/gnu/stubs.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/gnu/stubs-soft.h" 1 3 859623: # 8 "/usr/arm-linux-gnueabi/include/gnu/stubs.h" 2 3 859623: # 548 "/usr/arm-linux-gnueabi/include/features.h" 2 3 859623: # 34 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 2 3 859623: # 29 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: 859623: # 30 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern "C" { 859623: 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 229 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 3 4 859623: typedef unsigned int size_t; 859623: # 35 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stdarg.h" 1 3 4 859623: # 40 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stdarg.h" 3 4 859623: typedef __builtin_va_list __gnuc_va_list; 859623: # 38 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/types.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 859623: # 28 "/usr/arm-linux-gnueabi/include/bits/types.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/timesize.h" 1 3 859623: # 29 "/usr/arm-linux-gnueabi/include/bits/types.h" 2 3 859623: 859623: 859623: typedef unsigned char __u_char; 859623: typedef unsigned short int __u_short; 859623: typedef unsigned int __u_int; 859623: typedef unsigned long int __u_long; 859623: 859623: 859623: typedef signed char __int8_t; 859623: typedef unsigned char __uint8_t; 859623: typedef signed short int __int16_t; 859623: typedef unsigned short int __uint16_t; 859623: typedef signed int __int32_t; 859623: typedef unsigned int __uint32_t; 859623: 859623: 859623: 859623: 859623: __extension__ typedef signed long long int __int64_t; 859623: __extension__ typedef unsigned long long int __uint64_t; 859623: 859623: 859623: 859623: typedef __int8_t __int_least8_t; 859623: typedef __uint8_t __uint_least8_t; 859623: typedef __int16_t __int_least16_t; 859623: typedef __uint16_t __uint_least16_t; 859623: typedef __int32_t __int_least32_t; 859623: typedef __uint32_t __uint_least32_t; 859623: typedef __int64_t __int_least64_t; 859623: typedef __uint64_t __uint_least64_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: __extension__ typedef long long int __quad_t; 859623: __extension__ typedef unsigned long long int __u_quad_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __extension__ typedef long long int __intmax_t; 859623: __extension__ typedef unsigned long long int __uintmax_t; 859623: # 141 "/usr/arm-linux-gnueabi/include/bits/types.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/typesizes.h" 1 3 859623: # 142 "/usr/arm-linux-gnueabi/include/bits/types.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/time64.h" 1 3 859623: # 143 "/usr/arm-linux-gnueabi/include/bits/types.h" 2 3 859623: 859623: 859623: __extension__ typedef __uint64_t __dev_t; 859623: __extension__ typedef unsigned int __uid_t; 859623: __extension__ typedef unsigned int __gid_t; 859623: __extension__ typedef unsigned long int __ino_t; 859623: __extension__ typedef __uint64_t __ino64_t; 859623: __extension__ typedef unsigned int __mode_t; 859623: __extension__ typedef unsigned int __nlink_t; 859623: __extension__ typedef long int __off_t; 859623: __extension__ typedef __int64_t __off64_t; 859623: __extension__ typedef int __pid_t; 859623: __extension__ typedef struct { int __val[2]; } __fsid_t; 859623: __extension__ typedef long int __clock_t; 859623: __extension__ typedef unsigned long int __rlim_t; 859623: __extension__ typedef __uint64_t __rlim64_t; 859623: __extension__ typedef unsigned int __id_t; 859623: __extension__ typedef long int __time_t; 859623: __extension__ typedef unsigned int __useconds_t; 859623: __extension__ typedef long int __suseconds_t; 859623: __extension__ typedef __int64_t __suseconds64_t; 859623: 859623: __extension__ typedef int __daddr_t; 859623: __extension__ typedef int __key_t; 859623: 859623: 859623: __extension__ typedef int __clockid_t; 859623: 859623: 859623: __extension__ typedef void * __timer_t; 859623: 859623: 859623: __extension__ typedef long int __blksize_t; 859623: 859623: 859623: 859623: 859623: __extension__ typedef long int __blkcnt_t; 859623: __extension__ typedef __int64_t __blkcnt64_t; 859623: 859623: 859623: __extension__ typedef unsigned long int __fsblkcnt_t; 859623: __extension__ typedef __uint64_t __fsblkcnt64_t; 859623: 859623: 859623: __extension__ typedef unsigned long int __fsfilcnt_t; 859623: __extension__ typedef __uint64_t __fsfilcnt64_t; 859623: 859623: 859623: __extension__ typedef int __fsword_t; 859623: 859623: __extension__ typedef int __ssize_t; 859623: 859623: 859623: __extension__ typedef long int __syscall_slong_t; 859623: 859623: __extension__ typedef unsigned long int __syscall_ulong_t; 859623: 859623: 859623: 859623: typedef __off64_t __loff_t; 859623: typedef char *__caddr_t; 859623: 859623: 859623: __extension__ typedef int __intptr_t; 859623: 859623: 859623: __extension__ typedef unsigned int __socklen_t; 859623: 859623: 859623: 859623: 859623: typedef int __sig_atomic_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __extension__ typedef __int64_t __time64_t; 859623: # 40 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/__fpos_t.h" 1 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/__mbstate_t.h" 1 3 859623: # 13 "/usr/arm-linux-gnueabi/include/bits/types/__mbstate_t.h" 3 859623: typedef struct 859623: { 859623: int __count; 859623: union 859623: { 859623: unsigned int __wch; 859623: char __wchb[4]; 859623: } __value; 859623: } __mbstate_t; 859623: # 6 "/usr/arm-linux-gnueabi/include/bits/types/__fpos_t.h" 2 3 859623: 859623: 859623: 859623: 859623: typedef struct _G_fpos_t 859623: { 859623: __off_t __pos; 859623: __mbstate_t __state; 859623: } __fpos_t; 859623: # 41 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/__fpos64_t.h" 1 3 859623: # 10 "/usr/arm-linux-gnueabi/include/bits/types/__fpos64_t.h" 3 859623: typedef struct _G_fpos64_t 859623: { 859623: __off64_t __pos; 859623: __mbstate_t __state; 859623: } __fpos64_t; 859623: # 42 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/__FILE.h" 1 3 859623: 859623: 859623: 859623: struct _IO_FILE; 859623: typedef struct _IO_FILE __FILE; 859623: # 43 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/FILE.h" 1 3 859623: 859623: 859623: 859623: struct _IO_FILE; 859623: 859623: 859623: typedef struct _IO_FILE FILE; 859623: # 44 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_FILE.h" 1 3 859623: # 36 "/usr/arm-linux-gnueabi/include/bits/types/struct_FILE.h" 3 859623: struct _IO_FILE; 859623: struct _IO_marker; 859623: struct _IO_codecvt; 859623: struct _IO_wide_data; 859623: 859623: 859623: 859623: 859623: typedef void _IO_lock_t; 859623: 859623: 859623: 859623: 859623: 859623: struct _IO_FILE 859623: { 859623: int _flags; 859623: 859623: 859623: char *_IO_read_ptr; 859623: char *_IO_read_end; 859623: char *_IO_read_base; 859623: char *_IO_write_base; 859623: char *_IO_write_ptr; 859623: char *_IO_write_end; 859623: char *_IO_buf_base; 859623: char *_IO_buf_end; 859623: 859623: 859623: char *_IO_save_base; 859623: char *_IO_backup_base; 859623: char *_IO_save_end; 859623: 859623: struct _IO_marker *_markers; 859623: 859623: struct _IO_FILE *_chain; 859623: 859623: int _fileno; 859623: int _flags2:24; 859623: 859623: char _short_backupbuf[1]; 859623: __off_t _old_offset; 859623: 859623: 859623: unsigned short _cur_column; 859623: signed char _vtable_offset; 859623: char _shortbuf[1]; 859623: 859623: _IO_lock_t *_lock; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __off64_t _offset; 859623: 859623: struct _IO_codecvt *_codecvt; 859623: struct _IO_wide_data *_wide_data; 859623: struct _IO_FILE *_freeres_list; 859623: void *_freeres_buf; 859623: struct _IO_FILE **_prevchain; 859623: int _mode; 859623: 859623: char _unused2[15 * sizeof (int) - 5 * sizeof (void *)]; 859623: }; 859623: # 45 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/cookie_io_functions_t.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/types/cookie_io_functions_t.h" 3 859623: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, 859623: size_t __nbytes); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, 859623: size_t __nbytes); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); 859623: 859623: 859623: typedef int cookie_close_function_t (void *__cookie); 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef struct _IO_cookie_io_functions_t 859623: { 859623: cookie_read_function_t *read; 859623: cookie_write_function_t *write; 859623: cookie_seek_function_t *seek; 859623: cookie_close_function_t *close; 859623: } cookie_io_functions_t; 859623: # 48 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: typedef __gnuc_va_list va_list; 859623: # 66 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: typedef __off64_t off_t; 859623: 859623: 859623: 859623: 859623: typedef __off64_t off64_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __ssize_t ssize_t; 859623: # 87 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: typedef __fpos64_t fpos_t; 859623: 859623: 859623: typedef __fpos64_t fpos64_t; 859623: # 129 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdio_lim.h" 1 3 859623: # 130 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: # 149 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern FILE *stdin; 859623: extern FILE *stdout; 859623: extern FILE *stderr; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int remove (const char *__filename) noexcept (true); 859623: 859623: extern int rename (const char *__old, const char *__new) noexcept (true); 859623: 859623: 859623: 859623: extern int renameat (int __oldfd, const char *__old, int __newfd, 859623: const char *__new) noexcept (true); 859623: # 176 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int renameat2 (int __oldfd, const char *__old, int __newfd, 859623: const char *__new, unsigned int __flags) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: # 198 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern FILE *tmpfile64 (void) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: extern char *tmpnam (char[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern char *tmpnam_r (char __s[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: # 228 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern char *tempnam (const char *__dir, const char *__pfx) 859623: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fflush (FILE *__stream); 859623: # 245 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fflush_unlocked (FILE *__stream); 859623: # 255 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fcloseall (void); 859623: # 276 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") 859623: 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern FILE *fopen64 (const char *__restrict __filename, 859623: const char *__restrict __modes) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: extern FILE *freopen64 (const char *__restrict __filename, 859623: const char *__restrict __modes, 859623: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 859623: 859623: 859623: 859623: 859623: extern FILE *fdopen (int __fd, const char *__modes) noexcept (true) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: extern FILE *fopencookie (void *__restrict __magic_cookie, 859623: const char *__restrict __modes, 859623: cookie_io_functions_t __io_funcs) noexcept (true) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 859623: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) noexcept (true) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: # 334 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) noexcept (true) 859623: __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 859623: int __modes, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 859623: size_t __size) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern void setlinebuf (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fprintf (FILE *__restrict __stream, 859623: const char *__restrict __format, ...) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern int printf (const char *__restrict __format, ...); 859623: 859623: extern int sprintf (char *__restrict __s, 859623: const char *__restrict __format, ...) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 859623: __gnuc_va_list __arg) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 859623: 859623: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 859623: __gnuc_va_list __arg) noexcept (true); 859623: 859623: 859623: 859623: extern int snprintf (char *__restrict __s, size_t __maxlen, 859623: const char *__restrict __format, ...) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 859623: 859623: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 859623: const char *__restrict __format, __gnuc_va_list __arg) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 859623: 859623: 859623: 859623: 859623: 859623: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 859623: __gnuc_va_list __arg) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 859623: extern int __asprintf (char **__restrict __ptr, 859623: const char *__restrict __fmt, ...) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 859623: extern int asprintf (char **__restrict __ptr, 859623: const char *__restrict __fmt, ...) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern int vdprintf (int __fd, const char *__restrict __fmt, 859623: __gnuc_va_list __arg) 859623: __attribute__ ((__format__ (__printf__, 2, 0))); 859623: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 859623: __attribute__ ((__format__ (__printf__, 2, 3))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fscanf (FILE *__restrict __stream, 859623: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 859623: 859623: extern int sscanf (const char *__restrict __s, 859623: const char *__restrict __format, ...) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/floatn.h" 1 3 859623: # 52 "/usr/arm-linux-gnueabi/include/bits/floatn.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/floatn-common.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/floatn-common.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/long-double.h" 1 3 859623: # 25 "/usr/arm-linux-gnueabi/include/bits/floatn-common.h" 2 3 859623: # 53 "/usr/arm-linux-gnueabi/include/bits/floatn.h" 2 3 859623: # 438 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: 859623: 859623: 859623: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc23_fscanf") 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc23_scanf") 859623: __attribute__ ((__warn_unused_result__)); 859623: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_sscanf") 859623: 859623: ; 859623: # 490 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 859623: __gnuc_va_list __arg) 859623: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 859623: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: extern int vsscanf (const char *__restrict __s, 859623: const char *__restrict __format, __gnuc_va_list __arg) 859623: noexcept (true) __attribute__ ((__format__ (__scanf__, 2, 0))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfscanf") 859623: 859623: 859623: 859623: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vscanf") 859623: 859623: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 859623: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vsscanf") 859623: 859623: 859623: 859623: __attribute__ ((__format__ (__scanf__, 2, 0))); 859623: # 575 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fgetc (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: extern int getc (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: extern int getchar (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int getc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: extern int getchar_unlocked (void); 859623: # 600 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fgetc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: # 611 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fputc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 859623: extern int putc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: extern int putchar (int __c); 859623: # 627 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fputc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int putc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 859623: extern int putchar_unlocked (int __c); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int getw (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int putw (int __w, FILE *__stream) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) __attribute__ ((__nonnull__ (3))); 859623: # 667 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern char *gets (char *__s) __attribute__ ((__warn_unused_result__)) __attribute__ ((__deprecated__)); 859623: # 677 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern char *fgets_unlocked (char *__restrict __s, int __n, 859623: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 859623: __attribute__ ((__access__ (__write_only__, 1, 2))) __attribute__ ((__nonnull__ (3))); 859623: # 689 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern __ssize_t __getdelim (char **__restrict __lineptr, 859623: size_t *__restrict __n, int __delimiter, 859623: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); 859623: extern __ssize_t getdelim (char **__restrict __lineptr, 859623: size_t *__restrict __n, int __delimiter, 859623: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); 859623: 859623: 859623: extern __ssize_t getline (char **__restrict __lineptr, 859623: size_t *__restrict __n, 859623: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fputs (const char *__restrict __s, FILE *__restrict __stream) 859623: __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: extern int puts (const char *__s); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int ungetc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern size_t fread (void *__restrict __ptr, size_t __size, 859623: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 859623: __attribute__ ((__nonnull__ (4))); 859623: 859623: 859623: 859623: 859623: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 859623: size_t __n, FILE *__restrict __s) __attribute__ ((__nonnull__ (4))); 859623: # 745 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fputs_unlocked (const char *__restrict __s, 859623: FILE *__restrict __stream) __attribute__ ((__nonnull__ (2))); 859623: # 756 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 859623: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 859623: __attribute__ ((__nonnull__ (4))); 859623: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 859623: size_t __n, FILE *__restrict __stream) 859623: __attribute__ ((__nonnull__ (4))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fseek (FILE *__stream, long int __off, int __whence) 859623: __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern void rewind (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: # 802 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64") 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64") 859623: __attribute__ ((__nonnull__ (1))); 859623: # 828 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64") 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64") 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) 859623: __attribute__ ((__nonnull__ (1))); 859623: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) 859623: __attribute__ ((__nonnull__ (1))); 859623: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern void clearerr (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: extern int feof (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: extern int ferror (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern void clearerr_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: extern int feof_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: extern int ferror_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void perror (const char *__s) __attribute__ ((__cold__)); 859623: 859623: 859623: 859623: 859623: extern int fileno (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern int fileno_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: # 887 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int pclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: extern FILE *popen (const char *__command, const char *__modes) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern char *ctermid (char *__s) noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1))); 859623: 859623: 859623: 859623: 859623: 859623: extern char *cuserid (char *__s) 859623: __attribute__ ((__access__ (__write_only__, 1))); 859623: 859623: 859623: 859623: 859623: struct obstack; 859623: 859623: 859623: extern int obstack_printf (struct obstack *__restrict __obstack, 859623: const char *__restrict __format, ...) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))); 859623: extern int obstack_vprintf (struct obstack *__restrict __obstack, 859623: const char *__restrict __format, 859623: __gnuc_va_list __args) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void flockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int ftrylockfile (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern void funlockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 949 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: extern int __uflow (FILE *); 859623: extern int __overflow (FILE *, int); 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdio2-decl.h" 1 3 859623: # 26 "/usr/arm-linux-gnueabi/include/bits/stdio2-decl.h" 3 859623: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 859623: const char *__restrict __format, ...) noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1, 3))); 859623: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 859623: const char *__restrict __format, 859623: __gnuc_va_list __ap) noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1, 3))); 859623: 859623: 859623: 859623: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 859623: size_t __slen, const char *__restrict __format, 859623: ...) noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1, 2))); 859623: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 859623: size_t __slen, const char *__restrict __format, 859623: __gnuc_va_list __ap) noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1, 2))); 859623: 859623: 859623: 859623: 859623: 859623: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 859623: const char *__restrict __format, ...) 859623: __attribute__ ((__nonnull__ (1))); 859623: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 859623: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 859623: const char *__restrict __format, 859623: __gnuc_va_list __ap) __attribute__ ((__nonnull__ (1))); 859623: extern int __vprintf_chk (int __flag, const char *__restrict __format, 859623: __gnuc_va_list __ap); 859623: 859623: 859623: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 859623: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 859623: extern int __vdprintf_chk (int __fd, int __flag, 859623: const char *__restrict __fmt, __gnuc_va_list __arg) 859623: __attribute__ ((__format__ (__printf__, 3, 0))); 859623: 859623: 859623: 859623: 859623: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 859623: const char *__restrict __fmt, ...) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 859623: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 859623: const char *__restrict __fmt, __gnuc_va_list __arg) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 859623: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 859623: int __flag, const char *__restrict __format, 859623: ...) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 859623: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 859623: int __flag, 859623: const char *__restrict __format, 859623: __gnuc_va_list __args) 859623: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 859623: 859623: 859623: 859623: 859623: 859623: extern char *__gets_warn (char *__str) __asm__ ("" "gets") 859623: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size"))) 859623: ; 859623: 859623: extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 859623: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 859623: ; 859623: 859623: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 859623: FILE *__restrict __stream) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); 859623: 859623: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)); 859623: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 859623: ; 859623: 859623: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 859623: size_t __size, size_t __n, 859623: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); 859623: 859623: 859623: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 859623: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 859623: ; 859623: 859623: 859623: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 859623: int __n, FILE *__restrict __stream) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); 859623: 859623: 859623: 859623: 859623: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)); 859623: 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") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 859623: ; 859623: 859623: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 859623: size_t __size, size_t __n, 859623: FILE *__restrict __stream) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); 859623: # 955 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: # 966 "/usr/arm-linux-gnueabi/include/stdio.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdio.h" 1 3 859623: # 46 "/usr/arm-linux-gnueabi/include/bits/stdio.h" 3 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: getchar (void) 859623: { 859623: return getc (stdin); 859623: } 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: fgetc_unlocked (FILE *__fp) 859623: { 859623: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: getc_unlocked (FILE *__fp) 859623: { 859623: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: getchar_unlocked (void) 859623: { 859623: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 859623: } 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: putchar (int __c) 859623: { 859623: return putc (__c, stdout); 859623: } 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: fputc_unlocked (int __c, FILE *__stream) 859623: { 859623: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: putc_unlocked (int __c, FILE *__stream) 859623: { 859623: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: putchar_unlocked (int __c) 859623: { 859623: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 859623: getline (char **__lineptr, size_t *__n, FILE *__stream) 859623: { 859623: return __getdelim (__lineptr, __n, '\n', __stream); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) noexcept (true) 859623: { 859623: return (((__stream)->_flags & 0x0010) != 0); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) noexcept (true) 859623: { 859623: return (((__stream)->_flags & 0x0020) != 0); 859623: } 859623: # 967 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdio2.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/stdio2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) noexcept (true) 859623: { 859623: return __builtin___sprintf_chk (__s, 2 - 1, 859623: __builtin_object_size (__s, 2 > 1), __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: # 54 "/usr/arm-linux-gnueabi/include/bits/stdio2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) vsprintf (char * __restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 859623: 859623: { 859623: return __builtin___vsprintf_chk (__s, 2 - 1, 859623: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 859623: } 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) noexcept (true) 859623: 859623: { 859623: return __builtin___snprintf_chk (__s, __n, 2 - 1, 859623: __builtin_object_size (__s, 2 > 1), __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: # 92 "/usr/arm-linux-gnueabi/include/bits/stdio2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) vsnprintf (char * __restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: { 859623: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, 859623: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int 859623: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 859623: { 859623: return __fprintf_chk (__stream, 2 - 1, __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: printf (const char *__restrict __fmt, ...) 859623: { 859623: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 859623: } 859623: # 151 "/usr/arm-linux-gnueabi/include/bits/stdio2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: vprintf (const char * __restrict __fmt, 859623: __gnuc_va_list __ap) 859623: { 859623: 859623: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); 859623: 859623: 859623: 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int 859623: vfprintf (FILE *__restrict __stream, 859623: const char *__restrict __fmt, __gnuc_va_list __ap) 859623: { 859623: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); 859623: } 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: dprintf (int __fd, const char *__restrict __fmt, ...) 859623: { 859623: return __dprintf_chk (__fd, 2 - 1, __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: # 194 "/usr/arm-linux-gnueabi/include/bits/stdio2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 859623: { 859623: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); 859623: } 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 859623: { 859623: return __asprintf_chk (__ptr, 2 - 1, __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 859623: 859623: { 859623: return __asprintf_chk (__ptr, 2 - 1, __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) noexcept (true) 859623: 859623: { 859623: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: # 271 "/usr/arm-linux-gnueabi/include/bits/stdio2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 859623: 859623: { 859623: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 859623: 859623: { 859623: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, 859623: __ap); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 859623: gets (char * __str) 859623: 859623: 859623: 859623: { 859623: if (__builtin_object_size (__str, 2 > 1) != (size_t) -1) 859623: return __gets_chk (__str, __builtin_object_size (__str, 2 > 1)); 859623: return __gets_warn (__str); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) 859623: __attribute__ ((__nonnull__ (3))) char * 859623: fgets (char * __restrict __s, int __n, 859623: FILE *__restrict __stream) 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__s, 2 > 1); 859623: 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))))))) 859623: return __fgets_alias (__s, __n, __stream); 859623: 859623: 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))))) 859623: return __fgets_chk_warn (__s, __sz, __n, __stream); 859623: 859623: return __fgets_chk (__s, __sz, __n, __stream); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t 859623: fread (void * __restrict __ptr, 859623: size_t __size, size_t __n, FILE *__restrict __stream) 859623: 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__ptr, 0); 859623: 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)))))) 859623: return __fread_alias (__ptr, __size, __n, __stream); 859623: 859623: 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)))) 859623: return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); 859623: 859623: return __fread_chk (__ptr, __sz, __size, __n, __stream); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) 859623: __attribute__ ((__nonnull__ (3))) char * 859623: fgets_unlocked (char * __restrict __s, 859623: int __n, FILE *__restrict __stream) 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__s, 2 > 1); 859623: 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))))))) 859623: return __fgets_unlocked_alias (__s, __n, __stream); 859623: 859623: 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))))) 859623: return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); 859623: 859623: return __fgets_unlocked_chk (__s, __sz, __n, __stream); 859623: } 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t 859623: fread_unlocked (void * __restrict __ptr, 859623: size_t __size, size_t __n, FILE *__restrict __stream) 859623: 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__ptr, 0); 859623: 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)))))) 859623: { 859623: 859623: if (__builtin_constant_p (__size) 859623: && __builtin_constant_p (__n) 859623: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 859623: && __size * __n <= 8) 859623: { 859623: size_t __cnt = __size * __n; 859623: char *__cptr = (char *) __ptr; 859623: if (__cnt == 0) 859623: return 0; 859623: 859623: for (; __cnt > 0; --__cnt) 859623: { 859623: int __c = getc_unlocked (__stream); 859623: if (__c == (-1)) 859623: break; 859623: *__cptr++ = __c; 859623: } 859623: return (__cptr - (char *) __ptr) / __size; 859623: } 859623: 859623: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 859623: } 859623: 859623: 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)))) 859623: return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); 859623: 859623: return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); 859623: 859623: } 859623: # 971 "/usr/arm-linux-gnueabi/include/stdio.h" 2 3 859623: 859623: 859623: } 859623: # 20 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/usr/arm-linux-gnueabi/include/string.h" 1 3 859623: # 26 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/string.h" 2 3 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 34 "/usr/arm-linux-gnueabi/include/string.h" 2 3 859623: # 43 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 859623: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern void *memmove (void *__dest, const void *__src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: 859623: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 859623: int __c, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); 859623: 859623: 859623: 859623: 859623: extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: # 80 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: extern "C++" 859623: { 859623: extern void *memchr (void *__s, int __c, size_t __n) 859623: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: extern const void *memchr (const void *__s, int __c, size_t __n) 859623: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 859623: memchr (void *__s, int __c, size_t __n) noexcept (true) 859623: { 859623: return __builtin_memchr (__s, __c, __n); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 859623: memchr (const void *__s, int __c, size_t __n) noexcept (true) 859623: { 859623: return __builtin_memchr (__s, __c, __n); 859623: } 859623: 859623: } 859623: # 115 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern "C++" void *rawmemchr (void *__s, int __c) 859623: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: extern "C++" const void *rawmemchr (const void *__s, int __c) 859623: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 859623: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 859623: __attribute__ ((__access__ (__read_only__, 1, 3))); 859623: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 859623: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 859623: __attribute__ ((__access__ (__read_only__, 1, 3))); 859623: # 141 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern char *strncpy (char *__restrict __dest, 859623: const char *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 859623: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int strcmp (const char *__s1, const char *__s2) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int strcoll (const char *__s1, const char *__s2) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern size_t strxfrm (char *__restrict __dest, 859623: const char *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/locale_t.h" 1 3 859623: # 22 "/usr/arm-linux-gnueabi/include/bits/types/locale_t.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/__locale_t.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/types/__locale_t.h" 3 859623: struct __locale_struct 859623: { 859623: 859623: struct __locale_data *__locales[13]; 859623: 859623: 859623: const unsigned short int *__ctype_b; 859623: const int *__ctype_tolower; 859623: const int *__ctype_toupper; 859623: 859623: 859623: const char *__names[13]; 859623: }; 859623: 859623: typedef struct __locale_struct *__locale_t; 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/types/locale_t.h" 2 3 859623: 859623: typedef __locale_t locale_t; 859623: # 173 "/usr/arm-linux-gnueabi/include/string.h" 2 3 859623: 859623: 859623: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 859623: 859623: 859623: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 859623: locale_t __l) noexcept (true) __attribute__ ((__nonnull__ (2, 4))) 859623: __attribute__ ((__access__ (__write_only__, 1, 3))); 859623: 859623: 859623: 859623: 859623: 859623: extern char *strdup (const char *__s) 859623: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern char *strndup (const char *__string, size_t __n) 859623: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 859623: # 224 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern "C++" 859623: { 859623: extern char *strchr (char *__s, int __c) 859623: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: extern const char *strchr (const char *__s, int __c) 859623: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 859623: strchr (char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_strchr (__s, __c); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 859623: strchr (const char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_strchr (__s, __c); 859623: } 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" 859623: { 859623: extern char *strrchr (char *__s, int __c) 859623: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: extern const char *strrchr (const char *__s, int __c) 859623: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 859623: strrchr (char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_strrchr (__s, __c); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 859623: strrchr (const char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_strrchr (__s, __c); 859623: } 859623: 859623: } 859623: # 281 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern "C++" char *strchrnul (char *__s, int __c) 859623: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: extern "C++" const char *strchrnul (const char *__s, int __c) 859623: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: # 293 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern size_t strcspn (const char *__s, const char *__reject) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern size_t strspn (const char *__s, const char *__accept) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern "C++" 859623: { 859623: extern char *strpbrk (char *__s, const char *__accept) 859623: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: extern const char *strpbrk (const char *__s, const char *__accept) 859623: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 859623: strpbrk (char *__s, const char *__accept) noexcept (true) 859623: { 859623: return __builtin_strpbrk (__s, __accept); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 859623: strpbrk (const char *__s, const char *__accept) noexcept (true) 859623: { 859623: return __builtin_strpbrk (__s, __accept); 859623: } 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" 859623: { 859623: extern char *strstr (char *__haystack, const char *__needle) 859623: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: extern const char *strstr (const char *__haystack, const char *__needle) 859623: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 859623: strstr (char *__haystack, const char *__needle) noexcept (true) 859623: { 859623: return __builtin_strstr (__haystack, __needle); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 859623: strstr (const char *__haystack, const char *__needle) noexcept (true) 859623: { 859623: return __builtin_strstr (__haystack, __needle); 859623: } 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: extern char *__strtok_r (char *__restrict __s, 859623: const char *__restrict __delim, 859623: char **__restrict __save_ptr) 859623: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 859623: 859623: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 859623: char **__restrict __save_ptr) 859623: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 859623: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: extern "C++" const char *strcasestr (const char *__haystack, 859623: const char *__needle) 859623: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: # 389 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern void *memmem (const void *__haystack, size_t __haystacklen, 859623: const void *__needle, size_t __needlelen) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) 859623: __attribute__ ((__access__ (__read_only__, 1, 2))) 859623: __attribute__ ((__access__ (__read_only__, 3, 4))); 859623: 859623: 859623: 859623: extern void *__mempcpy (void *__restrict __dest, 859623: const void *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: extern void *mempcpy (void *__restrict __dest, 859623: const void *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: extern size_t strlen (const char *__s) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern size_t strnlen (const char *__string, size_t __maxlen) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern char *strerror (int __errnum) noexcept (true); 859623: # 444 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 859623: 859623: 859623: 859623: 859623: extern const char *strerrordesc_np (int __err) noexcept (true); 859623: 859623: extern const char *strerrorname_np (int __err) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern char *strerror_l (int __errnum, locale_t __l) noexcept (true); 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/strings.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/strings.h" 3 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 24 "/usr/arm-linux-gnueabi/include/strings.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern void bcopy (const void *__src, void *__dest, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern void bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern "C++" 859623: { 859623: extern char *index (char *__s, int __c) 859623: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: extern const char *index (const char *__s, int __c) 859623: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 859623: index (char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_index (__s, __c); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 859623: index (const char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_index (__s, __c); 859623: } 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" 859623: { 859623: extern char *rindex (char *__s, int __c) 859623: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: extern const char *rindex (const char *__s, int __c) 859623: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 859623: rindex (char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_rindex (__s, __c); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 859623: rindex (const char *__s, int __c) noexcept (true) 859623: { 859623: return __builtin_rindex (__s, __c); 859623: } 859623: 859623: } 859623: # 104 "/usr/arm-linux-gnueabi/include/strings.h" 3 859623: extern int ffs (int __i) noexcept (true) __attribute__ ((__const__)); 859623: 859623: 859623: 859623: 859623: 859623: extern int ffsl (long int __l) noexcept (true) __attribute__ ((__const__)); 859623: __extension__ extern int ffsll (long long int __ll) 859623: noexcept (true) __attribute__ ((__const__)); 859623: 859623: 859623: 859623: extern int strcasecmp (const char *__s1, const char *__s2) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 859623: 859623: 859623: 859623: extern int strncasecmp_l (const char *__s1, const char *__s2, 859623: size_t __n, locale_t __loc) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/strings_fortified.h" 1 3 859623: # 22 "/usr/arm-linux-gnueabi/include/bits/strings_fortified.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 859623: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) noexcept (true) 859623: { 859623: (void) __builtin___memmove_chk (__dest, __src, __len, 859623: __builtin_object_size (__dest, 0)); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 859623: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) noexcept (true) 859623: { 859623: (void) __builtin___memset_chk (__dest, '\0', __len, 859623: __builtin_object_size (__dest, 0)); 859623: } 859623: # 145 "/usr/arm-linux-gnueabi/include/strings.h" 2 3 859623: # 463 "/usr/arm-linux-gnueabi/include/string.h" 2 3 859623: 859623: 859623: 859623: extern void explicit_bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 859623: __attribute__ ((__access__ (__write_only__, 1, 2))); 859623: 859623: 859623: 859623: extern char *strsep (char **__restrict __stringp, 859623: const char *__restrict __delim) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: extern char *strsignal (int __sig) noexcept (true); 859623: 859623: 859623: 859623: extern const char *sigabbrev_np (int __sig) noexcept (true); 859623: 859623: 859623: extern const char *sigdescr_np (int __sig) noexcept (true); 859623: 859623: 859623: 859623: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: extern char *__stpncpy (char *__restrict __dest, 859623: const char *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: extern char *stpncpy (char *__restrict __dest, 859623: const char *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: extern size_t strlcpy (char *__restrict __dest, 859623: const char *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 859623: 859623: 859623: 859623: extern size_t strlcat (char *__restrict __dest, 859623: const char *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); 859623: 859623: 859623: 859623: 859623: extern int strverscmp (const char *__s1, const char *__s2) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern char *strfry (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern void *memfrob (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 859623: __attribute__ ((__access__ (__read_write__, 1, 2))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" char *basename (char *__filename) 859623: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 859623: extern "C++" const char *basename (const char *__filename) 859623: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 859623: # 548 "/usr/arm-linux-gnueabi/include/string.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/string_fortified.h" 1 3 859623: # 25 "/usr/arm-linux-gnueabi/include/bits/string_fortified.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 859623: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 859623: 859623: { 859623: return __builtin___memcpy_chk (__dest, __src, __len, 859623: __builtin_object_size (__dest, 0)); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 859623: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) noexcept (true) 859623: { 859623: return __builtin___memmove_chk (__dest, __src, __len, 859623: __builtin_object_size (__dest, 0)); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 859623: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 859623: 859623: { 859623: return __builtin___mempcpy_chk (__dest, __src, __len, 859623: __builtin_object_size (__dest, 0)); 859623: } 859623: # 56 "/usr/arm-linux-gnueabi/include/bits/string_fortified.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 859623: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) noexcept (true) 859623: { 859623: return __builtin___memset_chk (__dest, __ch, __len, 859623: __builtin_object_size (__dest, 0)); 859623: } 859623: 859623: 859623: 859623: 859623: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 859623: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) noexcept (true) 859623: { 859623: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 859623: __attribute__ ((__leaf__)) strcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) 859623: 859623: 859623: { 859623: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 859623: __attribute__ ((__leaf__)) stpcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) 859623: 859623: 859623: { 859623: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 859623: } 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 859623: __attribute__ ((__leaf__)) strncpy (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 859623: 859623: 859623: { 859623: return __builtin___strncpy_chk (__dest, __src, __len, 859623: __builtin_object_size (__dest, 2 > 1)); 859623: } 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 859623: __attribute__ ((__leaf__)) stpncpy (char * __dest, const char *__src, size_t __n) noexcept (true) 859623: 859623: 859623: { 859623: return __builtin___stpncpy_chk (__dest, __src, __n, 859623: __builtin_object_size (__dest, 2 > 1)); 859623: } 859623: # 135 "/usr/arm-linux-gnueabi/include/bits/string_fortified.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 859623: __attribute__ ((__leaf__)) strcat (char * __restrict __dest, const char *__restrict __src) noexcept (true) 859623: 859623: 859623: { 859623: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 859623: __attribute__ ((__leaf__)) strncat (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 859623: 859623: 859623: { 859623: return __builtin___strncat_chk (__dest, __src, __len, 859623: __builtin_object_size (__dest, 2 > 1)); 859623: } 859623: 859623: 859623: extern size_t __strlcpy_chk (char *__dest, const char *__src, size_t __n, 859623: size_t __destlen) noexcept (true); 859623: extern size_t __strlcpy_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcpy") 859623: 859623: ; 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) strlcpy (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) 859623: 859623: 859623: { 859623: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 859623: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1)) 859623: || __n > __builtin_object_size (__dest, 2 > 1))) 859623: return __strlcpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); 859623: return __strlcpy_alias (__dest, __src, __n); 859623: } 859623: 859623: extern size_t __strlcat_chk (char *__dest, const char *__src, size_t __n, 859623: size_t __destlen) noexcept (true); 859623: extern size_t __strlcat_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcat") 859623: 859623: ; 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) strlcat (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) 859623: 859623: { 859623: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 859623: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1)) 859623: || __n > __builtin_object_size (__dest, 2 > 1))) 859623: return __strlcat_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); 859623: return __strlcat_alias (__dest, __src, __n); 859623: } 859623: # 549 "/usr/arm-linux-gnueabi/include/string.h" 2 3 859623: 859623: 859623: 859623: } 859623: # 21 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/string" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/string" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/requires_hosted.h" 1 3 859623: # 31 "/usr/arm-linux-gnueabi/include/c++/15/bits/requires_hosted.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 1 3 859623: # 37 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: 859623: # 37 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wvariadic-macros" 859623: 859623: #pragma GCC diagnostic ignored "-Wc++11-extensions" 859623: #pragma GCC diagnostic ignored "-Wc++23-extensions" 859623: # 336 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: namespace std 859623: { 859623: typedef unsigned int size_t; 859623: typedef int ptrdiff_t; 859623: 859623: 859623: typedef decltype(nullptr) nullptr_t; 859623: 859623: 859623: #pragma GCC visibility push(default) 859623: 859623: 859623: extern "C++" __attribute__ ((__noreturn__, __always_inline__)) 859623: inline void __terminate() noexcept 859623: { 859623: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); 859623: terminate(); 859623: } 859623: #pragma GCC visibility pop 859623: } 859623: # 369 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: namespace std 859623: { 859623: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 859623: } 859623: namespace __gnu_cxx 859623: { 859623: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 859623: } 859623: # 573 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: namespace std 859623: { 859623: #pragma GCC visibility push(default) 859623: 859623: 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: constexpr inline bool 859623: __is_constant_evaluated() noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: return __builtin_is_constant_evaluated(); 859623: 859623: 859623: 859623: } 859623: #pragma GCC visibility pop 859623: } 859623: # 617 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: namespace std 859623: { 859623: #pragma GCC visibility push(default) 859623: 859623: extern "C++" __attribute__ ((__noreturn__)) __attribute__((__cold__)) 859623: void 859623: __glibcxx_assert_fail 859623: (const char* __file, int __line, const char* __function, 859623: const char* __condition) 859623: noexcept; 859623: #pragma GCC visibility pop 859623: } 859623: # 648 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: namespace std 859623: { 859623: __attribute__((__always_inline__,__visibility__("default"))) 859623: inline void 859623: __glibcxx_assert_fail() 859623: { } 859623: } 859623: # 727 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/os_defines.h" 1 3 859623: # 728 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/cpu_defines.h" 1 3 859623: # 731 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 2 3 859623: # 953 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++config.h" 3 859623: #pragma GCC diagnostic pop 859623: # 32 "/usr/arm-linux-gnueabi/include/c++/15/bits/requires_hosted.h" 2 3 859623: # 41 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stringfwd.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/stringfwd.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/memoryfwd.h" 1 3 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/bits/memoryfwd.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 66 "/usr/arm-linux-gnueabi/include/c++/15/bits/memoryfwd.h" 3 859623: template 859623: class allocator; 859623: 859623: template<> 859623: class allocator; 859623: 859623: 859623: 859623: template 859623: struct uses_allocator; 859623: 859623: template 859623: struct allocator_traits; 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/bits/stringfwd.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct char_traits; 859623: 859623: template<> struct char_traits; 859623: 859623: template<> struct char_traits; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template<> struct char_traits; 859623: template<> struct char_traits; 859623: 859623: 859623: namespace __cxx11 { 859623: 859623: template, 859623: typename _Alloc = allocator<_CharT> > 859623: class basic_string; 859623: 859623: } 859623: 859623: 859623: typedef basic_string string; 859623: 859623: 859623: typedef basic_string wstring; 859623: # 91 "/usr/arm-linux-gnueabi/include/c++/15/bits/stringfwd.h" 3 859623: typedef basic_string u16string; 859623: 859623: 859623: typedef basic_string u32string; 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 1 3 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 1 3 859623: # 49 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/wchar.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 1 3 859623: # 28 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/floatn.h" 1 3 859623: # 31 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 36 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stdarg.h" 1 3 4 859623: # 39 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: # 51 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wchar.h" 1 3 859623: # 52 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/wint_t.h" 1 3 859623: # 20 "/usr/arm-linux-gnueabi/include/bits/types/wint_t.h" 3 859623: typedef unsigned int wint_t; 859623: # 53 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/mbstate_t.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: typedef __mbstate_t mbstate_t; 859623: # 54 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: # 90 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern "C" { 859623: 859623: 859623: 859623: struct tm; 859623: 859623: 859623: 859623: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: extern size_t wcslcpy (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 859623: 859623: 859623: 859623: extern size_t wcslcat (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); 859623: 859623: 859623: 859623: extern wchar_t *wcscat (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, size_t __n) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 859623: 859623: 859623: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 859623: size_t __n) noexcept (true); 859623: 859623: 859623: 859623: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 859623: locale_t __loc) noexcept (true); 859623: 859623: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 859623: size_t __n, locale_t __loc) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 859623: 859623: 859623: 859623: extern size_t wcsxfrm (wchar_t *__restrict __s1, 859623: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 859623: locale_t __loc) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 859623: size_t __n, locale_t __loc) noexcept (true); 859623: 859623: 859623: extern wchar_t *wcsdup (const wchar_t *__s) noexcept (true) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 859623: 859623: 859623: 859623: 859623: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 859623: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 859623: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 859623: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 859623: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 859623: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 859623: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 859623: # 206 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 859623: noexcept (true) __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: 859623: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 859623: noexcept (true) __attribute__ ((__pure__)); 859623: 859623: 859623: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 859623: noexcept (true) __attribute__ ((__pure__)); 859623: 859623: 859623: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 859623: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 859623: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 859623: const wchar_t *__accept) 859623: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 859623: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 859623: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 859623: const wchar_t *__needle) 859623: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern wchar_t *wcstok (wchar_t *__restrict __s, 859623: const wchar_t *__restrict __delim, 859623: wchar_t **__restrict __ptr) noexcept (true); 859623: 859623: 859623: extern size_t wcslen (const wchar_t *__s) noexcept (true) __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: 859623: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 859623: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 859623: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 859623: const wchar_t *__needle) 859623: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 859623: # 265 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 859623: noexcept (true) __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: 859623: 859623: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 859623: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 859623: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 859623: size_t __n) 859623: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 859623: noexcept (true) __attribute__ ((__pure__)); 859623: 859623: 859623: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 859623: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 859623: 859623: 859623: 859623: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 859623: noexcept (true); 859623: 859623: 859623: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 859623: const wchar_t *__restrict __s2, size_t __n) 859623: noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t btowc (int __c) noexcept (true); 859623: 859623: 859623: 859623: extern int wctob (wint_t __c) noexcept (true); 859623: 859623: 859623: 859623: extern int mbsinit (const mbstate_t *__ps) noexcept (true) __attribute__ ((__pure__)); 859623: 859623: 859623: 859623: extern size_t mbrtowc (wchar_t *__restrict __pwc, 859623: const char *__restrict __s, size_t __n, 859623: mbstate_t *__restrict __p) noexcept (true); 859623: 859623: 859623: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 859623: mbstate_t *__restrict __ps) noexcept (true); 859623: 859623: 859623: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 859623: mbstate_t *__restrict __ps) noexcept (true); 859623: extern size_t mbrlen (const char *__restrict __s, size_t __n, 859623: mbstate_t *__restrict __ps) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 859623: extern __inline __attribute__ ((__gnu_inline__)) wint_t 859623: __attribute__ ((__leaf__)) btowc (int __c) noexcept (true) 859623: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 859623: ? (wint_t) __c : __btowc_alias (__c)); } 859623: 859623: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: __attribute__ ((__leaf__)) wctob (wint_t __wc) noexcept (true) 859623: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 859623: ? (int) __wc : __wctob_alias (__wc)); } 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) size_t 859623: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) noexcept (true) 859623: 859623: { return (__ps != __null 859623: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 859623: 859623: 859623: 859623: 859623: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 859623: const char **__restrict __src, size_t __len, 859623: mbstate_t *__restrict __ps) noexcept (true); 859623: 859623: 859623: 859623: extern size_t wcsrtombs (char *__restrict __dst, 859623: const wchar_t **__restrict __src, size_t __len, 859623: mbstate_t *__restrict __ps) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 859623: const char **__restrict __src, size_t __nmc, 859623: size_t __len, mbstate_t *__restrict __ps) noexcept (true); 859623: 859623: 859623: 859623: extern size_t wcsnrtombs (char *__restrict __dst, 859623: const wchar_t **__restrict __src, 859623: size_t __nwc, size_t __len, 859623: mbstate_t *__restrict __ps) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int wcwidth (wchar_t __c) noexcept (true); 859623: 859623: 859623: 859623: extern int wcswidth (const wchar_t *__s, size_t __n) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern double wcstod (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr) noexcept (true); 859623: 859623: 859623: 859623: extern float wcstof (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr) noexcept (true); 859623: extern long double wcstold (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr) noexcept (true); 859623: # 422 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr) noexcept (true); 859623: 859623: 859623: 859623: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr) noexcept (true); 859623: # 437 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr) noexcept (true); 859623: # 455 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern long int wcstol (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, int __base) noexcept (true); 859623: 859623: 859623: 859623: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, int __base) 859623: noexcept (true); 859623: 859623: 859623: 859623: 859623: __extension__ 859623: extern long long int wcstoll (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, int __base) 859623: noexcept (true); 859623: 859623: 859623: 859623: __extension__ 859623: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: int __base) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: __extension__ 859623: extern long long int wcstoq (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, int __base) 859623: noexcept (true); 859623: 859623: 859623: 859623: __extension__ 859623: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: int __base) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern long int wcstol (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstol") 859623: 859623: ; 859623: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoul") 859623: 859623: 859623: ; 859623: __extension__ 859623: extern long long int wcstoll (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") 859623: 859623: 859623: ; 859623: __extension__ 859623: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") 859623: 859623: 859623: ; 859623: 859623: __extension__ 859623: extern long long int wcstoq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") 859623: 859623: ; 859623: __extension__ 859623: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") 859623: 859623: 859623: ; 859623: # 561 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern long int wcstol_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, int __base, 859623: locale_t __loc) noexcept (true); 859623: 859623: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: int __base, locale_t __loc) noexcept (true); 859623: 859623: __extension__ 859623: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: int __base, locale_t __loc) noexcept (true); 859623: 859623: __extension__ 859623: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: int __base, locale_t __loc) 859623: noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 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") 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: ; 859623: __extension__ 859623: 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") 859623: 859623: 859623: 859623: ; 859623: __extension__ 859623: 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") 859623: 859623: 859623: 859623: ; 859623: # 630 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern double wcstod_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, locale_t __loc) 859623: noexcept (true); 859623: 859623: extern float wcstof_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, locale_t __loc) 859623: noexcept (true); 859623: 859623: extern long double wcstold_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: locale_t __loc) noexcept (true); 859623: # 649 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: locale_t __loc) noexcept (true); 859623: 859623: 859623: 859623: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: locale_t __loc) noexcept (true); 859623: # 667 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, 859623: wchar_t **__restrict __endptr, 859623: locale_t __loc) noexcept (true); 859623: # 689 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src) noexcept (true); 859623: 859623: 859623: 859623: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, size_t __n) 859623: noexcept (true); 859623: # 718 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) 859623: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); 859623: 859623: 859623: 859623: 859623: 859623: extern int fwide (__FILE *__fp, int __mode) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fwprintf (__FILE *__restrict __stream, 859623: const wchar_t *__restrict __format, ...) 859623: ; 859623: 859623: 859623: 859623: 859623: extern int wprintf (const wchar_t *__restrict __format, ...) 859623: ; 859623: 859623: extern int swprintf (wchar_t *__restrict __s, size_t __n, 859623: const wchar_t *__restrict __format, ...) 859623: noexcept (true) ; 859623: 859623: 859623: 859623: 859623: 859623: extern int vfwprintf (__FILE *__restrict __s, 859623: const wchar_t *__restrict __format, 859623: __gnuc_va_list __arg) 859623: ; 859623: 859623: 859623: 859623: 859623: extern int vwprintf (const wchar_t *__restrict __format, 859623: __gnuc_va_list __arg) 859623: ; 859623: 859623: 859623: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 859623: const wchar_t *__restrict __format, 859623: __gnuc_va_list __arg) 859623: noexcept (true) ; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fwscanf (__FILE *__restrict __stream, 859623: const wchar_t *__restrict __format, ...) 859623: ; 859623: 859623: 859623: 859623: 859623: extern int wscanf (const wchar_t *__restrict __format, ...) 859623: ; 859623: 859623: extern int swscanf (const wchar_t *__restrict __s, 859623: const wchar_t *__restrict __format, ...) 859623: noexcept (true) ; 859623: # 795 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_fwscanf") 859623: 859623: 859623: ; 859623: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_wscanf") 859623: 859623: ; 859623: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_swscanf") 859623: 859623: 859623: ; 859623: # 851 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern int vfwscanf (__FILE *__restrict __s, 859623: const wchar_t *__restrict __format, 859623: __gnuc_va_list __arg) 859623: ; 859623: 859623: 859623: 859623: 859623: extern int vwscanf (const wchar_t *__restrict __format, 859623: __gnuc_va_list __arg) 859623: ; 859623: 859623: extern int vswscanf (const wchar_t *__restrict __s, 859623: const wchar_t *__restrict __format, 859623: __gnuc_va_list __arg) 859623: noexcept (true) ; 859623: # 875 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfwscanf") 859623: 859623: 859623: ; 859623: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vwscanf") 859623: 859623: ; 859623: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vswscanf") 859623: 859623: 859623: ; 859623: # 935 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern wint_t fgetwc (__FILE *__stream); 859623: extern wint_t getwc (__FILE *__stream); 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t getwchar (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 859623: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t putwchar (wchar_t __wc); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 859623: __FILE *__restrict __stream); 859623: 859623: 859623: 859623: 859623: 859623: extern int fputws (const wchar_t *__restrict __ws, 859623: __FILE *__restrict __stream); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 859623: # 990 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern wint_t getwc_unlocked (__FILE *__stream); 859623: extern wint_t getwchar_unlocked (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t fgetwc_unlocked (__FILE *__stream); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 859623: # 1016 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 859623: extern wint_t putwchar_unlocked (wchar_t __wc); 859623: # 1026 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 859623: __FILE *__restrict __stream); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int fputws_unlocked (const wchar_t *__restrict __ws, 859623: __FILE *__restrict __stream); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 859623: const wchar_t *__restrict __format, 859623: const struct tm *__restrict __tp) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 859623: const wchar_t *__restrict __format, 859623: const struct tm *__restrict __tp, 859623: locale_t __loc) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wchar2-decl.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/wchar2-decl.h" 3 859623: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 859623: const wchar_t *__restrict __s2, size_t __n, 859623: size_t __ns1) noexcept (true); 859623: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmemcpy") 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 859623: ; 859623: 859623: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 859623: size_t __n, size_t __ns1) noexcept (true); 859623: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) __asm__ ("" "wmemmove") 859623: 859623: ; 859623: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemmove_chk") 859623: 859623: 859623: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 859623: ; 859623: 859623: 859623: 859623: 859623: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 859623: const wchar_t *__restrict __s2, size_t __n, 859623: size_t __ns1) noexcept (true); 859623: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmempcpy") 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 859623: ; 859623: 859623: 859623: 859623: 859623: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 859623: size_t __ns) noexcept (true); 859623: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) __asm__ ("" "wmemset") 859623: ; 859623: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) noexcept (true) __asm__ ("" "__wmemset_chk") 859623: 859623: 859623: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 859623: ; 859623: 859623: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, 859623: size_t __n) noexcept (true); 859623: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscpy") 859623: 859623: ; 859623: 859623: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, 859623: size_t __destlen) noexcept (true); 859623: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcpcpy") 859623: 859623: ; 859623: 859623: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, size_t __n, 859623: size_t __destlen) noexcept (true); 859623: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncpy") 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 859623: ; 859623: 859623: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, size_t __n, 859623: size_t __destlen) noexcept (true); 859623: 859623: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcpncpy") 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 859623: ; 859623: 859623: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, 859623: size_t __destlen) noexcept (true); 859623: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscat") 859623: 859623: ; 859623: 859623: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 859623: const wchar_t *__restrict __src, 859623: size_t __n, size_t __destlen) noexcept (true); 859623: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncat") 859623: 859623: 859623: ; 859623: 859623: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 859623: int __flag, size_t __s_len, 859623: const wchar_t *__restrict __format, ...) 859623: noexcept (true) ; 859623: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) __asm__ ("" "swprintf") 859623: 859623: 859623: ; 859623: 859623: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 859623: int __flag, size_t __s_len, 859623: const wchar_t *__restrict __format, 859623: __gnuc_va_list __arg) 859623: noexcept (true) ; 859623: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) __asm__ ("" "vswprintf") 859623: 859623: 859623: ; 859623: 859623: 859623: 859623: 859623: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 859623: const wchar_t *__restrict __format, ...); 859623: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 859623: ...); 859623: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 859623: const wchar_t *__restrict __format, 859623: __gnuc_va_list __ap); 859623: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 859623: __gnuc_va_list __ap); 859623: 859623: 859623: 859623: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 859623: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 859623: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 859623: 859623: __attribute__ ((__warn_unused_result__)); 859623: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 859623: ; 859623: 859623: 859623: 859623: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 859623: int __n, __FILE *__restrict __stream) 859623: __attribute__ ((__warn_unused_result__)); 859623: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)); 859623: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 859623: 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 859623: ; 859623: 859623: 859623: 859623: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 859623: mbstate_t *__restrict __p, 859623: size_t __buflen) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcrtomb") 859623: 859623: __attribute__ ((__warn_unused_result__)); 859623: 859623: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 859623: const char **__restrict __src, 859623: size_t __len, mbstate_t *__restrict __ps, 859623: size_t __dstlen) noexcept (true); 859623: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsrtowcs") 859623: 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: 859623: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 859623: ; 859623: 859623: extern size_t __wcsrtombs_chk (char *__restrict __dst, 859623: const wchar_t **__restrict __src, 859623: size_t __len, mbstate_t *__restrict __ps, 859623: size_t __dstlen) noexcept (true); 859623: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsrtombs") 859623: 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: 859623: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 859623: 859623: 859623: 859623: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 859623: const char **__restrict __src, size_t __nmc, 859623: size_t __len, mbstate_t *__restrict __ps, 859623: size_t __dstlen) noexcept (true); 859623: 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") 859623: 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: 859623: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 859623: ; 859623: 859623: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 859623: const wchar_t **__restrict __src, 859623: size_t __nwc, size_t __len, 859623: mbstate_t *__restrict __ps, size_t __dstlen) 859623: noexcept (true); 859623: 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") 859623: 859623: 859623: 859623: ; 859623: 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") 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 859623: 859623: 859623: 859623: 859623: extern size_t __wcslcpy_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, 859623: size_t __destlen) noexcept (true); 859623: extern size_t __wcslcpy_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcpy") 859623: 859623: ; 859623: 859623: extern size_t __wcslcat_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, 859623: size_t __destlen) noexcept (true); 859623: extern size_t __wcslcat_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcat") 859623: 859623: ; 859623: # 1060 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: # 1070 "/usr/arm-linux-gnueabi/include/wchar.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wchar2.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/wchar2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wmemcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wmemmove (wchar_t * __s1, const wchar_t *__s2, size_t __n) noexcept (true) 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wmempcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wmemset (wchar_t * __s, wchar_t __c, size_t __n) noexcept (true) 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wcscpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__dest, 2 > 1); 859623: if (__sz != (size_t) -1) 859623: return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 859623: return __wcscpy_alias (__dest, __src); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wcpcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__dest, 2 > 1); 859623: if (__sz != (size_t) -1) 859623: return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 859623: return __wcpcpy_alias (__dest, __src); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wcsncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wcpncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wcscat (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__dest, 2 > 1); 859623: if (__sz != (size_t) -1) 859623: return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); 859623: return __wcscat_alias (__dest, __src); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 859623: __attribute__ ((__leaf__)) wcsncat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__dest, 2 > 1); 859623: if (__sz != (size_t) -1) 859623: return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); 859623: return __wcsncat_alias (__dest, __src, __n); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) wcslcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 859623: 859623: 859623: 859623: 859623: { 859623: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 859623: && (!__builtin_constant_p (__n 859623: > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) 859623: || __n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))) 859623: return __wcslcpy_chk (__dest, __src, __n, 859623: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 859623: return __wcslcpy_alias (__dest, __src, __n); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) wcslcat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 859623: 859623: { 859623: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 859623: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1) 859623: / sizeof (wchar_t)) 859623: || __n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))) 859623: return __wcslcat_chk (__dest, __src, __n, 859623: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 859623: return __wcslcat_alias (__dest, __src, __n); 859623: } 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__s, 2 > 1); 859623: if (__sz != (size_t) -1 || 2 > 1) 859623: return __swprintf_chk (__s, __n, 2 - 1, 859623: __sz / sizeof (wchar_t), __fmt, __builtin_va_arg_pack ()); 859623: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 859623: } 859623: # 205 "/usr/arm-linux-gnueabi/include/bits/wchar2.h" 3 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__s, 2 > 1); 859623: if (__sz != (size_t) -1 || 2 > 1) 859623: return __vswprintf_chk (__s, __n, 2 - 1, 859623: __sz / sizeof (wchar_t), __fmt, __ap); 859623: return __vswprintf_alias (__s, __n, __fmt, __ap); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: wprintf (const wchar_t *__restrict __fmt, ...) 859623: { 859623: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 859623: { 859623: return __fwprintf_chk (__stream, 2 - 1, __fmt, 859623: __builtin_va_arg_pack ()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 859623: { 859623: return __vwprintf_chk (2 - 1, __fmt, __ap); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: vfwprintf (__FILE *__restrict __stream, 859623: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 859623: { 859623: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 859623: fgetws (wchar_t * __restrict __s, int __n, 859623: __FILE *__restrict __stream) 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__s, 2 > 1); 859623: 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))))))) 859623: return __fgetws_alias (__s, __n, __stream); 859623: 859623: 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))))) 859623: return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); 859623: 859623: return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 859623: fgetws_unlocked (wchar_t * __restrict __s, 859623: int __n, __FILE *__restrict __stream) 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__s, 2 > 1); 859623: 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))))))) 859623: return __fgetws_unlocked_alias (__s, __n, __stream); 859623: 859623: 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))))) 859623: return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, 859623: __stream); 859623: 859623: return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 859623: } 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 859623: __attribute__ ((__leaf__)) wcrtomb (char * __restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) 859623: 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 859623: && 16 > __builtin_object_size (__s, 2 > 1)) 859623: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); 859623: return __wcrtomb_alias (__s, __wchar, __ps); 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) wcsrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: { 859623: 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)))) 859623: 859623: ; 859623: } 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: { 859623: 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))))) 859623: 859623: ; 859623: } 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) wcsnrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: { 859623: 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)))) 859623: 859623: ; 859623: } 859623: # 1071 "/usr/arm-linux-gnueabi/include/wchar.h" 2 3 859623: 859623: 859623: } 859623: # 50 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 2 3 859623: # 64 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 3 859623: namespace std 859623: { 859623: using ::mbstate_t; 859623: } 859623: # 137 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 3 859623: extern "C++" 859623: { 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: using ::wint_t; 859623: 859623: using ::btowc; 859623: using ::fgetwc; 859623: using ::fgetws; 859623: using ::fputwc; 859623: using ::fputws; 859623: using ::fwide; 859623: using ::fwprintf; 859623: using ::fwscanf; 859623: using ::getwc; 859623: using ::getwchar; 859623: using ::mbrlen; 859623: using ::mbrtowc; 859623: using ::mbsinit; 859623: using ::mbsrtowcs; 859623: using ::putwc; 859623: using ::putwchar; 859623: 859623: using ::swprintf; 859623: 859623: using ::swscanf; 859623: using ::ungetwc; 859623: using ::vfwprintf; 859623: 859623: using ::vfwscanf; 859623: 859623: 859623: using ::vswprintf; 859623: 859623: 859623: using ::vswscanf; 859623: 859623: using ::vwprintf; 859623: 859623: using ::vwscanf; 859623: 859623: using ::wcrtomb; 859623: using ::wcscat; 859623: using ::wcscmp; 859623: using ::wcscoll; 859623: using ::wcscpy; 859623: using ::wcscspn; 859623: using ::wcsftime; 859623: using ::wcslen; 859623: using ::wcsncat; 859623: using ::wcsncmp; 859623: using ::wcsncpy; 859623: using ::wcsrtombs; 859623: using ::wcsspn; 859623: using ::wcstod; 859623: 859623: using ::wcstof; 859623: 859623: using ::wcstok; 859623: using ::wcstol; 859623: using ::wcstoul; 859623: using ::wcsxfrm; 859623: using ::wctob; 859623: using ::wmemcmp; 859623: using ::wmemcpy; 859623: using ::wmemmove; 859623: using ::wmemset; 859623: using ::wprintf; 859623: using ::wscanf; 859623: using ::wcschr; 859623: using ::wcspbrk; 859623: using ::wcsrchr; 859623: using ::wcsstr; 859623: using ::wmemchr; 859623: # 236 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 3 859623: 859623: } 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace __gnu_cxx 859623: { 859623: 859623: 859623: 859623: 859623: 859623: using ::wcstold; 859623: # 262 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 3 859623: using ::wcstoll; 859623: using ::wcstoull; 859623: 859623: } 859623: 859623: namespace std 859623: { 859623: using ::__gnu_cxx::wcstold; 859623: using ::__gnu_cxx::wcstoll; 859623: using ::__gnu_cxx::wcstoull; 859623: } 859623: # 282 "/usr/arm-linux-gnueabi/include/c++/15/cwchar" 3 859623: namespace std 859623: { 859623: 859623: using std::wcstof; 859623: 859623: 859623: using std::vfwscanf; 859623: 859623: 859623: using std::vswscanf; 859623: 859623: 859623: using std::vwscanf; 859623: 859623: 859623: 859623: using std::wcstold; 859623: using std::wcstoll; 859623: using std::wcstoull; 859623: 859623: } 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 55 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 3 859623: 859623: # 55 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: # 66 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 3 859623: typedef long long int streamoff; 859623: 859623: 859623: 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: typedef ptrdiff_t streamsize; 859623: # 86 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 3 859623: template 859623: class fpos 859623: { 859623: private: 859623: streamoff _M_off; 859623: _StateT _M_state; 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: fpos() 859623: : _M_off(0), _M_state() { } 859623: # 108 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 3 859623: fpos(streamoff __off) 859623: : _M_off(__off), _M_state() { } 859623: 859623: 859623: fpos(const fpos&) = default; 859623: fpos& operator=(const fpos&) = default; 859623: ~fpos() = default; 859623: 859623: 859623: 859623: operator streamoff() const { return _M_off; } 859623: 859623: 859623: void 859623: state(_StateT __st) 859623: { _M_state = __st; } 859623: 859623: 859623: _StateT 859623: state() const 859623: { return _M_state; } 859623: 859623: 859623: 859623: 859623: 859623: fpos& 859623: operator+=(streamoff __off) 859623: { 859623: _M_off += __off; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: fpos& 859623: operator-=(streamoff __off) 859623: { 859623: _M_off -= __off; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: fpos 859623: operator+(streamoff __off) const 859623: { 859623: fpos __pos(*this); 859623: __pos += __off; 859623: return __pos; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: fpos 859623: operator-(streamoff __off) const 859623: { 859623: fpos __pos(*this); 859623: __pos -= __off; 859623: return __pos; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: streamoff 859623: operator-(const fpos& __other) const 859623: { return _M_off - __other._M_off; } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: inline bool 859623: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 859623: { return streamoff(__lhs) == streamoff(__rhs); } 859623: 859623: template 859623: inline bool 859623: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 859623: { return streamoff(__lhs) != streamoff(__rhs); } 859623: 859623: 859623: 859623: 859623: 859623: typedef fpos streampos; 859623: 859623: typedef fpos wstreampos; 859623: # 220 "/usr/arm-linux-gnueabi/include/c++/15/bits/postypes.h" 3 859623: typedef fpos u16streampos; 859623: 859623: typedef fpos u32streampos; 859623: 859623: 859623: 859623: } 859623: # 45 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 1 3 859623: # 66 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 67 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 2 3 859623: 859623: extern "C++" 859623: { 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: template 859623: class reference_wrapper; 859623: # 91 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct integral_constant 859623: { 859623: static constexpr _Tp value = __v; 859623: using value_type = _Tp; 859623: using type = integral_constant<_Tp, __v>; 859623: constexpr operator value_type() const noexcept { return value; } 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template 859623: constexpr _Tp integral_constant<_Tp, __v>::value; 859623: 859623: 859623: 859623: 859623: template 859623: using __bool_constant = integral_constant; 859623: 859623: 859623: 859623: using true_type = __bool_constant; 859623: 859623: 859623: using false_type = __bool_constant; 859623: # 132 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct enable_if 859623: { }; 859623: 859623: 859623: template 859623: struct enable_if 859623: { using type = _Tp; }; 859623: 859623: 859623: template 859623: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; 859623: 859623: template 859623: struct __conditional 859623: { 859623: template 859623: using type = _Tp; 859623: }; 859623: 859623: template<> 859623: struct __conditional 859623: { 859623: template 859623: using type = _Up; 859623: }; 859623: 859623: 859623: template 859623: using __conditional_t 859623: = typename __conditional<_Cond>::template type<_If, _Else>; 859623: 859623: 859623: template 859623: struct __type_identity 859623: { using type = _Type; }; 859623: 859623: template 859623: using __type_identity_t = typename __type_identity<_Tp>::type; 859623: 859623: namespace __detail 859623: { 859623: 859623: template 859623: using __first_t = _Tp; 859623: 859623: 859623: template 859623: auto __or_fn(int) -> __first_t...>; 859623: 859623: template 859623: auto __or_fn(...) -> true_type; 859623: 859623: template 859623: auto __and_fn(int) -> __first_t...>; 859623: 859623: template 859623: auto __and_fn(...) -> false_type; 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: struct __or_ 859623: : decltype(__detail::__or_fn<_Bn...>(0)) 859623: { }; 859623: 859623: template 859623: struct __and_ 859623: : decltype(__detail::__and_fn<_Bn...>(0)) 859623: { }; 859623: 859623: template 859623: struct __not_ 859623: : __bool_constant 859623: { }; 859623: # 282 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_reference; 859623: template 859623: struct is_function; 859623: template 859623: struct is_void; 859623: template 859623: struct remove_cv; 859623: template 859623: struct is_const; 859623: 859623: 859623: template 859623: struct __is_array_unknown_bounds; 859623: 859623: 859623: 859623: 859623: template 859623: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) 859623: { return {}; } 859623: 859623: template 859623: constexpr typename __or_< 859623: is_reference<_NestedType>, 859623: is_function<_NestedType>, 859623: is_void<_NestedType>, 859623: __is_array_unknown_bounds<_NestedType> 859623: >::type __is_complete_or_unbounded(_TypeIdentity) 859623: { return {}; } 859623: 859623: 859623: template 859623: using __remove_cv_t = typename remove_cv<_Tp>::type; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_void 859623: : public false_type { }; 859623: 859623: template<> 859623: struct is_void 859623: : public true_type { }; 859623: 859623: template<> 859623: struct is_void 859623: : public true_type { }; 859623: 859623: template<> 859623: struct is_void 859623: : public true_type { }; 859623: 859623: template<> 859623: struct is_void 859623: : public true_type { }; 859623: 859623: 859623: template 859623: struct __is_integral_helper 859623: : public false_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_integral_helper 859623: : public true_type { }; 859623: # 465 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_integral 859623: : public __is_integral_helper<__remove_cv_t<_Tp>>::type 859623: { }; 859623: 859623: 859623: template 859623: struct __is_floating_point_helper 859623: : public false_type { }; 859623: 859623: template<> 859623: struct __is_floating_point_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_floating_point_helper 859623: : public true_type { }; 859623: 859623: template<> 859623: struct __is_floating_point_helper 859623: : public true_type { }; 859623: # 525 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_floating_point 859623: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct is_array 859623: : public __bool_constant<__is_array(_Tp)> 859623: { }; 859623: # 552 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_pointer 859623: : public __bool_constant<__is_pointer(_Tp)> 859623: { }; 859623: # 579 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_lvalue_reference 859623: : public false_type { }; 859623: 859623: template 859623: struct is_lvalue_reference<_Tp&> 859623: : public true_type { }; 859623: 859623: 859623: template 859623: struct is_rvalue_reference 859623: : public false_type { }; 859623: 859623: template 859623: struct is_rvalue_reference<_Tp&&> 859623: : public true_type { }; 859623: 859623: 859623: 859623: template 859623: struct is_member_object_pointer 859623: : public __bool_constant<__is_member_object_pointer(_Tp)> 859623: { }; 859623: # 620 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_member_function_pointer 859623: : public __bool_constant<__is_member_function_pointer(_Tp)> 859623: { }; 859623: # 641 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_enum 859623: : public __bool_constant<__is_enum(_Tp)> 859623: { }; 859623: 859623: 859623: template 859623: struct is_union 859623: : public __bool_constant<__is_union(_Tp)> 859623: { }; 859623: 859623: 859623: template 859623: struct is_class 859623: : public __bool_constant<__is_class(_Tp)> 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct is_function 859623: : public __bool_constant<__is_function(_Tp)> 859623: { }; 859623: # 680 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_null_pointer 859623: : public false_type { }; 859623: 859623: template<> 859623: struct is_null_pointer 859623: : public true_type { }; 859623: 859623: template<> 859623: struct is_null_pointer 859623: : public true_type { }; 859623: 859623: template<> 859623: struct is_null_pointer 859623: : public true_type { }; 859623: 859623: template<> 859623: struct is_null_pointer 859623: : public true_type { }; 859623: 859623: 859623: 859623: template 859623: struct __is_nullptr_t 859623: : public is_null_pointer<_Tp> 859623: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead"))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_reference 859623: : public __bool_constant<__is_reference(_Tp)> 859623: { }; 859623: # 734 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_arithmetic 859623: : public __or_, is_floating_point<_Tp>>::type 859623: { }; 859623: 859623: 859623: template 859623: struct is_fundamental 859623: : public __or_, is_void<_Tp>, 859623: is_null_pointer<_Tp>>::type 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct is_object 859623: : public __bool_constant<__is_object(_Tp)> 859623: { }; 859623: # 760 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_member_pointer; 859623: 859623: 859623: template 859623: struct is_scalar 859623: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 859623: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 859623: { }; 859623: 859623: 859623: template 859623: struct is_compound 859623: : public __bool_constant::value> { }; 859623: 859623: 859623: 859623: template 859623: struct is_member_pointer 859623: : public __bool_constant<__is_member_pointer(_Tp)> 859623: { }; 859623: # 798 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_same; 859623: 859623: 859623: template 859623: using __is_one_of = __or_...>; 859623: 859623: 859623: __extension__ 859623: template 859623: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, 859623: signed char, signed short, signed int, signed long, 859623: signed long long 859623: # 823 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: >; 859623: 859623: 859623: __extension__ 859623: template 859623: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, 859623: unsigned char, unsigned short, unsigned int, unsigned long, 859623: unsigned long long 859623: # 843 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: >; 859623: 859623: 859623: template 859623: using __is_standard_integer 859623: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>; 859623: 859623: 859623: template using __void_t = void; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_const 859623: : public __bool_constant<__is_const(_Tp)> 859623: { }; 859623: # 874 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_volatile 859623: : public __bool_constant<__is_volatile(_Tp)> 859623: { }; 859623: # 895 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct 859623: 859623: is_trivial 859623: : public __bool_constant<__is_trivial(_Tp)> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_trivially_copyable 859623: : public __bool_constant<__is_trivially_copyable(_Tp)> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_standard_layout 859623: : public __bool_constant<__is_standard_layout(_Tp)> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct 859623: 859623: is_pod 859623: : public __bool_constant<__is_pod(_Tp)> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct 859623: 859623: is_literal_type 859623: : public __bool_constant<__is_literal_type(_Tp)> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_empty 859623: : public __bool_constant<__is_empty(_Tp)> 859623: { }; 859623: 859623: 859623: template 859623: struct is_polymorphic 859623: : public __bool_constant<__is_polymorphic(_Tp)> 859623: { }; 859623: # 974 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_abstract 859623: : public __bool_constant<__is_abstract(_Tp)> 859623: { }; 859623: 859623: 859623: template::value> 859623: struct __is_signed_helper 859623: : public false_type { }; 859623: 859623: template 859623: struct __is_signed_helper<_Tp, true> 859623: : public __bool_constant<_Tp(-1) < _Tp(0)> 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct is_signed 859623: : public __is_signed_helper<_Tp>::type 859623: { }; 859623: 859623: 859623: template 859623: struct is_unsigned 859623: : public __and_, __not_>>::type 859623: { }; 859623: 859623: 859623: template 859623: _Up 859623: __declval(int); 859623: 859623: template 859623: _Tp 859623: __declval(long); 859623: 859623: 859623: template 859623: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 859623: 859623: template 859623: struct remove_all_extents; 859623: 859623: 859623: template 859623: struct __is_array_known_bounds 859623: : public false_type 859623: { }; 859623: 859623: template 859623: struct __is_array_known_bounds<_Tp[_Size]> 859623: : public true_type 859623: { }; 859623: 859623: template 859623: struct __is_array_unknown_bounds 859623: : public false_type 859623: { }; 859623: 859623: template 859623: struct __is_array_unknown_bounds<_Tp[]> 859623: : public true_type 859623: { }; 859623: # 1047 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: struct __do_is_destructible_impl 859623: { 859623: template().~_Tp())> 859623: static true_type __test(int); 859623: 859623: template 859623: static false_type __test(...); 859623: }; 859623: 859623: template 859623: struct __is_destructible_impl 859623: : public __do_is_destructible_impl 859623: { 859623: using type = decltype(__test<_Tp>(0)); 859623: }; 859623: 859623: template, 859623: __is_array_unknown_bounds<_Tp>, 859623: is_function<_Tp>>::value, 859623: bool = __or_, is_scalar<_Tp>>::value> 859623: struct __is_destructible_safe; 859623: 859623: template 859623: struct __is_destructible_safe<_Tp, false, false> 859623: : public __is_destructible_impl::type>::type 859623: { }; 859623: 859623: template 859623: struct __is_destructible_safe<_Tp, true, false> 859623: : public false_type { }; 859623: 859623: template 859623: struct __is_destructible_safe<_Tp, false, true> 859623: : public true_type { }; 859623: 859623: 859623: 859623: template 859623: struct is_destructible 859623: : public __is_destructible_safe<_Tp>::type 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct __do_is_nt_destructible_impl 859623: { 859623: template 859623: static __bool_constant().~_Tp())> 859623: __test(int); 859623: 859623: template 859623: static false_type __test(...); 859623: }; 859623: 859623: template 859623: struct __is_nt_destructible_impl 859623: : public __do_is_nt_destructible_impl 859623: { 859623: using type = decltype(__test<_Tp>(0)); 859623: }; 859623: 859623: template, 859623: __is_array_unknown_bounds<_Tp>, 859623: is_function<_Tp>>::value, 859623: bool = __or_, is_scalar<_Tp>>::value> 859623: struct __is_nt_destructible_safe; 859623: 859623: template 859623: struct __is_nt_destructible_safe<_Tp, false, false> 859623: : public __is_nt_destructible_impl::type>::type 859623: { }; 859623: 859623: template 859623: struct __is_nt_destructible_safe<_Tp, true, false> 859623: : public false_type { }; 859623: 859623: template 859623: struct __is_nt_destructible_safe<_Tp, false, true> 859623: : public true_type { }; 859623: 859623: 859623: 859623: template 859623: struct is_nothrow_destructible 859623: : public __is_nt_destructible_safe<_Tp>::type 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: using __is_constructible_impl 859623: = __bool_constant<__is_constructible(_Tp, _Args...)>; 859623: 859623: 859623: 859623: template 859623: struct is_constructible 859623: : public __is_constructible_impl<_Tp, _Args...> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_default_constructible 859623: : public __is_constructible_impl<_Tp> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: template 859623: using __add_lval_ref_t = __add_lvalue_reference(_Tp); 859623: # 1191 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_copy_constructible 859623: : public __is_constructible_impl<_Tp, __add_lval_ref_t> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: template 859623: using __add_rval_ref_t = __add_rvalue_reference(_Tp); 859623: # 1218 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_move_constructible 859623: : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: using __is_nothrow_constructible_impl 859623: = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; 859623: 859623: 859623: 859623: template 859623: struct is_nothrow_constructible 859623: : public __is_nothrow_constructible_impl<_Tp, _Args...> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_nothrow_default_constructible 859623: : public __is_nothrow_constructible_impl<_Tp> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_nothrow_copy_constructible 859623: : public __is_nothrow_constructible_impl<_Tp, __add_lval_ref_t> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_nothrow_move_constructible 859623: : public __is_nothrow_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; 859623: 859623: 859623: 859623: template 859623: struct is_assignable 859623: : public __is_assignable_impl<_Tp, _Up> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_copy_assignable 859623: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, 859623: __add_lval_ref_t> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_move_assignable 859623: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: using __is_nothrow_assignable_impl 859623: = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>; 859623: 859623: 859623: 859623: template 859623: struct is_nothrow_assignable 859623: : public __is_nothrow_assignable_impl<_Tp, _Up> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_nothrow_copy_assignable 859623: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, 859623: __add_lval_ref_t> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_nothrow_move_assignable 859623: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, 859623: __add_rval_ref_t<_Tp>> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: using __is_trivially_constructible_impl 859623: = __bool_constant<__is_trivially_constructible(_Tp, _Args...)>; 859623: 859623: 859623: 859623: template 859623: struct is_trivially_constructible 859623: : public __is_trivially_constructible_impl<_Tp, _Args...> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_trivially_default_constructible 859623: : public __is_trivially_constructible_impl<_Tp> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: # 1370 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: struct __do_is_implicitly_default_constructible_impl 859623: { 859623: template 859623: static void __helper(const _Tp&); 859623: 859623: template 859623: static true_type __test(const _Tp&, 859623: decltype(__helper({}))* = 0); 859623: 859623: static false_type __test(...); 859623: }; 859623: 859623: template 859623: struct __is_implicitly_default_constructible_impl 859623: : public __do_is_implicitly_default_constructible_impl 859623: { 859623: using type = decltype(__test(declval<_Tp>())); 859623: }; 859623: 859623: template 859623: struct __is_implicitly_default_constructible_safe 859623: : public __is_implicitly_default_constructible_impl<_Tp>::type 859623: { }; 859623: 859623: template 859623: struct __is_implicitly_default_constructible 859623: : public __and_<__is_constructible_impl<_Tp>, 859623: __is_implicitly_default_constructible_safe<_Tp>>::type 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct is_trivially_copy_constructible 859623: : public __is_trivially_constructible_impl<_Tp, __add_lval_ref_t> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_trivially_move_constructible 859623: : public __is_trivially_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: using __is_trivially_assignable_impl 859623: = __bool_constant<__is_trivially_assignable(_Tp, _Up)>; 859623: 859623: 859623: 859623: template 859623: struct is_trivially_assignable 859623: : public __is_trivially_assignable_impl<_Tp, _Up> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_trivially_copy_assignable 859623: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, 859623: __add_lval_ref_t> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_trivially_move_assignable 859623: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, 859623: __add_rval_ref_t<_Tp>> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: template 859623: struct is_trivially_destructible 859623: : public __and_<__is_destructible_safe<_Tp>, 859623: __bool_constant<__has_trivial_destructor(_Tp)>>::type 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: template 859623: struct has_virtual_destructor 859623: : public __bool_constant<__has_virtual_destructor(_Tp)> 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct alignment_of 859623: : public integral_constant 859623: { 859623: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 859623: "template argument must be a complete class or an unbounded array"); 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct rank 859623: : public integral_constant { }; 859623: # 1507 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct extent 859623: : public integral_constant { }; 859623: 859623: template 859623: struct extent<_Tp[_Size], 0> 859623: : public integral_constant { }; 859623: 859623: template 859623: struct extent<_Tp[_Size], _Uint> 859623: : public extent<_Tp, _Uint - 1>::type { }; 859623: 859623: template 859623: struct extent<_Tp[], 0> 859623: : public integral_constant { }; 859623: 859623: template 859623: struct extent<_Tp[], _Uint> 859623: : public extent<_Tp, _Uint - 1>::type { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_same 859623: : public __bool_constant<__is_same(_Tp, _Up)> 859623: { }; 859623: # 1549 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_base_of 859623: : public __bool_constant<__is_base_of(_Base, _Derived)> 859623: { }; 859623: # 1564 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct is_convertible 859623: : public __bool_constant<__is_convertible(_From, _To)> 859623: { }; 859623: # 1607 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: using __is_array_convertible 859623: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; 859623: # 1667 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++14-extensions" 859623: template 859623: struct __is_nothrow_new_constructible_impl 859623: : __bool_constant< 859623: noexcept(::new(std::declval()) _Tp(std::declval<_Args>()...)) 859623: > 859623: { }; 859623: 859623: template 859623: constexpr bool __is_nothrow_new_constructible 859623: = __and_, 859623: __is_nothrow_new_constructible_impl<_Tp, _Args...>>::value; 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: 859623: template 859623: struct remove_const 859623: { using type = _Tp; }; 859623: 859623: template 859623: struct remove_const<_Tp const> 859623: { using type = _Tp; }; 859623: 859623: 859623: template 859623: struct remove_volatile 859623: { using type = _Tp; }; 859623: 859623: template 859623: struct remove_volatile<_Tp volatile> 859623: { using type = _Tp; }; 859623: 859623: 859623: 859623: template 859623: struct remove_cv 859623: { using type = __remove_cv(_Tp); }; 859623: # 1726 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct add_const 859623: { using type = _Tp const; }; 859623: 859623: 859623: template 859623: struct add_volatile 859623: { using type = _Tp volatile; }; 859623: 859623: 859623: template 859623: struct add_cv 859623: { using type = _Tp const volatile; }; 859623: # 1770 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct remove_reference 859623: { using type = __remove_reference(_Tp); }; 859623: # 1788 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct add_lvalue_reference 859623: { using type = __add_lval_ref_t<_Tp>; }; 859623: 859623: 859623: template 859623: struct add_rvalue_reference 859623: { using type = __add_rval_ref_t<_Tp>; }; 859623: # 1816 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct __cv_selector; 859623: 859623: template 859623: struct __cv_selector<_Unqualified, false, false> 859623: { using __type = _Unqualified; }; 859623: 859623: template 859623: struct __cv_selector<_Unqualified, false, true> 859623: { using __type = volatile _Unqualified; }; 859623: 859623: template 859623: struct __cv_selector<_Unqualified, true, false> 859623: { using __type = const _Unqualified; }; 859623: 859623: template 859623: struct __cv_selector<_Unqualified, true, true> 859623: { using __type = const volatile _Unqualified; }; 859623: 859623: template::value, 859623: bool _IsVol = is_volatile<_Qualified>::value> 859623: class __match_cv_qualifiers 859623: { 859623: using __match = __cv_selector<_Unqualified, _IsConst, _IsVol>; 859623: 859623: public: 859623: using __type = typename __match::__type; 859623: }; 859623: 859623: 859623: template 859623: struct __make_unsigned 859623: { using __type = _Tp; }; 859623: 859623: template<> 859623: struct __make_unsigned 859623: { using __type = unsigned char; }; 859623: 859623: template<> 859623: struct __make_unsigned 859623: { using __type = unsigned char; }; 859623: 859623: template<> 859623: struct __make_unsigned 859623: { using __type = unsigned short; }; 859623: 859623: template<> 859623: struct __make_unsigned 859623: { using __type = unsigned int; }; 859623: 859623: template<> 859623: struct __make_unsigned 859623: { using __type = unsigned long; }; 859623: 859623: template<> 859623: struct __make_unsigned 859623: { using __type = unsigned long long; }; 859623: # 1901 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template::value, 859623: bool _IsEnum = __is_enum(_Tp)> 859623: class __make_unsigned_selector; 859623: 859623: template 859623: class __make_unsigned_selector<_Tp, true, false> 859623: { 859623: using __unsigned_type 859623: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; 859623: 859623: public: 859623: using __type 859623: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 859623: }; 859623: 859623: class __make_unsigned_selector_base 859623: { 859623: protected: 859623: template struct _List { }; 859623: 859623: template 859623: struct _List<_Tp, _Up...> : _List<_Up...> 859623: { static constexpr size_t __size = sizeof(_Tp); }; 859623: 859623: template 859623: struct __select; 859623: 859623: template 859623: struct __select<_Sz, _List<_Uint, _UInts...>, true> 859623: { using __type = _Uint; }; 859623: 859623: template 859623: struct __select<_Sz, _List<_Uint, _UInts...>, false> 859623: : __select<_Sz, _List<_UInts...>> 859623: { }; 859623: }; 859623: 859623: 859623: template 859623: class __make_unsigned_selector<_Tp, false, true> 859623: : __make_unsigned_selector_base 859623: { 859623: 859623: using _UInts = _List; 859623: 859623: using __unsigned_type = typename __select::__type; 859623: 859623: public: 859623: using __type 859623: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: template<> 859623: struct __make_unsigned 859623: { 859623: using __type 859623: = typename __make_unsigned_selector::__type; 859623: }; 859623: # 1975 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template<> 859623: struct __make_unsigned 859623: { 859623: using __type 859623: = typename __make_unsigned_selector::__type; 859623: }; 859623: 859623: template<> 859623: struct __make_unsigned 859623: { 859623: using __type 859623: = typename __make_unsigned_selector::__type; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct make_unsigned 859623: { using type = typename __make_unsigned_selector<_Tp>::__type; }; 859623: 859623: 859623: template<> struct make_unsigned; 859623: template<> struct make_unsigned; 859623: template<> struct make_unsigned; 859623: template<> struct make_unsigned; 859623: 859623: 859623: 859623: 859623: template 859623: struct __make_signed 859623: { using __type = _Tp; }; 859623: 859623: template<> 859623: struct __make_signed 859623: { using __type = signed char; }; 859623: 859623: template<> 859623: struct __make_signed 859623: { using __type = signed char; }; 859623: 859623: template<> 859623: struct __make_signed 859623: { using __type = signed short; }; 859623: 859623: template<> 859623: struct __make_signed 859623: { using __type = signed int; }; 859623: 859623: template<> 859623: struct __make_signed 859623: { using __type = signed long; }; 859623: 859623: template<> 859623: struct __make_signed 859623: { using __type = signed long long; }; 859623: # 2061 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template::value, 859623: bool _IsEnum = __is_enum(_Tp)> 859623: class __make_signed_selector; 859623: 859623: template 859623: class __make_signed_selector<_Tp, true, false> 859623: { 859623: using __signed_type 859623: = typename __make_signed<__remove_cv_t<_Tp>>::__type; 859623: 859623: public: 859623: using __type 859623: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; 859623: }; 859623: 859623: 859623: template 859623: class __make_signed_selector<_Tp, false, true> 859623: { 859623: using __unsigned_type = typename __make_unsigned_selector<_Tp>::__type; 859623: 859623: public: 859623: using __type = typename __make_signed_selector<__unsigned_type>::__type; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: template<> 859623: struct __make_signed 859623: { 859623: using __type 859623: = typename __make_signed_selector::__type; 859623: }; 859623: # 2107 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template<> 859623: struct __make_signed 859623: { 859623: using __type 859623: = typename __make_signed_selector::__type; 859623: }; 859623: 859623: template<> 859623: struct __make_signed 859623: { 859623: using __type 859623: = typename __make_signed_selector::__type; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct make_signed 859623: { using type = typename __make_signed_selector<_Tp>::__type; }; 859623: 859623: 859623: template<> struct make_signed; 859623: template<> struct make_signed; 859623: template<> struct make_signed; 859623: template<> struct make_signed; 859623: # 2150 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct remove_extent 859623: { using type = __remove_extent(_Tp); }; 859623: # 2169 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct remove_all_extents 859623: { using type = __remove_all_extents(_Tp); }; 859623: # 2200 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct remove_pointer 859623: { using type = __remove_pointer(_Tp); }; 859623: # 2220 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct add_pointer 859623: { using type = __add_pointer(_Tp); }; 859623: # 2259 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: struct __attribute__((__aligned__)) __aligned_storage_max_align_t 859623: { }; 859623: 859623: constexpr size_t 859623: __aligned_storage_default_alignment([[__maybe_unused__]] size_t __len) 859623: { 859623: # 2279 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: return alignof(__aligned_storage_max_align_t); 859623: 859623: } 859623: # 2315 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct 859623: 859623: aligned_storage 859623: { 859623: struct type 859623: { 859623: alignas(_Align) unsigned char __data[_Len]; 859623: }; 859623: }; 859623: 859623: template 859623: struct __strictest_alignment 859623: { 859623: static const size_t _S_alignment = 0; 859623: static const size_t _S_size = 0; 859623: }; 859623: 859623: template 859623: struct __strictest_alignment<_Tp, _Types...> 859623: { 859623: static const size_t _S_alignment = 859623: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 859623: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 859623: static const size_t _S_size = 859623: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 859623: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 859623: }; 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: # 2360 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct 859623: 859623: aligned_union 859623: { 859623: private: 859623: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 859623: 859623: using __strictest = __strictest_alignment<_Types...>; 859623: static const size_t _S_len = _Len > __strictest::_S_size 859623: ? _Len : __strictest::_S_size; 859623: public: 859623: 859623: static const size_t alignment_value = __strictest::_S_alignment; 859623: 859623: using type = typename aligned_storage<_S_len, alignment_value>::type; 859623: }; 859623: 859623: template 859623: const size_t aligned_union<_Len, _Types...>::alignment_value; 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: 859623: template 859623: struct decay 859623: { using type = __decay(_Tp); }; 859623: # 2425 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct __strip_reference_wrapper 859623: { 859623: using __type = _Tp; 859623: }; 859623: 859623: template 859623: struct __strip_reference_wrapper > 859623: { 859623: using __type = _Tp&; 859623: }; 859623: 859623: 859623: template 859623: using __decay_t = typename decay<_Tp>::type; 859623: 859623: template 859623: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: using _Require = __enable_if_t<__and_<_Cond...>::value>; 859623: 859623: 859623: template 859623: using __remove_cvref_t 859623: = typename remove_cv::type>::type; 859623: 859623: 859623: 859623: 859623: template 859623: struct conditional 859623: { using type = _Iftrue; }; 859623: 859623: 859623: template 859623: struct conditional 859623: { using type = _Iffalse; }; 859623: 859623: 859623: template 859623: struct common_type; 859623: # 2481 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct __success_type 859623: { using type = _Tp; }; 859623: 859623: struct __failure_type 859623: { }; 859623: 859623: struct __do_common_type_impl 859623: { 859623: template 859623: using __cond_t 859623: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); 859623: 859623: 859623: 859623: template 859623: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> 859623: _S_test(int); 859623: # 2508 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: static __failure_type 859623: _S_test_2(...); 859623: 859623: template 859623: static decltype(_S_test_2<_Tp, _Up>(0)) 859623: _S_test(...); 859623: }; 859623: 859623: 859623: template<> 859623: struct common_type<> 859623: { }; 859623: 859623: 859623: template 859623: struct common_type<_Tp0> 859623: : public common_type<_Tp0, _Tp0> 859623: { }; 859623: 859623: 859623: template, typename _Dp2 = __decay_t<_Tp2>> 859623: struct __common_type_impl 859623: { 859623: 859623: 859623: using type = common_type<_Dp1, _Dp2>; 859623: }; 859623: 859623: template 859623: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> 859623: : private __do_common_type_impl 859623: { 859623: 859623: 859623: using type = decltype(_S_test<_Tp1, _Tp2>(0)); 859623: }; 859623: 859623: 859623: template 859623: struct common_type<_Tp1, _Tp2> 859623: : public __common_type_impl<_Tp1, _Tp2>::type 859623: { }; 859623: 859623: template 859623: struct __common_type_pack 859623: { }; 859623: 859623: template 859623: struct __common_type_fold; 859623: 859623: 859623: template 859623: struct common_type<_Tp1, _Tp2, _Rp...> 859623: : public __common_type_fold, 859623: __common_type_pack<_Rp...>> 859623: { }; 859623: 859623: 859623: 859623: 859623: template 859623: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, 859623: __void_t> 859623: : public common_type 859623: { }; 859623: 859623: 859623: template 859623: struct __common_type_fold<_CTp, _Rp, void> 859623: { }; 859623: 859623: template 859623: struct __underlying_type_impl 859623: { 859623: using type = __underlying_type(_Tp); 859623: }; 859623: 859623: template 859623: struct __underlying_type_impl<_Tp, false> 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct underlying_type 859623: : public __underlying_type_impl<_Tp> 859623: { }; 859623: 859623: 859623: template 859623: struct __declval_protector 859623: { 859623: static const bool __stop = false; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 859623: { 859623: static_assert(__declval_protector<_Tp>::__stop, 859623: "declval() must not be used!"); 859623: return __declval<_Tp>(0); 859623: } 859623: 859623: 859623: template 859623: struct result_of; 859623: 859623: 859623: 859623: 859623: struct __invoke_memfun_ref { }; 859623: struct __invoke_memfun_deref { }; 859623: struct __invoke_memobj_ref { }; 859623: struct __invoke_memobj_deref { }; 859623: struct __invoke_other { }; 859623: 859623: 859623: template 859623: struct __result_of_success : __success_type<_Tp> 859623: { using __invoke_type = _Tag; }; 859623: 859623: 859623: struct __result_of_memfun_ref_impl 859623: { 859623: template 859623: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 859623: ), __invoke_memfun_ref> _S_test(int); 859623: 859623: template 859623: static __failure_type _S_test(...); 859623: }; 859623: 859623: template 859623: struct __result_of_memfun_ref 859623: : private __result_of_memfun_ref_impl 859623: { 859623: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); 859623: }; 859623: 859623: 859623: struct __result_of_memfun_deref_impl 859623: { 859623: template 859623: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 859623: ), __invoke_memfun_deref> _S_test(int); 859623: 859623: template 859623: static __failure_type _S_test(...); 859623: }; 859623: 859623: template 859623: struct __result_of_memfun_deref 859623: : private __result_of_memfun_deref_impl 859623: { 859623: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); 859623: }; 859623: 859623: 859623: struct __result_of_memobj_ref_impl 859623: { 859623: template 859623: static __result_of_success().*std::declval<_Fp>() 859623: ), __invoke_memobj_ref> _S_test(int); 859623: 859623: template 859623: static __failure_type _S_test(...); 859623: }; 859623: 859623: template 859623: struct __result_of_memobj_ref 859623: : private __result_of_memobj_ref_impl 859623: { 859623: using type = decltype(_S_test<_MemPtr, _Arg>(0)); 859623: }; 859623: 859623: 859623: struct __result_of_memobj_deref_impl 859623: { 859623: template 859623: static __result_of_success()).*std::declval<_Fp>() 859623: ), __invoke_memobj_deref> _S_test(int); 859623: 859623: template 859623: static __failure_type _S_test(...); 859623: }; 859623: 859623: template 859623: struct __result_of_memobj_deref 859623: : private __result_of_memobj_deref_impl 859623: { 859623: using type = decltype(_S_test<_MemPtr, _Arg>(0)); 859623: }; 859623: 859623: template 859623: struct __result_of_memobj; 859623: 859623: template 859623: struct __result_of_memobj<_Res _Class::*, _Arg> 859623: { 859623: using _Argval = __remove_cvref_t<_Arg>; 859623: using _MemPtr = _Res _Class::*; 859623: using type = typename __conditional_t<__or_, 859623: is_base_of<_Class, _Argval>>::value, 859623: __result_of_memobj_ref<_MemPtr, _Arg>, 859623: __result_of_memobj_deref<_MemPtr, _Arg> 859623: >::type; 859623: }; 859623: 859623: template 859623: struct __result_of_memfun; 859623: 859623: template 859623: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 859623: { 859623: using _Argval = typename remove_reference<_Arg>::type; 859623: using _MemPtr = _Res _Class::*; 859623: using type = typename __conditional_t::value, 859623: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 859623: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 859623: >::type; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template> 859623: struct __inv_unwrap 859623: { 859623: using type = _Tp; 859623: }; 859623: 859623: template 859623: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 859623: { 859623: using type = _Up&; 859623: }; 859623: 859623: template 859623: struct __result_of_impl 859623: { 859623: using type = __failure_type; 859623: }; 859623: 859623: template 859623: struct __result_of_impl 859623: : public __result_of_memobj<__decay_t<_MemPtr>, 859623: typename __inv_unwrap<_Arg>::type> 859623: { }; 859623: 859623: template 859623: struct __result_of_impl 859623: : public __result_of_memfun<__decay_t<_MemPtr>, 859623: typename __inv_unwrap<_Arg>::type, _Args...> 859623: { }; 859623: 859623: 859623: struct __result_of_other_impl 859623: { 859623: template 859623: static __result_of_success()(std::declval<_Args>()...) 859623: ), __invoke_other> _S_test(int); 859623: 859623: template 859623: static __failure_type _S_test(...); 859623: }; 859623: 859623: template 859623: struct __result_of_impl 859623: : private __result_of_other_impl 859623: { 859623: using type = decltype(_S_test<_Functor, _ArgTypes...>(0)); 859623: }; 859623: 859623: 859623: template 859623: struct __invoke_result 859623: : public __result_of_impl< 859623: is_member_object_pointer< 859623: typename remove_reference<_Functor>::type 859623: >::value, 859623: is_member_function_pointer< 859623: typename remove_reference<_Functor>::type 859623: >::value, 859623: _Functor, _ArgTypes... 859623: >::type 859623: { }; 859623: 859623: 859623: template 859623: using __invoke_result_t = typename __invoke_result<_Fn, _Args...>::type; 859623: 859623: 859623: template 859623: struct result_of<_Functor(_ArgTypes...)> 859623: : public __invoke_result<_Functor, _ArgTypes...> 859623: { } ; 859623: # 2885 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template class _Op, typename... _Args> 859623: struct __detector 859623: { 859623: using type = _Default; 859623: using __is_detected = false_type; 859623: }; 859623: 859623: 859623: template class _Op, 859623: typename... _Args> 859623: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 859623: { 859623: using type = _Op<_Args...>; 859623: using __is_detected = true_type; 859623: }; 859623: 859623: template class _Op, 859623: typename... _Args> 859623: using __detected_or = __detector<_Default, void, _Op, _Args...>; 859623: 859623: 859623: 859623: template class _Op, 859623: typename... _Args> 859623: using __detected_or_t 859623: = typename __detected_or<_Default, _Op, _Args...>::type; 859623: # 2927 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template 859623: struct __is_swappable; 859623: 859623: template 859623: struct __is_nothrow_swappable; 859623: 859623: template 859623: struct __is_tuple_like_impl : false_type 859623: { }; 859623: 859623: 859623: template 859623: struct __is_tuple_like 859623: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type 859623: { }; 859623: 859623: 859623: template 859623: 859623: inline 859623: _Require<__not_<__is_tuple_like<_Tp>>, 859623: is_move_constructible<_Tp>, 859623: is_move_assignable<_Tp>> 859623: swap(_Tp&, _Tp&) 859623: noexcept(__and_, 859623: is_nothrow_move_assignable<_Tp>>::value); 859623: 859623: template 859623: 859623: inline 859623: __enable_if_t<__is_swappable<_Tp>::value> 859623: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 859623: noexcept(__is_nothrow_swappable<_Tp>::value); 859623: 859623: 859623: namespace __swappable_details { 859623: using std::swap; 859623: 859623: struct __do_is_swappable_impl 859623: { 859623: template(), std::declval<_Tp&>()))> 859623: static true_type __test(int); 859623: 859623: template 859623: static false_type __test(...); 859623: }; 859623: 859623: struct __do_is_nothrow_swappable_impl 859623: { 859623: template 859623: static __bool_constant< 859623: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 859623: > __test(int); 859623: 859623: template 859623: static false_type __test(...); 859623: }; 859623: 859623: } 859623: 859623: template 859623: struct __is_swappable_impl 859623: : public __swappable_details::__do_is_swappable_impl 859623: { 859623: using type = decltype(__test<_Tp>(0)); 859623: }; 859623: 859623: template 859623: struct __is_nothrow_swappable_impl 859623: : public __swappable_details::__do_is_nothrow_swappable_impl 859623: { 859623: using type = decltype(__test<_Tp>(0)); 859623: }; 859623: 859623: template 859623: struct __is_swappable 859623: : public __is_swappable_impl<_Tp>::type 859623: { }; 859623: 859623: template 859623: struct __is_nothrow_swappable 859623: : public __is_nothrow_swappable_impl<_Tp>::type 859623: { }; 859623: # 3149 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: template::value, typename = void> 859623: struct __is_invocable_impl 859623: : false_type 859623: { 859623: using __nothrow_conv = false_type; 859623: }; 859623: 859623: 859623: template 859623: struct __is_invocable_impl<_Result, _Ret, 859623: true, 859623: __void_t> 859623: : true_type 859623: { 859623: using __nothrow_conv = true_type; 859623: }; 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 859623: 859623: template 859623: struct __is_invocable_impl<_Result, _Ret, 859623: false, 859623: __void_t> 859623: { 859623: private: 859623: 859623: using _Res_t = typename _Result::type; 859623: 859623: 859623: 859623: static _Res_t _S_get() noexcept; 859623: 859623: 859623: template 859623: static void _S_conv(__type_identity_t<_Tp>) noexcept; 859623: 859623: 859623: template(_S_get())), 859623: typename = decltype(_S_conv<_Tp>(_S_get())), 859623: 859623: bool _Dangle = __reference_converts_from_temporary(_Tp, _Res_t) 859623: 859623: 859623: 859623: > 859623: static __bool_constant<_Nothrow && !_Dangle> 859623: _S_test(int); 859623: 859623: template 859623: static false_type 859623: _S_test(...); 859623: 859623: public: 859623: 859623: using type = decltype(_S_test<_Ret, true>(1)); 859623: 859623: 859623: using __nothrow_conv = decltype(_S_test<_Ret>(1)); 859623: }; 859623: #pragma GCC diagnostic pop 859623: 859623: template 859623: struct __is_invocable 859623: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 859623: { }; 859623: 859623: template 859623: constexpr bool __call_is_nt(__invoke_memfun_ref) 859623: { 859623: using _Up = typename __inv_unwrap<_Tp>::type; 859623: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 859623: std::declval<_Args>()...)); 859623: } 859623: 859623: template 859623: constexpr bool __call_is_nt(__invoke_memfun_deref) 859623: { 859623: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 859623: std::declval<_Args>()...)); 859623: } 859623: 859623: template 859623: constexpr bool __call_is_nt(__invoke_memobj_ref) 859623: { 859623: using _Up = typename __inv_unwrap<_Tp>::type; 859623: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 859623: } 859623: 859623: template 859623: constexpr bool __call_is_nt(__invoke_memobj_deref) 859623: { 859623: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 859623: } 859623: 859623: template 859623: constexpr bool __call_is_nt(__invoke_other) 859623: { 859623: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 859623: } 859623: 859623: template 859623: struct __call_is_nothrow 859623: : __bool_constant< 859623: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 859623: > 859623: { }; 859623: 859623: template 859623: using __call_is_nothrow_ 859623: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 859623: 859623: 859623: template 859623: struct __is_nothrow_invocable 859623: : __and_<__is_invocable<_Fn, _Args...>, 859623: __call_is_nothrow_<_Fn, _Args...>>::type 859623: { }; 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 859623: struct __nonesuchbase {}; 859623: struct __nonesuch : private __nonesuchbase { 859623: ~__nonesuch() = delete; 859623: __nonesuch(__nonesuch const&) = delete; 859623: void operator=(__nonesuch const&) = delete; 859623: }; 859623: #pragma GCC diagnostic pop 859623: # 4191 "/usr/arm-linux-gnueabi/include/c++/15/type_traits" 3 859623: 859623: } 859623: } 859623: # 53 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 2 3 859623: # 66 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: # 70 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wstringop-overflow" 859623: #pragma GCC diagnostic ignored "-Wstringop-overread" 859623: #pragma GCC diagnostic ignored "-Warray-bounds" 859623: # 85 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: template 859623: struct _Char_types 859623: { 859623: typedef unsigned long int_type; 859623: 859623: typedef std::streampos pos_type; 859623: typedef std::streamoff off_type; 859623: typedef std::mbstate_t state_type; 859623: 859623: }; 859623: # 112 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: template 859623: struct char_traits 859623: { 859623: typedef _CharT char_type; 859623: typedef typename _Char_types<_CharT>::int_type int_type; 859623: 859623: typedef typename _Char_types<_CharT>::pos_type pos_type; 859623: typedef typename _Char_types<_CharT>::off_type off_type; 859623: typedef typename _Char_types<_CharT>::state_type state_type; 859623: 859623: 859623: 859623: 859623: 859623: static void 859623: assign(char_type& __c1, const char_type& __c2) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: __c1 = __c2; 859623: } 859623: 859623: static constexpr bool 859623: eq(const char_type& __c1, const char_type& __c2) 859623: { return __c1 == __c2; } 859623: 859623: static constexpr bool 859623: lt(const char_type& __c1, const char_type& __c2) 859623: { return __c1 < __c2; } 859623: 859623: static int 859623: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); 859623: 859623: static std::size_t 859623: length(const char_type* __s); 859623: 859623: static const char_type* 859623: find(const char_type* __s, std::size_t __n, const char_type& __a); 859623: 859623: static char_type* 859623: move(char_type* __s1, const char_type* __s2, std::size_t __n); 859623: 859623: static char_type* 859623: copy(char_type* __s1, const char_type* __s2, std::size_t __n); 859623: 859623: static char_type* 859623: assign(char_type* __s, std::size_t __n, char_type __a); 859623: 859623: static constexpr char_type 859623: to_char_type(const int_type& __c) 859623: { return static_cast(__c); } 859623: 859623: static constexpr int_type 859623: to_int_type(const char_type& __c) 859623: { return static_cast(__c); } 859623: 859623: static constexpr bool 859623: eq_int_type(const int_type& __c1, const int_type& __c2) 859623: { return __c1 == __c2; } 859623: 859623: 859623: static constexpr int_type 859623: eof() 859623: { return static_cast(-1); } 859623: 859623: static constexpr int_type 859623: not_eof(const int_type& __c) 859623: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } 859623: 859623: }; 859623: 859623: template 859623: int 859623: char_traits<_CharT>:: 859623: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) 859623: { 859623: for (std::size_t __i = 0; __i < __n; ++__i) 859623: if (lt(__s1[__i], __s2[__i])) 859623: return -1; 859623: else if (lt(__s2[__i], __s1[__i])) 859623: return 1; 859623: return 0; 859623: } 859623: 859623: template 859623: std::size_t 859623: char_traits<_CharT>:: 859623: length(const char_type* __p) 859623: { 859623: std::size_t __i = 0; 859623: while (!eq(__p[__i], char_type())) 859623: ++__i; 859623: return __i; 859623: } 859623: 859623: template 859623: const typename char_traits<_CharT>::char_type* 859623: char_traits<_CharT>:: 859623: find(const char_type* __s, std::size_t __n, const char_type& __a) 859623: { 859623: for (std::size_t __i = 0; __i < __n; ++__i) 859623: if (eq(__s[__i], __a)) 859623: return __s + __i; 859623: return 0; 859623: } 859623: 859623: template 859623: 859623: typename char_traits<_CharT>::char_type* 859623: char_traits<_CharT>:: 859623: move(char_type* __s1, const char_type* __s2, std::size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: # 248 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: __builtin_memmove(__s1, __s2, __n * sizeof(char_type)); 859623: return __s1; 859623: } 859623: 859623: template 859623: 859623: typename char_traits<_CharT>::char_type* 859623: char_traits<_CharT>:: 859623: copy(char_type* __s1, const char_type* __s2, std::size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: # 268 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: __builtin_memcpy(__s1, __s2, __n * sizeof(char_type)); 859623: return __s1; 859623: } 859623: 859623: template 859623: 859623: typename char_traits<_CharT>::char_type* 859623: char_traits<_CharT>:: 859623: assign(char_type* __s, std::size_t __n, char_type __a) 859623: { 859623: # 287 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: if (sizeof(_CharT) == 1 && __is_trivial(_CharT)) 859623: { 859623: if (__n) 859623: { 859623: unsigned char __c; 859623: __builtin_memcpy(&__c, __builtin_addressof(__a), 1); 859623: __builtin_memset(__s, __c, __n); 859623: } 859623: } 859623: else 859623: { 859623: for (std::size_t __i = 0; __i < __n; ++__i) 859623: __s[__i] = __a; 859623: } 859623: return __s; 859623: } 859623: 859623: 859623: } 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 324 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: template 859623: struct char_traits : public __gnu_cxx::char_traits<_CharT> 859623: { }; 859623: 859623: 859623: 859623: template<> 859623: struct char_traits 859623: { 859623: typedef char char_type; 859623: typedef int int_type; 859623: 859623: typedef streampos pos_type; 859623: typedef streamoff off_type; 859623: typedef mbstate_t state_type; 859623: 859623: 859623: 859623: 859623: 859623: static void 859623: assign(char_type& __c1, const char_type& __c2) noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: __c1 = __c2; 859623: } 859623: 859623: static constexpr bool 859623: eq(const char_type& __c1, const char_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: static constexpr bool 859623: lt(const char_type& __c1, const char_type& __c2) noexcept 859623: { 859623: 859623: return (static_cast(__c1) 859623: < static_cast(__c2)); 859623: } 859623: 859623: static int 859623: compare(const char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return 0; 859623: # 383 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: return __builtin_memcmp(__s1, __s2, __n); 859623: } 859623: 859623: static size_t 859623: length(const char_type* __s) 859623: { 859623: 859623: 859623: 859623: 859623: return __builtin_strlen(__s); 859623: } 859623: 859623: static const char_type* 859623: find(const char_type* __s, size_t __n, const char_type& __a) 859623: { 859623: if (__n == 0) 859623: return 0; 859623: 859623: 859623: 859623: 859623: return static_cast(__builtin_memchr(__s, __a, __n)); 859623: } 859623: 859623: static char_type* 859623: move(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return static_cast(__builtin_memmove(__s1, __s2, __n)); 859623: } 859623: 859623: static char_type* 859623: copy(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return static_cast(__builtin_memcpy(__s1, __s2, __n)); 859623: } 859623: 859623: static char_type* 859623: assign(char_type* __s, size_t __n, char_type __a) 859623: { 859623: if (__n == 0) 859623: return __s; 859623: 859623: 859623: 859623: 859623: return static_cast(__builtin_memset(__s, __a, __n)); 859623: } 859623: 859623: static constexpr char_type 859623: to_char_type(const int_type& __c) noexcept 859623: { return static_cast(__c); } 859623: 859623: 859623: 859623: static constexpr int_type 859623: to_int_type(const char_type& __c) noexcept 859623: { return static_cast(static_cast(__c)); } 859623: 859623: static constexpr bool 859623: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: 859623: static constexpr int_type 859623: eof() noexcept 859623: { return static_cast(-1); } 859623: 859623: static constexpr int_type 859623: not_eof(const int_type& __c) noexcept 859623: { return (__c == eof()) ? 0 : __c; } 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: template<> 859623: struct char_traits 859623: { 859623: typedef wchar_t char_type; 859623: typedef wint_t int_type; 859623: 859623: typedef streamoff off_type; 859623: typedef wstreampos pos_type; 859623: typedef mbstate_t state_type; 859623: 859623: 859623: 859623: 859623: 859623: static void 859623: assign(char_type& __c1, const char_type& __c2) noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: __c1 = __c2; 859623: } 859623: 859623: static constexpr bool 859623: eq(const char_type& __c1, const char_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: static constexpr bool 859623: lt(const char_type& __c1, const char_type& __c2) noexcept 859623: { return __c1 < __c2; } 859623: 859623: static int 859623: compare(const char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return 0; 859623: 859623: 859623: 859623: 859623: return wmemcmp(__s1, __s2, __n); 859623: } 859623: 859623: static size_t 859623: length(const char_type* __s) 859623: { 859623: 859623: 859623: 859623: 859623: return wcslen(__s); 859623: } 859623: 859623: static const char_type* 859623: find(const char_type* __s, size_t __n, const char_type& __a) 859623: { 859623: if (__n == 0) 859623: return 0; 859623: 859623: 859623: 859623: 859623: return wmemchr(__s, __a, __n); 859623: } 859623: 859623: static char_type* 859623: move(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return wmemmove(__s1, __s2, __n); 859623: } 859623: 859623: static char_type* 859623: copy(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return wmemcpy(__s1, __s2, __n); 859623: } 859623: 859623: static char_type* 859623: assign(char_type* __s, size_t __n, char_type __a) 859623: { 859623: if (__n == 0) 859623: return __s; 859623: 859623: 859623: 859623: 859623: return wmemset(__s, __a, __n); 859623: } 859623: 859623: static constexpr char_type 859623: to_char_type(const int_type& __c) noexcept 859623: { return char_type(__c); } 859623: 859623: static constexpr int_type 859623: to_int_type(const char_type& __c) noexcept 859623: { return int_type(__c); } 859623: 859623: static constexpr bool 859623: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: 859623: static constexpr int_type 859623: eof() noexcept 859623: { return static_cast((0xffffffffu)); } 859623: 859623: static constexpr int_type 859623: not_eof(const int_type& __c) noexcept 859623: { return eq_int_type(__c, eof()) ? 0 : __c; } 859623: 859623: }; 859623: # 731 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: 859623: } 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: template<> 859623: struct char_traits 859623: { 859623: typedef char16_t char_type; 859623: 859623: typedef short unsigned int int_type; 859623: 859623: 859623: 859623: 859623: typedef streamoff off_type; 859623: typedef u16streampos pos_type; 859623: typedef mbstate_t state_type; 859623: 859623: 859623: 859623: 859623: 859623: static void 859623: assign(char_type& __c1, const char_type& __c2) noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: __c1 = __c2; 859623: } 859623: 859623: static constexpr bool 859623: eq(const char_type& __c1, const char_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: static constexpr bool 859623: lt(const char_type& __c1, const char_type& __c2) noexcept 859623: { return __c1 < __c2; } 859623: 859623: static int 859623: compare(const char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: for (size_t __i = 0; __i < __n; ++__i) 859623: if (lt(__s1[__i], __s2[__i])) 859623: return -1; 859623: else if (lt(__s2[__i], __s1[__i])) 859623: return 1; 859623: return 0; 859623: } 859623: 859623: static size_t 859623: length(const char_type* __s) 859623: { 859623: size_t __i = 0; 859623: while (!eq(__s[__i], char_type())) 859623: ++__i; 859623: return __i; 859623: } 859623: 859623: static const char_type* 859623: find(const char_type* __s, size_t __n, const char_type& __a) 859623: { 859623: for (size_t __i = 0; __i < __n; ++__i) 859623: if (eq(__s[__i], __a)) 859623: return __s + __i; 859623: return 0; 859623: } 859623: 859623: static char_type* 859623: move(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return (static_cast 859623: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 859623: } 859623: 859623: static char_type* 859623: copy(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return (static_cast 859623: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 859623: } 859623: 859623: static char_type* 859623: assign(char_type* __s, size_t __n, char_type __a) 859623: { 859623: for (size_t __i = 0; __i < __n; ++__i) 859623: assign(__s[__i], __a); 859623: return __s; 859623: } 859623: 859623: static constexpr char_type 859623: to_char_type(const int_type& __c) noexcept 859623: { return char_type(__c); } 859623: 859623: static constexpr bool 859623: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: 859623: static constexpr int_type 859623: to_int_type(const char_type& __c) noexcept 859623: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } 859623: 859623: static constexpr int_type 859623: eof() noexcept 859623: { return static_cast(-1); } 859623: 859623: static constexpr int_type 859623: not_eof(const int_type& __c) noexcept 859623: { return eq_int_type(__c, eof()) ? 0 : __c; } 859623: 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: template<> 859623: struct char_traits 859623: { 859623: typedef char32_t char_type; 859623: 859623: typedef unsigned int int_type; 859623: 859623: 859623: 859623: 859623: typedef streamoff off_type; 859623: typedef u32streampos pos_type; 859623: typedef mbstate_t state_type; 859623: 859623: 859623: 859623: 859623: 859623: static void 859623: assign(char_type& __c1, const char_type& __c2) noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: __c1 = __c2; 859623: } 859623: 859623: static constexpr bool 859623: eq(const char_type& __c1, const char_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: static constexpr bool 859623: lt(const char_type& __c1, const char_type& __c2) noexcept 859623: { return __c1 < __c2; } 859623: 859623: static int 859623: compare(const char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: for (size_t __i = 0; __i < __n; ++__i) 859623: if (lt(__s1[__i], __s2[__i])) 859623: return -1; 859623: else if (lt(__s2[__i], __s1[__i])) 859623: return 1; 859623: return 0; 859623: } 859623: 859623: static size_t 859623: length(const char_type* __s) 859623: { 859623: size_t __i = 0; 859623: while (!eq(__s[__i], char_type())) 859623: ++__i; 859623: return __i; 859623: } 859623: 859623: static const char_type* 859623: find(const char_type* __s, size_t __n, const char_type& __a) 859623: { 859623: for (size_t __i = 0; __i < __n; ++__i) 859623: if (eq(__s[__i], __a)) 859623: return __s + __i; 859623: return 0; 859623: } 859623: 859623: static char_type* 859623: move(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return (static_cast 859623: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 859623: } 859623: 859623: static char_type* 859623: copy(char_type* __s1, const char_type* __s2, size_t __n) 859623: { 859623: if (__n == 0) 859623: return __s1; 859623: 859623: 859623: 859623: 859623: return (static_cast 859623: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 859623: } 859623: 859623: static char_type* 859623: assign(char_type* __s, size_t __n, char_type __a) 859623: { 859623: for (size_t __i = 0; __i < __n; ++__i) 859623: assign(__s[__i], __a); 859623: return __s; 859623: } 859623: 859623: static constexpr char_type 859623: to_char_type(const int_type& __c) noexcept 859623: { return char_type(__c); } 859623: 859623: static constexpr int_type 859623: to_int_type(const char_type& __c) noexcept 859623: { return int_type(__c); } 859623: 859623: static constexpr bool 859623: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 859623: { return __c1 == __c2; } 859623: 859623: 859623: static constexpr int_type 859623: eof() noexcept 859623: { return static_cast(-1); } 859623: 859623: static constexpr int_type 859623: not_eof(const int_type& __c) noexcept 859623: { return eq_int_type(__c, eof()) ? 0 : __c; } 859623: 859623: }; 859623: # 1009 "/usr/arm-linux-gnueabi/include/c++/15/bits/char_traits.h" 3 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: } 859623: # 45 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/allocator.h" 1 3 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/bits/allocator.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++allocator.h" 1 3 859623: # 33 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++allocator.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 1 3 859623: # 34 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/new" 1 3 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/new" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/exception.h" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/exception.h" 3 859623: extern "C++" { 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: # 61 "/usr/arm-linux-gnueabi/include/c++/15/bits/exception.h" 3 859623: class exception 859623: { 859623: public: 859623: exception() noexcept { } 859623: virtual ~exception() noexcept; 859623: 859623: exception(const exception&) = default; 859623: exception& operator=(const exception&) = default; 859623: exception(exception&&) = default; 859623: exception& operator=(exception&&) = default; 859623: 859623: 859623: 859623: 859623: virtual const char* 859623: what() const noexcept; 859623: }; 859623: 859623: 859623: 859623: } 859623: 859623: } 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/new" 2 3 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 50 "/usr/arm-linux-gnueabi/include/c++/15/new" 2 3 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++11-extensions" 859623: 859623: #pragma GCC visibility push(default) 859623: 859623: extern "C++" { 859623: 859623: namespace std 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: class bad_alloc : public exception 859623: { 859623: public: 859623: bad_alloc() throw() { } 859623: 859623: 859623: bad_alloc(const bad_alloc&) = default; 859623: bad_alloc& operator=(const bad_alloc&) = default; 859623: 859623: 859623: 859623: 859623: virtual ~bad_alloc() throw(); 859623: 859623: 859623: virtual const char* what() const throw(); 859623: }; 859623: 859623: 859623: class bad_array_new_length : public bad_alloc 859623: { 859623: public: 859623: bad_array_new_length() throw() { } 859623: 859623: 859623: 859623: virtual ~bad_array_new_length() throw(); 859623: 859623: 859623: virtual const char* what() const throw(); 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct nothrow_t 859623: { 859623: 859623: explicit nothrow_t() = default; 859623: 859623: }; 859623: 859623: extern const nothrow_t nothrow; 859623: 859623: 859623: 859623: typedef void (*new_handler)(); 859623: 859623: 859623: 859623: new_handler set_new_handler(new_handler) throw(); 859623: 859623: 859623: 859623: new_handler get_new_handler() noexcept; 859623: 859623: } 859623: # 137 "/usr/arm-linux-gnueabi/include/c++/15/new" 3 859623: [[__nodiscard__]] void* operator new(std::size_t) 859623: 859623: __attribute__((__externally_visible__, __malloc__)); 859623: [[__nodiscard__]] void* operator new[](std::size_t) 859623: 859623: __attribute__((__externally_visible__, __malloc__)); 859623: void operator delete(void*) noexcept 859623: __attribute__((__externally_visible__)); 859623: void operator delete[](void*) noexcept 859623: __attribute__((__externally_visible__)); 859623: # 155 "/usr/arm-linux-gnueabi/include/c++/15/new" 3 859623: [[__nodiscard__]] void* operator new(std::size_t, const std::nothrow_t&) 859623: noexcept 859623: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 859623: [[__nodiscard__]] void* operator new[](std::size_t, const std::nothrow_t&) 859623: noexcept 859623: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 859623: void operator delete(void*, const std::nothrow_t&) 859623: noexcept 859623: __attribute__((__externally_visible__)); 859623: void operator delete[](void*, const std::nothrow_t&) 859623: noexcept 859623: __attribute__((__externally_visible__)); 859623: # 205 "/usr/arm-linux-gnueabi/include/c++/15/new" 3 859623: [[__nodiscard__]] inline 859623: void* operator new(std::size_t, void* __p) 859623: noexcept 859623: { return __p; } 859623: [[__nodiscard__]] inline 859623: void* operator new[](std::size_t, void* __p) 859623: noexcept 859623: { return __p; } 859623: 859623: 859623: 859623: 859623: inline void operator delete (void*, void*) 859623: noexcept 859623: { } 859623: inline void operator delete[](void*, void*) 859623: noexcept 859623: { } 859623: 859623: } 859623: 859623: namespace std 859623: { 859623: # 264 "/usr/arm-linux-gnueabi/include/c++/15/new" 3 859623: } 859623: 859623: #pragma GCC visibility pop 859623: #pragma GCC diagnostic pop 859623: # 35 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/functexcept.h" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/functexcept.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/exception_defines.h" 1 3 859623: # 41 "/usr/arm-linux-gnueabi/include/c++/15/bits/functexcept.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: void 859623: __throw_bad_exception(void) __attribute__((__noreturn__)); 859623: 859623: 859623: void 859623: __throw_bad_alloc(void) __attribute__((__noreturn__)); 859623: 859623: void 859623: __throw_bad_array_new_length(void) __attribute__((__noreturn__)); 859623: 859623: 859623: void 859623: __throw_bad_cast(void) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_bad_typeid(void) __attribute__((__noreturn__,__cold__)); 859623: 859623: 859623: void 859623: __throw_logic_error(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_domain_error(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_invalid_argument(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_length_error(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_out_of_range(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__,__cold__)) 859623: __attribute__((__format__(__gnu_printf__, 1, 2))); 859623: 859623: void 859623: __throw_runtime_error(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_range_error(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_overflow_error(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_underflow_error(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: 859623: void 859623: __throw_ios_failure(const char*) __attribute__((__noreturn__,__cold__)); 859623: 859623: void 859623: __throw_ios_failure(const char*, int) __attribute__((__noreturn__,__cold__)); 859623: 859623: 859623: void 859623: __throw_system_error(int) __attribute__((__noreturn__,__cold__)); 859623: 859623: 859623: void 859623: __throw_future_error(int) __attribute__((__noreturn__,__cold__)); 859623: 859623: 859623: void 859623: __throw_bad_function_call() __attribute__((__noreturn__,__cold__)); 859623: # 140 "/usr/arm-linux-gnueabi/include/c++/15/bits/functexcept.h" 3 859623: 859623: } 859623: # 36 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: inline constexpr _Tp* 859623: __addressof(_Tp& __r) noexcept 859623: { return __builtin_addressof(__r); } 859623: # 69 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 3 859623: template 859623: [[__nodiscard__,__gnu__::__always_inline__]] 859623: constexpr _Tp&& 859623: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 859623: { return static_cast<_Tp&&>(__t); } 859623: # 82 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 3 859623: template 859623: [[__nodiscard__,__gnu__::__always_inline__]] 859623: constexpr _Tp&& 859623: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 859623: { 859623: static_assert(!std::is_lvalue_reference<_Tp>::value, 859623: "std::forward must not be used to convert an rvalue to an lvalue"); 859623: return static_cast<_Tp&&>(__t); 859623: } 859623: # 135 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 3 859623: template 859623: [[__nodiscard__,__gnu__::__always_inline__]] 859623: constexpr typename std::remove_reference<_Tp>::type&& 859623: move(_Tp&& __t) noexcept 859623: { return static_cast::type&&>(__t); } 859623: 859623: 859623: template 859623: struct __move_if_noexcept_cond 859623: : public __and_<__not_>, 859623: is_copy_constructible<_Tp>>::type { }; 859623: # 156 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 3 859623: template 859623: [[__nodiscard__,__gnu__::__always_inline__]] 859623: constexpr 859623: __conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&> 859623: move_if_noexcept(_Tp& __x) noexcept 859623: { return std::move(__x); } 859623: # 173 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 3 859623: template 859623: [[__nodiscard__,__gnu__::__always_inline__]] 859623: inline _Tp* 859623: addressof(_Tp& __r) noexcept 859623: { return std::__addressof(__r); } 859623: 859623: 859623: 859623: template 859623: const _Tp* addressof(const _Tp&&) = delete; 859623: 859623: 859623: template 859623: 859623: inline _Tp 859623: __exchange(_Tp& __obj, _Up&& __new_val) 859623: { 859623: _Tp __old_val = std::move(__obj); 859623: __obj = std::forward<_Up>(__new_val); 859623: return __old_val; 859623: } 859623: # 217 "/usr/arm-linux-gnueabi/include/c++/15/bits/move.h" 3 859623: template 859623: 859623: inline 859623: 859623: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 859623: is_move_constructible<_Tp>, 859623: is_move_assignable<_Tp>>::value>::type 859623: 859623: 859623: 859623: swap(_Tp& __a, _Tp& __b) 859623: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) 859623: 859623: { 859623: 859623: 859623: 859623: 859623: _Tp __tmp = std::move(__a); 859623: __a = std::move(__b); 859623: __b = std::move(__tmp); 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: 859623: inline 859623: 859623: typename enable_if<__is_swappable<_Tp>::value>::type 859623: 859623: 859623: 859623: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 859623: noexcept(__is_nothrow_swappable<_Tp>::value) 859623: { 859623: for (size_t __n = 0; __n < _Nm; ++__n) 859623: swap(__a[__n], __b[__n]); 859623: } 859623: 859623: 859623: 859623: } 859623: # 37 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 2 3 859623: 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 62 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 3 859623: template 859623: class __new_allocator 859623: { 859623: public: 859623: typedef _Tp value_type; 859623: typedef std::size_t size_type; 859623: typedef std::ptrdiff_t difference_type; 859623: 859623: typedef _Tp* pointer; 859623: typedef const _Tp* const_pointer; 859623: typedef _Tp& reference; 859623: typedef const _Tp& const_reference; 859623: 859623: template 859623: struct rebind 859623: { typedef __new_allocator<_Tp1> other; }; 859623: 859623: 859623: 859623: 859623: 859623: typedef std::true_type propagate_on_container_move_assignment; 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __new_allocator() noexcept { } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __new_allocator(const __new_allocator&) noexcept { } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: __new_allocator(const __new_allocator<_Tp1>&) noexcept { } 859623: 859623: 859623: __new_allocator& operator=(const __new_allocator&) = default; 859623: 859623: 859623: 859623: ~__new_allocator() noexcept { } 859623: 859623: pointer 859623: address(reference __x) const noexcept 859623: { return std::__addressof(__x); } 859623: 859623: const_pointer 859623: address(const_reference __x) const noexcept 859623: { return std::__addressof(__x); } 859623: # 125 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 3 859623: [[__nodiscard__]] _Tp* 859623: allocate(size_type __n, const void* = static_cast(0)) 859623: { 859623: 859623: 859623: 859623: static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types"); 859623: 859623: 859623: if (__builtin_expect(__n > this->_M_max_size(), false)) 859623: { 859623: 859623: 859623: if (__n > (std::size_t(-1) / sizeof(_Tp))) 859623: std::__throw_bad_array_new_length(); 859623: std::__throw_bad_alloc(); 859623: } 859623: # 151 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 3 859623: return static_cast<_Tp*>(__builtin_operator_new(__n * sizeof(_Tp))); 859623: } 859623: 859623: 859623: void 859623: deallocate(_Tp* __p, size_type __n __attribute__ ((__unused__))) 859623: { 859623: # 172 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 3 859623: __builtin_operator_delete((__p)); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: size_type 859623: max_size() const noexcept 859623: { return _M_max_size(); } 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: void 859623: construct(_Up* __p, _Args&&... __args) 859623: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) 859623: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: void 859623: destroy(_Up* __p) 859623: noexcept(std::is_nothrow_destructible<_Up>::value) 859623: { __p->~_Up(); } 859623: # 213 "/usr/arm-linux-gnueabi/include/c++/15/bits/new_allocator.h" 3 859623: template 859623: friend __attribute__((__always_inline__)) bool 859623: operator==(const __new_allocator&, const __new_allocator<_Up>&) 859623: noexcept 859623: { return true; } 859623: 859623: 859623: template 859623: friend __attribute__((__always_inline__)) bool 859623: operator!=(const __new_allocator&, const __new_allocator<_Up>&) 859623: noexcept 859623: { return false; } 859623: 859623: 859623: private: 859623: __attribute__((__always_inline__)) 859623: constexpr size_type 859623: _M_max_size() const noexcept 859623: { 859623: 859623: return std::size_t(0x7fffffff) / sizeof(_Tp); 859623: 859623: 859623: 859623: } 859623: }; 859623: 859623: 859623: } 859623: # 34 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++allocator.h" 2 3 859623: 859623: 859623: namespace std 859623: { 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++allocator.h" 3 859623: template 859623: using __allocator_base = __new_allocator<_Tp>; 859623: } 859623: # 47 "/usr/arm-linux-gnueabi/include/c++/15/bits/allocator.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++11-extensions" 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 75 "/usr/arm-linux-gnueabi/include/c++/15/bits/allocator.h" 3 859623: template<> 859623: class allocator 859623: { 859623: public: 859623: typedef void value_type; 859623: typedef size_t size_type; 859623: typedef ptrdiff_t difference_type; 859623: 859623: 859623: 859623: typedef void* pointer; 859623: typedef const void* const_pointer; 859623: 859623: template 859623: struct rebind 859623: { typedef allocator<_Tp1> other; }; 859623: 859623: 859623: 859623: 859623: 859623: using propagate_on_container_move_assignment = true_type; 859623: 859623: 859623: using is_always_equal 859623: 859623: = true_type; 859623: # 120 "/usr/arm-linux-gnueabi/include/c++/15/bits/allocator.h" 3 859623: }; 859623: # 132 "/usr/arm-linux-gnueabi/include/c++/15/bits/allocator.h" 3 859623: template 859623: class allocator : public __allocator_base<_Tp> 859623: { 859623: public: 859623: typedef _Tp value_type; 859623: typedef size_t size_type; 859623: typedef ptrdiff_t difference_type; 859623: 859623: 859623: 859623: typedef _Tp* pointer; 859623: typedef const _Tp* const_pointer; 859623: typedef _Tp& reference; 859623: typedef const _Tp& const_reference; 859623: 859623: template 859623: struct rebind 859623: { typedef allocator<_Tp1> other; }; 859623: 859623: 859623: 859623: 859623: 859623: using propagate_on_container_move_assignment = true_type; 859623: 859623: 859623: using is_always_equal 859623: 859623: = true_type; 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: allocator() noexcept { } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: allocator(const allocator& __a) noexcept 859623: : __allocator_base<_Tp>(__a) { } 859623: 859623: 859623: 859623: allocator& operator=(const allocator&) = default; 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: allocator(const allocator<_Tp1>&) noexcept { } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: 859623: 859623: ~allocator() noexcept { } 859623: # 219 "/usr/arm-linux-gnueabi/include/c++/15/bits/allocator.h" 3 859623: friend __attribute__((__always_inline__)) 859623: bool 859623: operator==(const allocator&, const allocator&) noexcept 859623: { return true; } 859623: 859623: 859623: friend __attribute__((__always_inline__)) 859623: bool 859623: operator!=(const allocator&, const allocator&) noexcept 859623: { return false; } 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: inline bool 859623: operator==(const allocator<_T1>&, const allocator<_T2>&) 859623: noexcept 859623: { return true; } 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: inline bool 859623: operator!=(const allocator<_T1>&, const allocator<_T2>&) 859623: noexcept 859623: { return false; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class allocator 859623: { 859623: public: 859623: typedef _Tp value_type; 859623: allocator() { } 859623: template allocator(const allocator<_Up>&) { } 859623: }; 859623: 859623: template 859623: class allocator 859623: { 859623: public: 859623: typedef _Tp value_type; 859623: allocator() { } 859623: template allocator(const allocator<_Up>&) { } 859623: }; 859623: 859623: template 859623: class allocator 859623: { 859623: public: 859623: typedef _Tp value_type; 859623: allocator() { } 859623: template allocator(const allocator<_Up>&) { } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern template class allocator; 859623: extern template class allocator; 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 41 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 2 3 859623: 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: # 76 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: extern "C++" { 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: struct __true_type { }; 859623: struct __false_type { }; 859623: 859623: template 859623: struct __truth_type 859623: { typedef __false_type __type; }; 859623: 859623: template<> 859623: struct __truth_type 859623: { typedef __true_type __type; }; 859623: 859623: 859623: 859623: template 859623: struct __traitor 859623: { 859623: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 859623: typedef typename __truth_type<__value>::__type __type; 859623: }; 859623: 859623: 859623: template 859623: struct __are_same 859623: { 859623: enum { __value = 0 }; 859623: typedef __false_type __type; 859623: }; 859623: 859623: template 859623: struct __are_same<_Tp, _Tp> 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_integer 859623: { 859623: enum { __value = 0 }; 859623: typedef __false_type __type; 859623: }; 859623: 859623: 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: # 176 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_integer 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: # 281 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: template 859623: struct __is_floating 859623: { 859623: enum { __value = 0 }; 859623: typedef __false_type __type; 859623: }; 859623: 859623: 859623: template<> 859623: struct __is_floating 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_floating 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_floating 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: # 358 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: template 859623: struct __is_arithmetic 859623: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 859623: { }; 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_char 859623: { 859623: enum { __value = 0 }; 859623: typedef __false_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_char 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: 859623: template<> 859623: struct __is_char 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: 859623: template 859623: struct __is_byte 859623: { 859623: enum { __value = 0 }; 859623: typedef __false_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_byte 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_byte 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: 859623: template<> 859623: struct __is_byte 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: # 438 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: template 859623: struct __is_nonvolatile_trivially_copyable 859623: { 859623: enum { __value = __is_trivially_copyable(_Tp) }; 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_nonvolatile_trivially_copyable 859623: { 859623: enum { __value = 0 }; 859623: }; 859623: 859623: 859623: template 859623: struct __memcpyable 859623: { 859623: enum { __value = 0 }; 859623: }; 859623: 859623: 859623: template 859623: struct __memcpyable<_Tp*, _Tp*> 859623: : __is_nonvolatile_trivially_copyable<_Tp> 859623: { }; 859623: 859623: 859623: template 859623: struct __memcpyable<_Tp*, const _Tp*> 859623: : __is_nonvolatile_trivially_copyable<_Tp> 859623: { }; 859623: 859623: template struct __memcpyable_integer; 859623: 859623: 859623: 859623: 859623: template 859623: struct __memcpyable<_Tp*, _Up*> 859623: { 859623: enum { 859623: __value = __memcpyable_integer<_Tp>::__width != 0 859623: && ((int)__memcpyable_integer<_Tp>::__width 859623: == (int)__memcpyable_integer<_Up>::__width) 859623: }; 859623: }; 859623: 859623: 859623: template 859623: struct __memcpyable<_Tp*, const _Up*> 859623: : __memcpyable<_Tp*, _Up*> 859623: { }; 859623: 859623: template 859623: struct __memcpyable_integer 859623: { 859623: enum { 859623: __width = __is_integer<_Tp>::__value ? (sizeof(_Tp) * 8) : 0 859623: }; 859623: }; 859623: 859623: 859623: template 859623: struct __memcpyable_integer 859623: { enum { __width = 0 }; }; 859623: # 560 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: template<> 859623: struct __memcpyable { enum { __value = true }; }; 859623: template<> 859623: struct __memcpyable { enum { __value = true }; }; 859623: # 592 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: template 859623: struct __memcmpable 859623: { 859623: enum { __value = 0 }; 859623: }; 859623: 859623: 859623: template 859623: struct __memcmpable<_Tp*, _Tp*> 859623: : __is_nonvolatile_trivially_copyable<_Tp> 859623: { }; 859623: 859623: template 859623: struct __memcmpable 859623: : __is_nonvolatile_trivially_copyable<_Tp> 859623: { }; 859623: 859623: template 859623: struct __memcmpable<_Tp*, const _Tp*> 859623: : __is_nonvolatile_trivially_copyable<_Tp> 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template::__value 859623: 859623: > 859623: struct __is_memcmp_ordered 859623: { 859623: static const bool __value = _Tp(-1) > _Tp(1); 859623: }; 859623: 859623: template 859623: struct __is_memcmp_ordered<_Tp, false> 859623: { 859623: static const bool __value = false; 859623: }; 859623: 859623: 859623: template 859623: struct __is_memcmp_ordered_with 859623: { 859623: static const bool __value = __is_memcmp_ordered<_Tp>::__value 859623: && __is_memcmp_ordered<_Up>::__value; 859623: }; 859623: 859623: template 859623: struct __is_memcmp_ordered_with<_Tp, _Up, false> 859623: { 859623: static const bool __value = false; 859623: }; 859623: # 686 "/usr/arm-linux-gnueabi/include/c++/15/bits/cpp_type_traits.h" 3 859623: template 859623: struct __is_move_iterator 859623: { 859623: enum { __value = 0 }; 859623: typedef __false_type __type; 859623: }; 859623: 859623: 859623: 859623: template 859623: 859623: inline _Iterator 859623: __miter_base(_Iterator __it) 859623: { return __it; } 859623: 859623: 859623: } 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 47 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/localefwd.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/localefwd.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++locale.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++locale.h" 3 859623: 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++locale.h" 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/clocale" 1 3 859623: # 47 "/usr/arm-linux-gnueabi/include/c++/15/clocale" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/locale.h" 1 3 859623: # 28 "/usr/arm-linux-gnueabi/include/locale.h" 3 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 29 "/usr/arm-linux-gnueabi/include/locale.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/locale.h" 1 3 859623: # 30 "/usr/arm-linux-gnueabi/include/locale.h" 2 3 859623: 859623: extern "C" { 859623: # 51 "/usr/arm-linux-gnueabi/include/locale.h" 3 859623: struct lconv 859623: { 859623: 859623: 859623: char *decimal_point; 859623: char *thousands_sep; 859623: 859623: 859623: 859623: 859623: 859623: char *grouping; 859623: 859623: 859623: 859623: 859623: 859623: char *int_curr_symbol; 859623: char *currency_symbol; 859623: char *mon_decimal_point; 859623: char *mon_thousands_sep; 859623: char *mon_grouping; 859623: char *positive_sign; 859623: char *negative_sign; 859623: char int_frac_digits; 859623: char frac_digits; 859623: 859623: char p_cs_precedes; 859623: 859623: char p_sep_by_space; 859623: 859623: char n_cs_precedes; 859623: 859623: char n_sep_by_space; 859623: 859623: 859623: 859623: 859623: 859623: 859623: char p_sign_posn; 859623: char n_sign_posn; 859623: 859623: 859623: char int_p_cs_precedes; 859623: 859623: char int_p_sep_by_space; 859623: 859623: char int_n_cs_precedes; 859623: 859623: char int_n_sep_by_space; 859623: 859623: 859623: 859623: 859623: 859623: 859623: char int_p_sign_posn; 859623: char int_n_sign_posn; 859623: # 118 "/usr/arm-linux-gnueabi/include/locale.h" 3 859623: }; 859623: 859623: 859623: 859623: extern char *setlocale (int __category, const char *__locale) noexcept (true); 859623: 859623: 859623: extern struct lconv *localeconv (void) noexcept (true); 859623: # 141 "/usr/arm-linux-gnueabi/include/locale.h" 3 859623: extern locale_t newlocale (int __category_mask, const char *__locale, 859623: locale_t __base) noexcept (true); 859623: # 176 "/usr/arm-linux-gnueabi/include/locale.h" 3 859623: extern locale_t duplocale (locale_t __dataset) noexcept (true); 859623: 859623: 859623: 859623: extern void freelocale (locale_t __dataset) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern locale_t uselocale (locale_t __dataset) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 48 "/usr/arm-linux-gnueabi/include/c++/15/clocale" 2 3 859623: 859623: 859623: 859623: 859623: 859623: namespace std 859623: { 859623: using ::lconv; 859623: using ::setlocale; 859623: using ::localeconv; 859623: } 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++locale.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: extern "C" __typeof(uselocale) __uselocale; 859623: 859623: 859623: } 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: typedef __locale_t __c_locale; 859623: # 73 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++locale.h" 3 859623: inline int 859623: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), 859623: char* __out, 859623: const int __size __attribute__ ((__unused__)), 859623: const char* __fmt, ...) 859623: { 859623: 859623: __c_locale __old = __gnu_cxx::__uselocale(__cloc); 859623: # 93 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/c++locale.h" 3 859623: __builtin_va_list __args; 859623: __builtin_va_start(__args, __fmt); 859623: 859623: 859623: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); 859623: 859623: 859623: 859623: 859623: __builtin_va_end(__args); 859623: 859623: 859623: __gnu_cxx::__uselocale(__old); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: return __ret; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/bits/localefwd.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/iosfwd" 1 3 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/iosfwd" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 78 "/usr/arm-linux-gnueabi/include/c++/15/iosfwd" 3 859623: class ios_base; 859623: 859623: template > 859623: class basic_ios; 859623: 859623: template > 859623: class basic_streambuf; 859623: 859623: template > 859623: class basic_istream; 859623: 859623: template > 859623: class basic_ostream; 859623: 859623: template > 859623: class basic_iostream; 859623: 859623: 859623: namespace __cxx11 { 859623: 859623: template, 859623: typename _Alloc = allocator<_CharT> > 859623: class basic_stringbuf; 859623: 859623: template, 859623: typename _Alloc = allocator<_CharT> > 859623: class basic_istringstream; 859623: 859623: template, 859623: typename _Alloc = allocator<_CharT> > 859623: class basic_ostringstream; 859623: 859623: template, 859623: typename _Alloc = allocator<_CharT> > 859623: class basic_stringstream; 859623: 859623: } 859623: 859623: template > 859623: class basic_filebuf; 859623: 859623: template > 859623: class basic_ifstream; 859623: 859623: template > 859623: class basic_ofstream; 859623: 859623: template > 859623: class basic_fstream; 859623: 859623: template > 859623: class istreambuf_iterator; 859623: 859623: template > 859623: class ostreambuf_iterator; 859623: 859623: 859623: 859623: typedef basic_ios ios; 859623: 859623: 859623: typedef basic_streambuf streambuf; 859623: 859623: 859623: typedef basic_istream istream; 859623: 859623: 859623: typedef basic_ostream ostream; 859623: 859623: 859623: typedef basic_iostream iostream; 859623: 859623: 859623: typedef basic_stringbuf stringbuf; 859623: 859623: 859623: typedef basic_istringstream istringstream; 859623: 859623: 859623: typedef basic_ostringstream ostringstream; 859623: 859623: 859623: typedef basic_stringstream stringstream; 859623: 859623: 859623: typedef basic_filebuf filebuf; 859623: 859623: 859623: typedef basic_ifstream ifstream; 859623: 859623: 859623: typedef basic_ofstream ofstream; 859623: 859623: 859623: typedef basic_fstream fstream; 859623: 859623: 859623: 859623: typedef basic_ios wios; 859623: 859623: 859623: typedef basic_streambuf wstreambuf; 859623: 859623: 859623: typedef basic_istream wistream; 859623: 859623: 859623: typedef basic_ostream wostream; 859623: 859623: 859623: typedef basic_iostream wiostream; 859623: 859623: 859623: typedef basic_stringbuf wstringbuf; 859623: 859623: 859623: typedef basic_istringstream wistringstream; 859623: 859623: 859623: typedef basic_ostringstream wostringstream; 859623: 859623: 859623: typedef basic_stringstream wstringstream; 859623: 859623: 859623: typedef basic_filebuf wfilebuf; 859623: 859623: 859623: typedef basic_ifstream wifstream; 859623: 859623: 859623: typedef basic_ofstream wofstream; 859623: 859623: 859623: typedef basic_fstream wfstream; 859623: # 257 "/usr/arm-linux-gnueabi/include/c++/15/iosfwd" 3 859623: 859623: } 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/bits/localefwd.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/cctype" 1 3 859623: # 47 "/usr/arm-linux-gnueabi/include/c++/15/cctype" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/ctype.h" 1 3 859623: # 28 "/usr/arm-linux-gnueabi/include/ctype.h" 3 859623: extern "C" { 859623: # 39 "/usr/arm-linux-gnueabi/include/ctype.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/endian.h" 1 3 859623: # 35 "/usr/arm-linux-gnueabi/include/bits/endian.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/endianness.h" 1 3 859623: # 36 "/usr/arm-linux-gnueabi/include/bits/endian.h" 2 3 859623: # 40 "/usr/arm-linux-gnueabi/include/ctype.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), 859623: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), 859623: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), 859623: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), 859623: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), 859623: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), 859623: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), 859623: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), 859623: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), 859623: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), 859623: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), 859623: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) 859623: }; 859623: # 79 "/usr/arm-linux-gnueabi/include/ctype.h" 3 859623: extern const unsigned short int **__ctype_b_loc (void) 859623: noexcept (true) __attribute__ ((__const__)); 859623: extern const __int32_t **__ctype_tolower_loc (void) 859623: noexcept (true) __attribute__ ((__const__)); 859623: extern const __int32_t **__ctype_toupper_loc (void) 859623: noexcept (true) __attribute__ ((__const__)); 859623: # 108 "/usr/arm-linux-gnueabi/include/ctype.h" 3 859623: extern int isalnum (int) noexcept (true); 859623: extern int isalpha (int) noexcept (true); 859623: extern int iscntrl (int) noexcept (true); 859623: extern int isdigit (int) noexcept (true); 859623: extern int islower (int) noexcept (true); 859623: extern int isgraph (int) noexcept (true); 859623: extern int isprint (int) noexcept (true); 859623: extern int ispunct (int) noexcept (true); 859623: extern int isspace (int) noexcept (true); 859623: extern int isupper (int) noexcept (true); 859623: extern int isxdigit (int) noexcept (true); 859623: 859623: 859623: 859623: extern int tolower (int __c) noexcept (true); 859623: 859623: 859623: extern int toupper (int __c) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern int isblank (int) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern int isctype (int __c, int __mask) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int isascii (int __c) noexcept (true); 859623: 859623: 859623: 859623: extern int toascii (int __c) noexcept (true); 859623: 859623: 859623: 859623: extern int _toupper (int) noexcept (true); 859623: extern int _tolower (int) noexcept (true); 859623: # 251 "/usr/arm-linux-gnueabi/include/ctype.h" 3 859623: extern int isalnum_l (int, locale_t) noexcept (true); 859623: extern int isalpha_l (int, locale_t) noexcept (true); 859623: extern int iscntrl_l (int, locale_t) noexcept (true); 859623: extern int isdigit_l (int, locale_t) noexcept (true); 859623: extern int islower_l (int, locale_t) noexcept (true); 859623: extern int isgraph_l (int, locale_t) noexcept (true); 859623: extern int isprint_l (int, locale_t) noexcept (true); 859623: extern int ispunct_l (int, locale_t) noexcept (true); 859623: extern int isspace_l (int, locale_t) noexcept (true); 859623: extern int isupper_l (int, locale_t) noexcept (true); 859623: extern int isxdigit_l (int, locale_t) noexcept (true); 859623: 859623: extern int isblank_l (int, locale_t) noexcept (true); 859623: 859623: 859623: 859623: extern int __tolower_l (int __c, locale_t __l) noexcept (true); 859623: extern int tolower_l (int __c, locale_t __l) noexcept (true); 859623: 859623: 859623: extern int __toupper_l (int __c, locale_t __l) noexcept (true); 859623: extern int toupper_l (int __c, locale_t __l) noexcept (true); 859623: # 327 "/usr/arm-linux-gnueabi/include/ctype.h" 3 859623: } 859623: # 48 "/usr/arm-linux-gnueabi/include/c++/15/cctype" 2 3 859623: # 64 "/usr/arm-linux-gnueabi/include/c++/15/cctype" 3 859623: namespace std 859623: { 859623: using ::isalnum; 859623: using ::isalpha; 859623: using ::iscntrl; 859623: using ::isdigit; 859623: using ::isgraph; 859623: using ::islower; 859623: using ::isprint; 859623: using ::ispunct; 859623: using ::isspace; 859623: using ::isupper; 859623: using ::isxdigit; 859623: using ::tolower; 859623: using ::toupper; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace std 859623: { 859623: using ::isblank; 859623: } 859623: # 45 "/usr/arm-linux-gnueabi/include/c++/15/bits/localefwd.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 57 "/usr/arm-linux-gnueabi/include/c++/15/bits/localefwd.h" 3 859623: class locale; 859623: 859623: template 859623: bool 859623: has_facet(const locale&) throw(); 859623: 859623: template 859623: const _Facet& 859623: use_facet(const locale&); 859623: 859623: 859623: template 859623: bool 859623: isspace(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: isprint(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: iscntrl(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: isupper(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: islower(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: isalpha(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: isdigit(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: ispunct(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: isxdigit(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: isalnum(_CharT, const locale&); 859623: 859623: template 859623: bool 859623: isgraph(_CharT, const locale&); 859623: 859623: 859623: template 859623: bool 859623: isblank(_CharT, const locale&); 859623: 859623: 859623: template 859623: _CharT 859623: toupper(_CharT, const locale&); 859623: 859623: template 859623: _CharT 859623: tolower(_CharT, const locale&); 859623: 859623: 859623: struct ctype_base; 859623: template 859623: class ctype; 859623: template<> class ctype; 859623: 859623: template<> class ctype; 859623: 859623: template 859623: class ctype_byname; 859623: 859623: 859623: class codecvt_base; 859623: template 859623: class codecvt; 859623: template<> class codecvt; 859623: 859623: template<> class codecvt; 859623: 859623: 859623: template<> class codecvt; 859623: template<> class codecvt; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class codecvt_byname; 859623: 859623: 859623: 859623: template > 859623: class num_get; 859623: template > 859623: class num_put; 859623: 859623: namespace __cxx11 { 859623: template class numpunct; 859623: template class numpunct_byname; 859623: } 859623: 859623: namespace __cxx11 { 859623: 859623: template 859623: class collate; 859623: template 859623: class collate_byname; 859623: } 859623: 859623: 859623: class time_base; 859623: namespace __cxx11 { 859623: template > 859623: class time_get; 859623: template > 859623: class time_get_byname; 859623: } 859623: template > 859623: class time_put; 859623: template > 859623: class time_put_byname; 859623: 859623: 859623: class money_base; 859623: namespace __cxx11 { 859623: template > 859623: class money_get; 859623: template > 859623: class money_put; 859623: } 859623: namespace __cxx11 { 859623: template 859623: class moneypunct; 859623: template 859623: class moneypunct_byname; 859623: } 859623: 859623: 859623: struct messages_base; 859623: namespace __cxx11 { 859623: template 859623: class messages; 859623: template 859623: class messages_byname; 859623: } 859623: 859623: 859623: } 859623: # 48 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/ostream_insert.h" 1 3 859623: # 38 "/usr/arm-linux-gnueabi/include/c++/15/bits/ostream_insert.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/cxxabi_forced.h" 1 3 859623: # 38 "/usr/arm-linux-gnueabi/include/c++/15/bits/cxxabi_forced.h" 3 859623: #pragma GCC visibility push(default) 859623: 859623: 859623: namespace __cxxabiv1 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: class __forced_unwind 859623: { 859623: virtual ~__forced_unwind() throw(); 859623: 859623: 859623: virtual void __pure_dummy() = 0; 859623: }; 859623: } 859623: 859623: 859623: #pragma GCC visibility pop 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/ostream_insert.h" 2 3 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++11-extensions" 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: template 859623: inline void 859623: __ostream_write(basic_ostream<_CharT, _Traits>& __out, 859623: const _CharT* __s, streamsize __n) 859623: { 859623: typedef basic_ostream<_CharT, _Traits> __ostream_type; 859623: typedef typename __ostream_type::ios_base __ios_base; 859623: 859623: const streamsize __put = __out.rdbuf()->sputn(__s, __n); 859623: if (__put != __n) 859623: __out.setstate(__ios_base::badbit); 859623: } 859623: 859623: template 859623: inline void 859623: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) 859623: { 859623: typedef basic_ostream<_CharT, _Traits> __ostream_type; 859623: typedef typename __ostream_type::ios_base __ios_base; 859623: 859623: const _CharT __c = __out.fill(); 859623: for (; __n > 0; --__n) 859623: { 859623: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); 859623: if (_Traits::eq_int_type(__put, _Traits::eof())) 859623: { 859623: __out.setstate(__ios_base::badbit); 859623: break; 859623: } 859623: } 859623: } 859623: 859623: template 859623: basic_ostream<_CharT, _Traits>& 859623: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, 859623: const _CharT* __s, streamsize __n) 859623: { 859623: typedef basic_ostream<_CharT, _Traits> __ostream_type; 859623: typedef typename __ostream_type::ios_base __ios_base; 859623: 859623: typename __ostream_type::sentry __cerb(__out); 859623: if (__cerb) 859623: { 859623: if (true) 859623: { 859623: const streamsize __w = __out.width(); 859623: if (__w > __n) 859623: { 859623: const bool __left = ((__out.flags() 859623: & __ios_base::adjustfield) 859623: == __ios_base::left); 859623: if (!__left) 859623: __ostream_fill(__out, __w - __n); 859623: if (__out.good()) 859623: __ostream_write(__out, __s, __n); 859623: if (__left && __out.good()) 859623: __ostream_fill(__out, __w - __n); 859623: } 859623: else 859623: __ostream_write(__out, __s, __n); 859623: __out.width(0); 859623: } 859623: if (false) 859623: { 859623: __out._M_setstate(__ios_base::badbit); 859623: ; 859623: } 859623: if (false) 859623: { __out._M_setstate(__ios_base::badbit); } 859623: } 859623: return __out; 859623: } 859623: 859623: 859623: 859623: 859623: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); 859623: 859623: 859623: extern template wostream& __ostream_insert(wostream&, const wchar_t*, 859623: streamsize); 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 49 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_funcs.h" 1 3 859623: # 66 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_funcs.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/concept_check.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/concept_check.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wvariadic-macros" 859623: # 86 "/usr/arm-linux-gnueabi/include/c++/15/bits/concept_check.h" 3 859623: #pragma GCC diagnostic pop 859623: # 67 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/debug/assertions.h" 1 3 859623: # 68 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_types.h" 1 3 859623: # 76 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_types.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 95 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_types.h" 3 859623: struct input_iterator_tag { }; 859623: 859623: 859623: struct output_iterator_tag { }; 859623: 859623: 859623: struct forward_iterator_tag : public input_iterator_tag { }; 859623: 859623: 859623: 859623: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 859623: 859623: 859623: 859623: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 859623: # 127 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_types.h" 3 859623: template 859623: struct iterator 859623: { 859623: 859623: typedef _Category iterator_category; 859623: 859623: typedef _Tp value_type; 859623: 859623: typedef _Distance difference_type; 859623: 859623: typedef _Pointer pointer; 859623: 859623: typedef _Reference reference; 859623: }; 859623: # 151 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_types.h" 3 859623: template 859623: struct iterator_traits; 859623: 859623: 859623: 859623: 859623: template> 859623: struct __iterator_traits { }; 859623: 859623: 859623: 859623: template 859623: struct __iterator_traits<_Iterator, 859623: __void_t> 859623: { 859623: typedef typename _Iterator::iterator_category iterator_category; 859623: typedef typename _Iterator::value_type value_type; 859623: typedef typename _Iterator::difference_type difference_type; 859623: typedef typename _Iterator::pointer pointer; 859623: typedef typename _Iterator::reference reference; 859623: }; 859623: 859623: 859623: template 859623: struct iterator_traits 859623: : public __iterator_traits<_Iterator> { }; 859623: # 211 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_types.h" 3 859623: template 859623: struct iterator_traits<_Tp*> 859623: { 859623: typedef random_access_iterator_tag iterator_category; 859623: typedef _Tp value_type; 859623: typedef ptrdiff_t difference_type; 859623: typedef _Tp* pointer; 859623: typedef _Tp& reference; 859623: }; 859623: 859623: 859623: template 859623: struct iterator_traits 859623: { 859623: typedef random_access_iterator_tag iterator_category; 859623: typedef _Tp value_type; 859623: typedef ptrdiff_t difference_type; 859623: typedef const _Tp* pointer; 859623: typedef const _Tp& reference; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: inline constexpr 859623: typename iterator_traits<_Iter>::iterator_category 859623: __iterator_category(const _Iter&) 859623: { return typename iterator_traits<_Iter>::iterator_category(); } 859623: 859623: 859623: 859623: 859623: template 859623: using __iter_category_t 859623: = typename iterator_traits<_Iter>::iterator_category; 859623: 859623: template 859623: using _RequireInputIter = 859623: __enable_if_t, 859623: input_iterator_tag>::value>; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template> 859623: struct __is_random_access_iter 859623: : is_base_of 859623: { 859623: typedef is_base_of _Base; 859623: enum { __value = _Base::value }; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 69 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_funcs.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: template struct _List_iterator; 859623: template struct _List_const_iterator; 859623: 859623: 859623: template 859623: inline 859623: typename iterator_traits<_InputIterator>::difference_type 859623: __distance(_InputIterator __first, _InputIterator __last, 859623: input_iterator_tag) 859623: { 859623: 859623: 859623: 859623: typename iterator_traits<_InputIterator>::difference_type __n = 0; 859623: while (__first != __last) 859623: { 859623: ++__first; 859623: ++__n; 859623: } 859623: return __n; 859623: } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: inline 859623: typename iterator_traits<_RandomAccessIterator>::difference_type 859623: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 859623: random_access_iterator_tag) 859623: { 859623: 859623: 859623: 859623: return __last - __first; 859623: } 859623: 859623: 859623: 859623: template 859623: ptrdiff_t 859623: __distance(std::_List_iterator<_Tp>, 859623: std::_List_iterator<_Tp>, 859623: input_iterator_tag); 859623: 859623: template 859623: ptrdiff_t 859623: __distance(std::_List_const_iterator<_Tp>, 859623: std::_List_const_iterator<_Tp>, 859623: input_iterator_tag); 859623: 859623: 859623: 859623: 859623: template 859623: void 859623: __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete; 859623: # 146 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_funcs.h" 3 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: inline 859623: typename iterator_traits<_InputIterator>::difference_type 859623: distance(_InputIterator __first, _InputIterator __last) 859623: { 859623: 859623: return std::__distance(__first, __last, 859623: std::__iterator_category(__first)); 859623: } 859623: 859623: template 859623: inline void 859623: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 859623: { 859623: 859623: 859623: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); 859623: while (__n--) 859623: ++__i; 859623: } 859623: 859623: template 859623: inline void 859623: __advance(_BidirectionalIterator& __i, _Distance __n, 859623: bidirectional_iterator_tag) 859623: { 859623: 859623: 859623: 859623: if (__n > 0) 859623: while (__n--) 859623: ++__i; 859623: else 859623: while (__n++) 859623: --__i; 859623: } 859623: 859623: template 859623: inline void 859623: __advance(_RandomAccessIterator& __i, _Distance __n, 859623: random_access_iterator_tag) 859623: { 859623: 859623: 859623: 859623: if (__builtin_constant_p(__n) && __n == 1) 859623: ++__i; 859623: else if (__builtin_constant_p(__n) && __n == -1) 859623: --__i; 859623: else 859623: __i += __n; 859623: } 859623: 859623: 859623: 859623: template 859623: void 859623: __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; 859623: # 219 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator_base_funcs.h" 3 859623: template 859623: __attribute__((__always_inline__)) 859623: inline void 859623: advance(_InputIterator& __i, _Distance __n) 859623: { 859623: 859623: typename iterator_traits<_InputIterator>::difference_type __d = __n; 859623: std::__advance(__i, __d, std::__iterator_category(__i)); 859623: } 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] [[__gnu__::__always_inline__]] 859623: inline _InputIterator 859623: next(_InputIterator __x, typename 859623: iterator_traits<_InputIterator>::difference_type __n = 1) 859623: { 859623: 859623: 859623: std::advance(__x, __n); 859623: return __x; 859623: } 859623: 859623: template 859623: [[__nodiscard__]] [[__gnu__::__always_inline__]] 859623: inline _BidirectionalIterator 859623: prev(_BidirectionalIterator __x, typename 859623: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 859623: { 859623: 859623: 859623: 859623: std::advance(__x, -__n); 859623: return __x; 859623: } 859623: 859623: 859623: 859623: 859623: } 859623: # 50 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 1 3 859623: # 65 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ext/type_traits.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/ext/type_traits.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: 859623: extern "C++" { 859623: 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: struct __enable_if 859623: { }; 859623: 859623: template 859623: struct __enable_if 859623: { typedef _Tp __type; }; 859623: 859623: 859623: 859623: template 859623: struct __conditional_type 859623: { typedef _Iftrue __type; }; 859623: 859623: template 859623: struct __conditional_type 859623: { typedef _Iffalse __type; }; 859623: 859623: 859623: 859623: template 859623: struct __add_unsigned 859623: { 859623: private: 859623: typedef __enable_if::__value, _Tp> __if_type; 859623: 859623: public: 859623: typedef typename __if_type::__type __type; 859623: }; 859623: 859623: template<> 859623: struct __add_unsigned 859623: { typedef unsigned char __type; }; 859623: 859623: template<> 859623: struct __add_unsigned 859623: { typedef unsigned char __type; }; 859623: 859623: template<> 859623: struct __add_unsigned 859623: { typedef unsigned short __type; }; 859623: 859623: template<> 859623: struct __add_unsigned 859623: { typedef unsigned int __type; }; 859623: 859623: template<> 859623: struct __add_unsigned 859623: { typedef unsigned long __type; }; 859623: 859623: template<> 859623: struct __add_unsigned 859623: { typedef unsigned long long __type; }; 859623: 859623: 859623: template<> 859623: struct __add_unsigned; 859623: 859623: template<> 859623: struct __add_unsigned; 859623: 859623: 859623: 859623: template 859623: struct __remove_unsigned 859623: { 859623: private: 859623: typedef __enable_if::__value, _Tp> __if_type; 859623: 859623: public: 859623: typedef typename __if_type::__type __type; 859623: }; 859623: 859623: template<> 859623: struct __remove_unsigned 859623: { typedef signed char __type; }; 859623: 859623: template<> 859623: struct __remove_unsigned 859623: { typedef signed char __type; }; 859623: 859623: template<> 859623: struct __remove_unsigned 859623: { typedef short __type; }; 859623: 859623: template<> 859623: struct __remove_unsigned 859623: { typedef int __type; }; 859623: 859623: template<> 859623: struct __remove_unsigned 859623: { typedef long __type; }; 859623: 859623: template<> 859623: struct __remove_unsigned 859623: { typedef long long __type; }; 859623: 859623: 859623: template<> 859623: struct __remove_unsigned; 859623: 859623: template<> 859623: struct __remove_unsigned; 859623: 859623: 859623: 859623: template 859623: constexpr 859623: inline bool 859623: __is_null_pointer(_Type* __ptr) 859623: { return __ptr == 0; } 859623: 859623: template 859623: constexpr 859623: inline bool 859623: __is_null_pointer(_Type) 859623: { return false; } 859623: 859623: 859623: constexpr bool 859623: __is_null_pointer(std::nullptr_t) 859623: { return true; } 859623: 859623: 859623: 859623: 859623: template::__value> 859623: struct __promote 859623: { typedef double __type; }; 859623: 859623: 859623: 859623: 859623: template 859623: struct __promote<_Tp, false> 859623: { }; 859623: 859623: template<> 859623: struct __promote 859623: { typedef long double __type; }; 859623: 859623: template<> 859623: struct __promote 859623: { typedef double __type; }; 859623: 859623: template<> 859623: struct __promote 859623: { typedef float __type; }; 859623: # 246 "/usr/arm-linux-gnueabi/include/c++/15/ext/type_traits.h" 3 859623: template::__type, 859623: typename _Up2 = typename __promote<_Up>::__type> 859623: struct __promote_2 859623: { 859623: typedef __typeof__(_Tp2() + _Up2()) __type; 859623: }; 859623: 859623: template::__type, 859623: typename _Up2 = typename __promote<_Up>::__type, 859623: typename _Vp2 = typename __promote<_Vp>::__type> 859623: struct __promote_3 859623: { 859623: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 859623: }; 859623: 859623: template::__type, 859623: typename _Up2 = typename __promote<_Up>::__type, 859623: typename _Vp2 = typename __promote<_Vp>::__type, 859623: typename _Wp2 = typename __promote<_Wp>::__type> 859623: struct __promote_4 859623: { 859623: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 859623: }; 859623: 859623: 859623: 859623: } 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 66 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/ptr_traits.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/ptr_traits.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: class __undefined; 859623: 859623: 859623: 859623: template 859623: struct __get_first_arg 859623: { using type = __undefined; }; 859623: 859623: template class _SomeTemplate, typename _Tp, 859623: typename... _Types> 859623: struct __get_first_arg<_SomeTemplate<_Tp, _Types...>> 859623: { using type = _Tp; }; 859623: 859623: 859623: 859623: template 859623: struct __replace_first_arg 859623: { }; 859623: 859623: template class _SomeTemplate, typename _Up, 859623: typename _Tp, typename... _Types> 859623: struct __replace_first_arg<_SomeTemplate<_Tp, _Types...>, _Up> 859623: { using type = _SomeTemplate<_Up, _Types...>; }; 859623: 859623: 859623: template 859623: struct __ptr_traits_elem : __get_first_arg<_Ptr> 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __ptr_traits_elem<_Ptr, __void_t> 859623: { using type = typename _Ptr::element_type; }; 859623: 859623: 859623: template 859623: using __ptr_traits_elem_t = typename __ptr_traits_elem<_Ptr>::type; 859623: 859623: 859623: 859623: 859623: template::value> 859623: struct __ptr_traits_ptr_to 859623: { 859623: using pointer = _Ptr; 859623: using element_type = _Elt; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: static pointer 859623: pointer_to(element_type& __r) 859623: 859623: 859623: 859623: 859623: 859623: { return pointer::pointer_to(__r); } 859623: }; 859623: 859623: 859623: template 859623: struct __ptr_traits_ptr_to<_Ptr, _Elt, true> 859623: { }; 859623: 859623: 859623: template 859623: struct __ptr_traits_ptr_to<_Tp*, _Tp, false> 859623: { 859623: using pointer = _Tp*; 859623: using element_type = _Tp; 859623: 859623: 859623: 859623: 859623: 859623: 859623: static pointer 859623: pointer_to(element_type& __r) noexcept 859623: { return std::addressof(__r); } 859623: }; 859623: 859623: template 859623: struct __ptr_traits_impl : __ptr_traits_ptr_to<_Ptr, _Elt> 859623: { 859623: private: 859623: template 859623: using __diff_t = typename _Tp::difference_type; 859623: 859623: template 859623: using __rebind = __type_identity>; 859623: 859623: public: 859623: 859623: using pointer = _Ptr; 859623: 859623: 859623: using element_type = _Elt; 859623: 859623: 859623: using difference_type = __detected_or_t; 859623: 859623: 859623: template 859623: using rebind = typename __detected_or_t<__replace_first_arg<_Ptr, _Up>, 859623: __rebind, _Ptr, _Up>::type; 859623: }; 859623: 859623: 859623: 859623: template 859623: struct __ptr_traits_impl<_Ptr, __undefined> 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct pointer_traits : __ptr_traits_impl<_Ptr, __ptr_traits_elem_t<_Ptr>> 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct pointer_traits<_Tp*> : __ptr_traits_ptr_to<_Tp*, _Tp> 859623: { 859623: 859623: typedef _Tp* pointer; 859623: 859623: typedef _Tp element_type; 859623: 859623: typedef ptrdiff_t difference_type; 859623: 859623: template using rebind = _Up*; 859623: }; 859623: 859623: 859623: template 859623: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 859623: 859623: 859623: template 859623: [[__gnu__::__always_inline__]] 859623: constexpr _Tp* 859623: __to_address(_Tp* __ptr) noexcept 859623: { 859623: static_assert(!std::is_function<_Tp>::value, "std::to_address argument " 859623: "must not be a function pointer"); 859623: return __ptr; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: template 859623: constexpr typename std::pointer_traits<_Ptr>::element_type* 859623: __to_address(const _Ptr& __ptr) 859623: { return std::__to_address(__ptr.operator->()); } 859623: # 268 "/usr/arm-linux-gnueabi/include/c++/15/bits/ptr_traits.h" 3 859623: 859623: } 859623: # 68 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 2 3 859623: # 85 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 108 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: # 108 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: # 130 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: class reverse_iterator 859623: : public iterator::iterator_category, 859623: typename iterator_traits<_Iterator>::value_type, 859623: typename iterator_traits<_Iterator>::difference_type, 859623: typename iterator_traits<_Iterator>::pointer, 859623: typename iterator_traits<_Iterator>::reference> 859623: { 859623: template 859623: friend class reverse_iterator; 859623: # 149 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: protected: 859623: _Iterator current; 859623: 859623: typedef iterator_traits<_Iterator> __traits_type; 859623: 859623: public: 859623: typedef _Iterator iterator_type; 859623: typedef typename __traits_type::pointer pointer; 859623: 859623: typedef typename __traits_type::difference_type difference_type; 859623: typedef typename __traits_type::reference reference; 859623: # 180 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: reverse_iterator() 859623: noexcept(noexcept(_Iterator())) 859623: : current() 859623: { } 859623: 859623: 859623: 859623: 859623: explicit 859623: reverse_iterator(iterator_type __x) 859623: noexcept(noexcept(_Iterator(__x))) 859623: : current(__x) 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator(const reverse_iterator& __x) 859623: noexcept(noexcept(_Iterator(__x.current))) 859623: : current(__x.current) 859623: { } 859623: 859623: 859623: reverse_iterator& operator=(const reverse_iterator&) = default; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: 859623: 859623: 859623: 859623: reverse_iterator(const reverse_iterator<_Iter>& __x) 859623: noexcept(noexcept(_Iterator(__x.current))) 859623: : current(__x.current) 859623: { } 859623: 859623: 859623: template 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator& 859623: operator=(const reverse_iterator<_Iter>& __x) 859623: noexcept(noexcept(current = __x.current)) 859623: { 859623: current = __x.current; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: iterator_type 859623: base() const 859623: noexcept(noexcept(_Iterator(current))) 859623: { return current; } 859623: # 257 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: [[__nodiscard__]] 859623: reference 859623: operator*() const 859623: { 859623: _Iterator __tmp = current; 859623: return *--__tmp; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: pointer 859623: operator->() const 859623: 859623: 859623: 859623: 859623: { 859623: 859623: 859623: _Iterator __tmp = current; 859623: --__tmp; 859623: return _S_to_pointer(__tmp); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator& 859623: operator++() 859623: { 859623: --current; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator 859623: operator++(int) 859623: { 859623: reverse_iterator __tmp = *this; 859623: --current; 859623: return __tmp; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator& 859623: operator--() 859623: { 859623: ++current; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator 859623: operator--(int) 859623: { 859623: reverse_iterator __tmp = *this; 859623: ++current; 859623: return __tmp; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: operator+(difference_type __n) const 859623: { return reverse_iterator(current - __n); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator& 859623: operator+=(difference_type __n) 859623: { 859623: current -= __n; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: operator-(difference_type __n) const 859623: { return reverse_iterator(current + __n); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator& 859623: operator-=(difference_type __n) 859623: { 859623: current += __n; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reference 859623: operator[](difference_type __n) const 859623: { return *(*this + __n); } 859623: # 417 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: private: 859623: template 859623: static _Tp* 859623: _S_to_pointer(_Tp* __p) 859623: { return __p; } 859623: 859623: template 859623: static pointer 859623: _S_to_pointer(_Tp __t) 859623: { return __t.operator->(); } 859623: }; 859623: # 440 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const reverse_iterator<_Iterator>& __x, 859623: const reverse_iterator<_Iterator>& __y) 859623: { return __x.base() == __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<(const reverse_iterator<_Iterator>& __x, 859623: const reverse_iterator<_Iterator>& __y) 859623: { return __y.base() < __x.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator!=(const reverse_iterator<_Iterator>& __x, 859623: const reverse_iterator<_Iterator>& __y) 859623: { return !(__x == __y); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>(const reverse_iterator<_Iterator>& __x, 859623: const reverse_iterator<_Iterator>& __y) 859623: { return __y < __x; } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<=(const reverse_iterator<_Iterator>& __x, 859623: const reverse_iterator<_Iterator>& __y) 859623: { return !(__y < __x); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>=(const reverse_iterator<_Iterator>& __x, 859623: const reverse_iterator<_Iterator>& __y) 859623: { return !(__x < __y); } 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const reverse_iterator<_IteratorL>& __x, 859623: const reverse_iterator<_IteratorR>& __y) 859623: { return __x.base() == __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<(const reverse_iterator<_IteratorL>& __x, 859623: const reverse_iterator<_IteratorR>& __y) 859623: { return __x.base() > __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator!=(const reverse_iterator<_IteratorL>& __x, 859623: const reverse_iterator<_IteratorR>& __y) 859623: { return __x.base() != __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>(const reverse_iterator<_IteratorL>& __x, 859623: const reverse_iterator<_IteratorR>& __y) 859623: { return __x.base() < __y.base(); } 859623: 859623: template 859623: inline bool 859623: operator<=(const reverse_iterator<_IteratorL>& __x, 859623: const reverse_iterator<_IteratorR>& __y) 859623: { return __x.base() >= __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>=(const reverse_iterator<_IteratorL>& __x, 859623: const reverse_iterator<_IteratorR>& __y) 859623: { return __x.base() <= __y.base(); } 859623: # 617 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline auto 859623: operator-(const reverse_iterator<_IteratorL>& __x, 859623: const reverse_iterator<_IteratorR>& __y) 859623: -> decltype(__y.base() - __x.base()) 859623: { return __y.base() - __x.base(); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline reverse_iterator<_Iterator> 859623: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 859623: const reverse_iterator<_Iterator>& __x) 859623: { return reverse_iterator<_Iterator>(__x.base() - __n); } 859623: 859623: 859623: 859623: template 859623: inline reverse_iterator<_Iterator> 859623: __make_reverse_iterator(_Iterator __i) 859623: { return reverse_iterator<_Iterator>(__i); } 859623: # 659 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: struct __is_move_iterator > 859623: : __is_move_iterator<_Iterator> 859623: { }; 859623: # 676 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: class back_insert_iterator 859623: : public iterator 859623: { 859623: protected: 859623: _Container* container; 859623: 859623: public: 859623: 859623: typedef _Container container_type; 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: back_insert_iterator(_Container& __x) 859623: : container(std::__addressof(__x)) { } 859623: # 714 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: back_insert_iterator& 859623: operator=(const typename _Container::value_type& __value) 859623: { 859623: container->push_back(__value); 859623: return *this; 859623: } 859623: 859623: 859623: back_insert_iterator& 859623: operator=(typename _Container::value_type&& __value) 859623: { 859623: container->push_back(std::move(__value)); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: back_insert_iterator& 859623: operator*() 859623: { return *this; } 859623: 859623: 859623: 859623: back_insert_iterator& 859623: operator++() 859623: { return *this; } 859623: 859623: 859623: 859623: back_insert_iterator 859623: operator++(int) 859623: { return *this; } 859623: }; 859623: # 761 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline back_insert_iterator<_Container> 859623: back_inserter(_Container& __x) 859623: { return back_insert_iterator<_Container>(__x); } 859623: # 777 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: class front_insert_iterator 859623: : public iterator 859623: { 859623: protected: 859623: _Container* container; 859623: 859623: public: 859623: 859623: typedef _Container container_type; 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: front_insert_iterator(_Container& __x) 859623: : container(std::__addressof(__x)) { } 859623: # 815 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: front_insert_iterator& 859623: operator=(const typename _Container::value_type& __value) 859623: { 859623: container->push_front(__value); 859623: return *this; 859623: } 859623: 859623: 859623: front_insert_iterator& 859623: operator=(typename _Container::value_type&& __value) 859623: { 859623: container->push_front(std::move(__value)); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: front_insert_iterator& 859623: operator*() 859623: { return *this; } 859623: 859623: 859623: 859623: front_insert_iterator& 859623: operator++() 859623: { return *this; } 859623: 859623: 859623: 859623: front_insert_iterator 859623: operator++(int) 859623: { return *this; } 859623: }; 859623: # 862 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline front_insert_iterator<_Container> 859623: front_inserter(_Container& __x) 859623: { return front_insert_iterator<_Container>(__x); } 859623: # 882 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: class insert_iterator 859623: : public iterator 859623: { 859623: 859623: 859623: 859623: typedef typename _Container::iterator _Iter; 859623: 859623: protected: 859623: _Container* container; 859623: _Iter iter; 859623: 859623: public: 859623: 859623: typedef _Container container_type; 859623: # 907 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: insert_iterator(_Container& __x, _Iter __i) 859623: : container(std::__addressof(__x)), iter(__i) {} 859623: # 943 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: insert_iterator& 859623: operator=(const typename _Container::value_type& __value) 859623: { 859623: iter = container->insert(iter, __value); 859623: ++iter; 859623: return *this; 859623: } 859623: 859623: 859623: insert_iterator& 859623: operator=(typename _Container::value_type&& __value) 859623: { 859623: iter = container->insert(iter, std::move(__value)); 859623: ++iter; 859623: return *this; 859623: } 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: insert_iterator& 859623: operator*() 859623: { return *this; } 859623: 859623: 859623: 859623: insert_iterator& 859623: operator++() 859623: { return *this; } 859623: 859623: 859623: 859623: insert_iterator& 859623: operator++(int) 859623: { return *this; } 859623: }; 859623: 859623: #pragma GCC diagnostic pop 859623: # 1002 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline insert_iterator<_Container> 859623: inserter(_Container& __x, typename _Container::iterator __i) 859623: { return insert_iterator<_Container>(__x, __i); } 859623: 859623: 859623: 859623: 859623: 859623: } 859623: 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 1025 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: class __normal_iterator 859623: { 859623: protected: 859623: _Iterator _M_current; 859623: 859623: typedef std::iterator_traits<_Iterator> __traits_type; 859623: 859623: 859623: template 859623: using __convertible_from 859623: = std::__enable_if_t::value>; 859623: 859623: 859623: public: 859623: typedef _Iterator iterator_type; 859623: typedef typename __traits_type::iterator_category iterator_category; 859623: typedef typename __traits_type::value_type value_type; 859623: typedef typename __traits_type::difference_type difference_type; 859623: typedef typename __traits_type::reference reference; 859623: typedef typename __traits_type::pointer pointer; 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: constexpr 859623: __normal_iterator() noexcept 859623: : _M_current() { } 859623: 859623: __attribute__((__always_inline__)) 859623: explicit constexpr 859623: __normal_iterator(const _Iterator& __i) noexcept 859623: : _M_current(__i) { } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template> 859623: 859623: [[__gnu__::__always_inline__]] 859623: constexpr 859623: __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) 859623: noexcept 859623: # 1082 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: : _M_current(__i.base()) { } 859623: 859623: 859623: 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: constexpr 859623: reference 859623: operator*() const noexcept 859623: { return *_M_current; } 859623: 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: constexpr 859623: pointer 859623: operator->() const noexcept 859623: { return _M_current; } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __normal_iterator& 859623: operator++() noexcept 859623: { 859623: ++_M_current; 859623: return *this; 859623: } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __normal_iterator 859623: operator++(int) noexcept 859623: { return __normal_iterator(_M_current++); } 859623: 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __normal_iterator& 859623: operator--() noexcept 859623: { 859623: --_M_current; 859623: return *this; 859623: } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __normal_iterator 859623: operator--(int) noexcept 859623: { return __normal_iterator(_M_current--); } 859623: 859623: 859623: 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: constexpr 859623: reference 859623: operator[](difference_type __n) const noexcept 859623: { return _M_current[__n]; } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __normal_iterator& 859623: operator+=(difference_type __n) noexcept 859623: { _M_current += __n; return *this; } 859623: 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: constexpr 859623: __normal_iterator 859623: operator+(difference_type __n) const noexcept 859623: { return __normal_iterator(_M_current + __n); } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: __normal_iterator& 859623: operator-=(difference_type __n) noexcept 859623: { _M_current -= __n; return *this; } 859623: 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: constexpr 859623: __normal_iterator 859623: operator-(difference_type __n) const noexcept 859623: { return __normal_iterator(_M_current - __n); } 859623: 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: constexpr 859623: const _Iterator& 859623: base() const noexcept 859623: { return _M_current; } 859623: }; 859623: # 1217 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 859623: const __normal_iterator<_IteratorR, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() == __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 859623: const __normal_iterator<_Iterator, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() == __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 859623: const __normal_iterator<_IteratorR, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() != __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 859623: const __normal_iterator<_Iterator, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() != __rhs.base(); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 859623: const __normal_iterator<_IteratorR, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() < __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: inline bool 859623: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 859623: const __normal_iterator<_Iterator, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() < __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 859623: const __normal_iterator<_IteratorR, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() > __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 859623: const __normal_iterator<_Iterator, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() > __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 859623: const __normal_iterator<_IteratorR, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() <= __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 859623: const __normal_iterator<_Iterator, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() <= __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 859623: const __normal_iterator<_IteratorR, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() >= __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline bool 859623: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 859623: const __normal_iterator<_Iterator, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() >= __rhs.base(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: 859623: 859623: [[__nodiscard__, __gnu__::__always_inline__]] 859623: constexpr auto 859623: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 859623: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 859623: -> decltype(__lhs.base() - __rhs.base()) 859623: 859623: 859623: 859623: 859623: 859623: { return __lhs.base() - __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline typename __normal_iterator<_Iterator, _Container>::difference_type 859623: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 859623: const __normal_iterator<_Iterator, _Container>& __rhs) 859623: noexcept 859623: { return __lhs.base() - __rhs.base(); } 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) constexpr 859623: inline __normal_iterator<_Iterator, _Container> 859623: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 859623: __n, const __normal_iterator<_Iterator, _Container>& __i) 859623: noexcept 859623: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 859623: 859623: 859623: } 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 1434 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: class move_iterator 859623: 859623: 859623: 859623: { 859623: _Iterator _M_current; 859623: 859623: using __traits_type = iterator_traits<_Iterator>; 859623: 859623: using __base_ref = typename __traits_type::reference; 859623: 859623: 859623: template 859623: friend class move_iterator; 859623: # 1473 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: public: 859623: using iterator_type = _Iterator; 859623: # 1485 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: typedef typename __traits_type::iterator_category iterator_category; 859623: typedef typename __traits_type::value_type value_type; 859623: typedef typename __traits_type::difference_type difference_type; 859623: 859623: typedef _Iterator pointer; 859623: 859623: 859623: using reference 859623: = __conditional_t::value, 859623: typename remove_reference<__base_ref>::type&&, 859623: __base_ref>; 859623: 859623: 859623: 859623: move_iterator() 859623: : _M_current() { } 859623: 859623: explicit 859623: move_iterator(iterator_type __i) 859623: : _M_current(std::move(__i)) { } 859623: 859623: template 859623: 859623: 859623: 859623: 859623: move_iterator(const move_iterator<_Iter>& __i) 859623: : _M_current(__i._M_current) { } 859623: 859623: template 859623: 859623: 859623: 859623: 859623: 859623: move_iterator& operator=(const move_iterator<_Iter>& __i) 859623: { 859623: _M_current = __i._M_current; 859623: return *this; 859623: } 859623: 859623: 859623: [[__nodiscard__]] 859623: iterator_type 859623: base() const 859623: { return _M_current; } 859623: # 1543 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: [[__nodiscard__]] 859623: reference 859623: operator*() const 859623: 859623: 859623: 859623: { return static_cast(*_M_current); } 859623: 859623: 859623: [[__nodiscard__]] 859623: pointer 859623: operator->() const 859623: { return _M_current; } 859623: 859623: move_iterator& 859623: operator++() 859623: { 859623: ++_M_current; 859623: return *this; 859623: } 859623: 859623: move_iterator 859623: operator++(int) 859623: { 859623: move_iterator __tmp = *this; 859623: ++_M_current; 859623: return __tmp; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: move_iterator& 859623: operator--() 859623: { 859623: --_M_current; 859623: return *this; 859623: } 859623: 859623: move_iterator 859623: operator--(int) 859623: { 859623: move_iterator __tmp = *this; 859623: --_M_current; 859623: return __tmp; 859623: } 859623: 859623: [[__nodiscard__]] 859623: move_iterator 859623: operator+(difference_type __n) const 859623: { return move_iterator(_M_current + __n); } 859623: 859623: move_iterator& 859623: operator+=(difference_type __n) 859623: { 859623: _M_current += __n; 859623: return *this; 859623: } 859623: 859623: [[__nodiscard__]] 859623: move_iterator 859623: operator-(difference_type __n) const 859623: { return move_iterator(_M_current - __n); } 859623: 859623: move_iterator& 859623: operator-=(difference_type __n) 859623: { 859623: _M_current -= __n; 859623: return *this; 859623: } 859623: 859623: [[__nodiscard__]] 859623: reference 859623: operator[](difference_type __n) const 859623: 859623: 859623: 859623: { return std::move(_M_current[__n]); } 859623: # 1657 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: }; 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const move_iterator<_IteratorL>& __x, 859623: const move_iterator<_IteratorR>& __y) 859623: 859623: 859623: 859623: { return __x.base() == __y.base(); } 859623: # 1678 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator!=(const move_iterator<_IteratorL>& __x, 859623: const move_iterator<_IteratorR>& __y) 859623: { return !(__x == __y); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<(const move_iterator<_IteratorL>& __x, 859623: const move_iterator<_IteratorR>& __y) 859623: 859623: 859623: 859623: { return __x.base() < __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<=(const move_iterator<_IteratorL>& __x, 859623: const move_iterator<_IteratorR>& __y) 859623: 859623: 859623: 859623: { return !(__y < __x); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>(const move_iterator<_IteratorL>& __x, 859623: const move_iterator<_IteratorR>& __y) 859623: 859623: 859623: 859623: { return __y < __x; } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>=(const move_iterator<_IteratorL>& __x, 859623: const move_iterator<_IteratorR>& __y) 859623: 859623: 859623: 859623: { return !(__x < __y); } 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const move_iterator<_Iterator>& __x, 859623: const move_iterator<_Iterator>& __y) 859623: 859623: { return __x.base() == __y.base(); } 859623: # 1745 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator!=(const move_iterator<_Iterator>& __x, 859623: const move_iterator<_Iterator>& __y) 859623: { return !(__x == __y); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<(const move_iterator<_Iterator>& __x, 859623: const move_iterator<_Iterator>& __y) 859623: { return __x.base() < __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<=(const move_iterator<_Iterator>& __x, 859623: const move_iterator<_Iterator>& __y) 859623: { return !(__y < __x); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>(const move_iterator<_Iterator>& __x, 859623: const move_iterator<_Iterator>& __y) 859623: { return __y < __x; } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>=(const move_iterator<_Iterator>& __x, 859623: const move_iterator<_Iterator>& __y) 859623: { return !(__x < __y); } 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline auto 859623: operator-(const move_iterator<_IteratorL>& __x, 859623: const move_iterator<_IteratorR>& __y) 859623: -> decltype(__x.base() - __y.base()) 859623: { return __x.base() - __y.base(); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline move_iterator<_Iterator> 859623: operator+(typename move_iterator<_Iterator>::difference_type __n, 859623: const move_iterator<_Iterator>& __x) 859623: 859623: 859623: 859623: { return __x + __n; } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline move_iterator<_Iterator> 859623: make_move_iterator(_Iterator __i) 859623: { return move_iterator<_Iterator>(std::move(__i)); } 859623: 859623: template::value_type>::value, 859623: _Iterator, move_iterator<_Iterator>>> 859623: [[__nodiscard__]] 859623: constexpr _ReturnType 859623: __make_move_if_noexcept_iterator(_Iterator __i) 859623: { return _ReturnType(__i); } 859623: 859623: 859623: 859623: template::value, 859623: const _Tp*, move_iterator<_Tp*>>> 859623: [[__nodiscard__]] 859623: constexpr _ReturnType 859623: __make_move_if_noexcept_iterator(_Tp* __i) 859623: { return _ReturnType(__i); } 859623: 859623: template 859623: struct __is_move_iterator > 859623: { 859623: enum { __value = 1 }; 859623: typedef __true_type __type; 859623: }; 859623: # 2980 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: } 859623: 859623: namespace __gnu_debug 859623: { 859623: template 859623: class _Safe_iterator; 859623: } 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: 859623: inline _Iterator 859623: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 859623: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 859623: { return __it.base(); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: 859623: inline _Iterator 859623: __niter_base(_Iterator __it) 859623: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 859623: { return __it; } 859623: # 3027 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: template 859623: 859623: decltype(std::__niter_base(std::declval<_Ite>())) 859623: __niter_base(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, 859623: std::random_access_iterator_tag>&) 859623: noexcept(std::is_nothrow_copy_constructible<_Ite>::value); 859623: 859623: 859623: 859623: template 859623: 859623: inline auto 859623: __niter_base(reverse_iterator<_Iterator> __it) 859623: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 859623: { return __make_reverse_iterator(__niter_base(__it.base())); } 859623: 859623: template 859623: 859623: inline auto 859623: __niter_base(move_iterator<_Iterator> __it) 859623: -> decltype(make_move_iterator(__niter_base(__it.base()))) 859623: { return make_move_iterator(__niter_base(__it.base())); } 859623: 859623: template 859623: 859623: inline auto 859623: __miter_base(reverse_iterator<_Iterator> __it) 859623: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 859623: { return __make_reverse_iterator(__miter_base(__it.base())); } 859623: 859623: template 859623: 859623: inline auto 859623: __miter_base(move_iterator<_Iterator> __it) 859623: -> decltype(__miter_base(__it.base())) 859623: { return __miter_base(__it.base()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: 859623: inline _From 859623: __niter_wrap(_From __from, _To __res) 859623: { return __from + (std::__niter_base(__res) - std::__niter_base(__from)); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] __attribute__((__always_inline__)) 859623: 859623: inline _Iterator 859623: __niter_wrap(const _Iterator&, _Iterator __res) 859623: { return __res; } 859623: # 3113 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_iterator.h" 3 859623: 859623: } 859623: # 51 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 1 3 859623: # 63 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 116 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: template 859623: struct unary_function 859623: { 859623: 859623: typedef _Arg argument_type; 859623: 859623: 859623: typedef _Result result_type; 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct binary_function 859623: { 859623: 859623: typedef _Arg1 first_argument_type; 859623: 859623: 859623: typedef _Arg2 second_argument_type; 859623: 859623: 859623: typedef _Result result_type; 859623: } __attribute__ ((__deprecated__)); 859623: # 179 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: 859623: template 859623: struct plus : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x + __y; } 859623: }; 859623: 859623: 859623: template 859623: struct minus : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x - __y; } 859623: }; 859623: 859623: 859623: template 859623: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x * __y; } 859623: }; 859623: 859623: 859623: template 859623: struct divides : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x / __y; } 859623: }; 859623: 859623: 859623: template 859623: struct modulus : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x % __y; } 859623: }; 859623: 859623: 859623: template 859623: struct negate : public unary_function<_Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x) const 859623: { return -__x; } 859623: }; 859623: #pragma GCC diagnostic pop 859623: # 365 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: 859623: template 859623: struct equal_to : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x == __y; } 859623: }; 859623: 859623: 859623: template 859623: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x != __y; } 859623: }; 859623: 859623: 859623: template 859623: struct greater : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x > __y; } 859623: }; 859623: 859623: 859623: template 859623: struct less : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x < __y; } 859623: }; 859623: 859623: 859623: template 859623: struct greater_equal : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x >= __y; } 859623: }; 859623: 859623: 859623: template 859623: struct less_equal : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x <= __y; } 859623: }; 859623: 859623: 859623: template 859623: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 859623: { 859623: bool 859623: operator()(_Tp* __x, _Tp* __y) const noexcept 859623: { 859623: 859623: 859623: 859623: 859623: return (unsigned int)__x > (unsigned int)__y; 859623: } 859623: }; 859623: 859623: 859623: template 859623: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 859623: { 859623: bool 859623: operator()(_Tp* __x, _Tp* __y) const noexcept 859623: { 859623: 859623: 859623: 859623: 859623: return (unsigned int)__x < (unsigned int)__y; 859623: } 859623: }; 859623: 859623: 859623: template 859623: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 859623: { 859623: bool 859623: operator()(_Tp* __x, _Tp* __y) const noexcept 859623: { 859623: 859623: 859623: 859623: 859623: return (unsigned int)__x >= (unsigned int)__y; 859623: } 859623: }; 859623: 859623: 859623: template 859623: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 859623: { 859623: bool 859623: operator()(_Tp* __x, _Tp* __y) const noexcept 859623: { 859623: 859623: 859623: 859623: 859623: return (unsigned int)__x <= (unsigned int)__y; 859623: } 859623: }; 859623: #pragma GCC diagnostic pop 859623: # 788 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: 859623: template 859623: struct logical_and : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x && __y; } 859623: }; 859623: 859623: 859623: template 859623: struct logical_or : public binary_function<_Tp, _Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x || __y; } 859623: }; 859623: 859623: 859623: template 859623: struct logical_not : public unary_function<_Tp, bool> 859623: { 859623: 859623: bool 859623: operator()(const _Tp& __x) const 859623: { return !__x; } 859623: }; 859623: #pragma GCC diagnostic pop 859623: # 884 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: 859623: 859623: template 859623: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x & __y; } 859623: }; 859623: 859623: template 859623: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x | __y; } 859623: }; 859623: 859623: template 859623: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x, const _Tp& __y) const 859623: { return __x ^ __y; } 859623: }; 859623: 859623: template 859623: struct bit_not : public unary_function<_Tp, _Tp> 859623: { 859623: 859623: _Tp 859623: operator()(const _Tp& __x) const 859623: { return ~__x; } 859623: }; 859623: #pragma GCC diagnostic pop 859623: # 984 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: # 1020 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: template 859623: class unary_negate 859623: : public unary_function 859623: { 859623: protected: 859623: _Predicate _M_pred; 859623: 859623: public: 859623: 859623: explicit 859623: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 859623: 859623: 859623: bool 859623: operator()(const typename _Predicate::argument_type& __x) const 859623: { return !_M_pred(__x); } 859623: }; 859623: 859623: 859623: template 859623: 859623: 859623: inline unary_negate<_Predicate> 859623: not1(const _Predicate& __pred) 859623: { return unary_negate<_Predicate>(__pred); } 859623: 859623: 859623: template 859623: class binary_negate 859623: : public binary_function 859623: { 859623: protected: 859623: _Predicate _M_pred; 859623: 859623: public: 859623: 859623: explicit 859623: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 859623: 859623: 859623: bool 859623: operator()(const typename _Predicate::first_argument_type& __x, 859623: const typename _Predicate::second_argument_type& __y) const 859623: { return !_M_pred(__x, __y); } 859623: }; 859623: 859623: 859623: template 859623: 859623: 859623: inline binary_negate<_Predicate> 859623: not2(const _Predicate& __pred) 859623: { return binary_negate<_Predicate>(__pred); } 859623: # 1101 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: template 859623: class pointer_to_unary_function : public unary_function<_Arg, _Result> 859623: { 859623: protected: 859623: _Result (*_M_ptr)(_Arg); 859623: 859623: public: 859623: pointer_to_unary_function() { } 859623: 859623: explicit 859623: pointer_to_unary_function(_Result (*__x)(_Arg)) 859623: : _M_ptr(__x) { } 859623: 859623: _Result 859623: operator()(_Arg __x) const 859623: { return _M_ptr(__x); } 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 859623: inline pointer_to_unary_function<_Arg, _Result> 859623: ptr_fun(_Result (*__x)(_Arg)) 859623: { return pointer_to_unary_function<_Arg, _Result>(__x); } 859623: 859623: 859623: template 859623: class pointer_to_binary_function 859623: : public binary_function<_Arg1, _Arg2, _Result> 859623: { 859623: protected: 859623: _Result (*_M_ptr)(_Arg1, _Arg2); 859623: 859623: public: 859623: pointer_to_binary_function() { } 859623: 859623: explicit 859623: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 859623: : _M_ptr(__x) { } 859623: 859623: _Result 859623: operator()(_Arg1 __x, _Arg2 __y) const 859623: { return _M_ptr(__x, __y); } 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 859623: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 859623: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 859623: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 859623: 859623: 859623: template 859623: struct _Identity 859623: : public unary_function<_Tp, _Tp> 859623: { 859623: _Tp& 859623: operator()(_Tp& __x) const 859623: { return __x; } 859623: 859623: const _Tp& 859623: operator()(const _Tp& __x) const 859623: { return __x; } 859623: }; 859623: 859623: 859623: template struct _Identity : _Identity<_Tp> { }; 859623: 859623: template 859623: struct _Select1st 859623: : public unary_function<_Pair, typename _Pair::first_type> 859623: { 859623: typename _Pair::first_type& 859623: operator()(_Pair& __x) const 859623: { return __x.first; } 859623: 859623: const typename _Pair::first_type& 859623: operator()(const _Pair& __x) const 859623: { return __x.first; } 859623: 859623: 859623: template 859623: typename _Pair2::first_type& 859623: operator()(_Pair2& __x) const 859623: { return __x.first; } 859623: 859623: template 859623: const typename _Pair2::first_type& 859623: operator()(const _Pair2& __x) const 859623: { return __x.first; } 859623: 859623: }; 859623: 859623: template 859623: struct _Select2nd 859623: : public unary_function<_Pair, typename _Pair::second_type> 859623: { 859623: typename _Pair::second_type& 859623: operator()(_Pair& __x) const 859623: { return __x.second; } 859623: 859623: const typename _Pair::second_type& 859623: operator()(const _Pair& __x) const 859623: { return __x.second; } 859623: }; 859623: # 1228 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: template 859623: class mem_fun_t : public unary_function<_Tp*, _Ret> 859623: { 859623: public: 859623: explicit 859623: mem_fun_t(_Ret (_Tp::*__pf)()) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(_Tp* __p) const 859623: { return (__p->*_M_f)(); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)(); 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: class const_mem_fun_t : public unary_function 859623: { 859623: public: 859623: explicit 859623: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(const _Tp* __p) const 859623: { return (__p->*_M_f)(); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)() const; 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 859623: { 859623: public: 859623: explicit 859623: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(_Tp& __r) const 859623: { return (__r.*_M_f)(); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)(); 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 859623: { 859623: public: 859623: explicit 859623: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(const _Tp& __r) const 859623: { return (__r.*_M_f)(); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)() const; 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 859623: { 859623: public: 859623: explicit 859623: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(_Tp* __p, _Arg __x) const 859623: { return (__p->*_M_f)(__x); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)(_Arg); 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: class const_mem_fun1_t : public binary_function 859623: { 859623: public: 859623: explicit 859623: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(const _Tp* __p, _Arg __x) const 859623: { return (__p->*_M_f)(__x); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)(_Arg) const; 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 859623: { 859623: public: 859623: explicit 859623: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(_Tp& __r, _Arg __x) const 859623: { return (__r.*_M_f)(__x); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)(_Arg); 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: template 859623: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 859623: { 859623: public: 859623: explicit 859623: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 859623: : _M_f(__pf) { } 859623: 859623: _Ret 859623: operator()(const _Tp& __r, _Arg __x) const 859623: { return (__r.*_M_f)(__x); } 859623: 859623: private: 859623: _Ret (_Tp::*_M_f)(_Arg) const; 859623: } __attribute__ ((__deprecated__)); 859623: 859623: 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline mem_fun_t<_Ret, _Tp> 859623: mem_fun(_Ret (_Tp::*__f)()) 859623: { return mem_fun_t<_Ret, _Tp>(__f); } 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline const_mem_fun_t<_Ret, _Tp> 859623: mem_fun(_Ret (_Tp::*__f)() const) 859623: { return const_mem_fun_t<_Ret, _Tp>(__f); } 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline mem_fun_ref_t<_Ret, _Tp> 859623: mem_fun_ref(_Ret (_Tp::*__f)()) 859623: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline const_mem_fun_ref_t<_Ret, _Tp> 859623: mem_fun_ref(_Ret (_Tp::*__f)() const) 859623: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline mem_fun1_t<_Ret, _Tp, _Arg> 859623: mem_fun(_Ret (_Tp::*__f)(_Arg)) 859623: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 859623: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 859623: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 859623: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 859623: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 859623: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 859623: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 859623: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 859623: #pragma GCC diagnostic pop 859623: # 1437 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 3 859623: 859623: } 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/backward/binders.h" 1 3 859623: # 60 "/usr/arm-linux-gnueabi/include/c++/15/backward/binders.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 107 "/usr/arm-linux-gnueabi/include/c++/15/backward/binders.h" 3 859623: template 859623: class binder1st 859623: : public unary_function 859623: { 859623: protected: 859623: _Operation op; 859623: typename _Operation::first_argument_type value; 859623: 859623: public: 859623: binder1st(const _Operation& __x, 859623: const typename _Operation::first_argument_type& __y) 859623: : op(__x), value(__y) { } 859623: 859623: typename _Operation::result_type 859623: operator()(const typename _Operation::second_argument_type& __x) const 859623: { return op(value, __x); } 859623: 859623: 859623: 859623: typename _Operation::result_type 859623: operator()(typename _Operation::second_argument_type& __x) const 859623: { return op(value, __x); } 859623: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 859623: 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 859623: inline binder1st<_Operation> 859623: bind1st(const _Operation& __fn, const _Tp& __x) 859623: { 859623: typedef typename _Operation::first_argument_type _Arg1_type; 859623: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 859623: } 859623: 859623: 859623: template 859623: class binder2nd 859623: : public unary_function 859623: { 859623: protected: 859623: _Operation op; 859623: typename _Operation::second_argument_type value; 859623: 859623: public: 859623: binder2nd(const _Operation& __x, 859623: const typename _Operation::second_argument_type& __y) 859623: : op(__x), value(__y) { } 859623: 859623: typename _Operation::result_type 859623: operator()(const typename _Operation::first_argument_type& __x) const 859623: { return op(__x, value); } 859623: 859623: 859623: 859623: typename _Operation::result_type 859623: operator()(typename _Operation::first_argument_type& __x) const 859623: { return op(__x, value); } 859623: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 859623: 859623: 859623: template 859623: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 859623: inline binder2nd<_Operation> 859623: bind2nd(const _Operation& __fn, const _Tp& __x) 859623: { 859623: typedef typename _Operation::second_argument_type _Arg2_type; 859623: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 859623: } 859623: 859623: 859623: 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 1442 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_function.h" 2 3 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ext/numeric_traits.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/ext/numeric_traits.h" 3 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/ext/numeric_traits.h" 3 859623: template 859623: struct __is_integer_nonstrict 859623: : public std::__is_integer<_Tp> 859623: { 859623: using std::__is_integer<_Tp>::__value; 859623: 859623: 859623: enum { __width = __value ? sizeof(_Tp) * 8 : 0 }; 859623: }; 859623: 859623: template 859623: struct __numeric_traits_integer 859623: { 859623: 859623: static_assert(__is_integer_nonstrict<_Value>::__value, 859623: "invalid specialization"); 859623: 859623: 859623: 859623: 859623: static const bool __is_signed = (_Value)(-1) < 0; 859623: static const int __digits 859623: = __is_integer_nonstrict<_Value>::__width - __is_signed; 859623: 859623: 859623: static const _Value __max = __is_signed 859623: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1) 859623: : ~(_Value)0; 859623: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0; 859623: }; 859623: 859623: template 859623: const _Value __numeric_traits_integer<_Value>::__min; 859623: 859623: template 859623: const _Value __numeric_traits_integer<_Value>::__max; 859623: 859623: template 859623: const bool __numeric_traits_integer<_Value>::__is_signed; 859623: 859623: template 859623: const int __numeric_traits_integer<_Value>::__digits; 859623: # 139 "/usr/arm-linux-gnueabi/include/c++/15/ext/numeric_traits.h" 3 859623: template 859623: using __int_traits = __numeric_traits_integer<_Tp>; 859623: # 159 "/usr/arm-linux-gnueabi/include/c++/15/ext/numeric_traits.h" 3 859623: template 859623: struct __numeric_traits_floating 859623: { 859623: 859623: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 643L / 2136); 859623: 859623: 859623: static const bool __is_signed = true; 859623: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15); 859623: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308); 859623: }; 859623: 859623: template 859623: const int __numeric_traits_floating<_Value>::__max_digits10; 859623: 859623: template 859623: const bool __numeric_traits_floating<_Value>::__is_signed; 859623: 859623: template 859623: const int __numeric_traits_floating<_Value>::__digits10; 859623: 859623: template 859623: const int __numeric_traits_floating<_Value>::__max_exponent10; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __numeric_traits 859623: : public __numeric_traits_integer<_Value> 859623: { }; 859623: 859623: template<> 859623: struct __numeric_traits 859623: : public __numeric_traits_floating 859623: { }; 859623: 859623: template<> 859623: struct __numeric_traits 859623: : public __numeric_traits_floating 859623: { }; 859623: 859623: template<> 859623: struct __numeric_traits 859623: : public __numeric_traits_floating 859623: { }; 859623: # 240 "/usr/arm-linux-gnueabi/include/c++/15/ext/numeric_traits.h" 3 859623: 859623: } 859623: # 53 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 1 3 859623: # 64 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 1 3 859623: # 62 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 1 3 859623: # 45 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: struct tuple_size; 859623: 859623: 859623: 859623: 859623: 859623: template::type, 859623: typename = typename enable_if::value>::type, 859623: size_t = tuple_size<_Tp>::value> 859623: using __enable_if_has_tuple_size = _Tp; 859623: 859623: template 859623: struct tuple_size> 859623: : public tuple_size<_Tp> { }; 859623: 859623: template 859623: struct tuple_size> 859623: : public tuple_size<_Tp> { }; 859623: 859623: template 859623: struct tuple_size> 859623: : public tuple_size<_Tp> { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct tuple_element; 859623: 859623: 859623: template 859623: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 859623: 859623: template 859623: struct tuple_element<__i, const _Tp> 859623: { 859623: using type = const __tuple_element_t<__i, _Tp>; 859623: }; 859623: 859623: template 859623: struct tuple_element<__i, volatile _Tp> 859623: { 859623: using type = volatile __tuple_element_t<__i, _Tp>; 859623: }; 859623: 859623: template 859623: struct tuple_element<__i, const volatile _Tp> 859623: { 859623: using type = const volatile __tuple_element_t<__i, _Tp>; 859623: }; 859623: # 142 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 3 859623: template struct _Index_tuple { }; 859623: 859623: 859623: template 859623: struct _Build_index_tuple 859623: { 859623: # 156 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 3 859623: using __type = _Index_tuple<__integer_pack(_Num)...>; 859623: 859623: }; 859623: # 234 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 3 859623: template 859623: struct _Nth_type 859623: { using type = __type_pack_element<_Np, _Types...>; }; 859623: # 284 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 3 859623: struct _Swallow_assign 859623: { 859623: template 859623: constexpr const _Swallow_assign& 859623: operator=(const _Tp&) const noexcept 859623: { return *this; } 859623: }; 859623: # 309 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 3 859623: constexpr _Swallow_assign ignore{}; 859623: # 319 "/usr/arm-linux-gnueabi/include/c++/15/bits/utility.h" 3 859623: 859623: } 859623: # 63 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 79 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 859623: 859623: 859623: constexpr piecewise_construct_t piecewise_construct = 859623: piecewise_construct_t(); 859623: 859623: 859623: 859623: 859623: template 859623: struct pair; 859623: 859623: template 859623: class tuple; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct array; 859623: 859623: template 859623: struct _Index_tuple; 859623: 859623: template 859623: class complex; 859623: 859623: template 859623: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 859623: get(pair<_Tp1, _Tp2>& __in) noexcept; 859623: 859623: template 859623: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 859623: get(pair<_Tp1, _Tp2>&& __in) noexcept; 859623: 859623: template 859623: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 859623: get(const pair<_Tp1, _Tp2>& __in) noexcept; 859623: 859623: template 859623: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 859623: get(const pair<_Tp1, _Tp2>&& __in) noexcept; 859623: 859623: template 859623: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 859623: get(tuple<_Elements...>& __t) noexcept; 859623: 859623: template 859623: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 859623: get(const tuple<_Elements...>& __t) noexcept; 859623: 859623: template 859623: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 859623: get(tuple<_Elements...>&& __t) noexcept; 859623: 859623: template 859623: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 859623: get(const tuple<_Elements...>&& __t) noexcept; 859623: 859623: template 859623: constexpr _Tp& 859623: get(array<_Tp, _Nm>&) noexcept; 859623: 859623: template 859623: constexpr _Tp&& 859623: get(array<_Tp, _Nm>&&) noexcept; 859623: 859623: template 859623: constexpr const _Tp& 859623: get(const array<_Tp, _Nm>&) noexcept; 859623: 859623: template 859623: constexpr const _Tp&& 859623: get(const array<_Tp, _Nm>&&) noexcept; 859623: # 176 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template 859623: struct _PCC 859623: { 859623: template 859623: static constexpr bool _ConstructiblePair() 859623: { 859623: return __and_, 859623: is_constructible<_T2, const _U2&>>::value; 859623: } 859623: 859623: template 859623: static constexpr bool _ImplicitlyConvertiblePair() 859623: { 859623: return __and_, 859623: is_convertible>::value; 859623: } 859623: 859623: template 859623: static constexpr bool _MoveConstructiblePair() 859623: { 859623: return __and_, 859623: is_constructible<_T2, _U2&&>>::value; 859623: } 859623: 859623: template 859623: static constexpr bool _ImplicitlyMoveConvertiblePair() 859623: { 859623: return __and_, 859623: is_convertible<_U2&&, _T2>>::value; 859623: } 859623: }; 859623: 859623: template 859623: struct _PCC 859623: { 859623: template 859623: static constexpr bool _ConstructiblePair() 859623: { 859623: return false; 859623: } 859623: 859623: template 859623: static constexpr bool _ImplicitlyConvertiblePair() 859623: { 859623: return false; 859623: } 859623: 859623: template 859623: static constexpr bool _MoveConstructiblePair() 859623: { 859623: return false; 859623: } 859623: 859623: template 859623: static constexpr bool _ImplicitlyMoveConvertiblePair() 859623: { 859623: return false; 859623: } 859623: }; 859623: # 278 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template class __pair_base 859623: { 859623: 859623: template friend struct pair; 859623: __pair_base() = default; 859623: ~__pair_base() = default; 859623: __pair_base(const __pair_base&) = default; 859623: __pair_base& operator=(const __pair_base&) = delete; 859623: 859623: }; 859623: # 301 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template 859623: struct pair 859623: : public __pair_base<_T1, _T2> 859623: { 859623: typedef _T1 first_type; 859623: typedef _T2 second_type; 859623: 859623: _T1 first; 859623: _T2 second; 859623: 859623: 859623: constexpr pair(const pair&) = default; 859623: constexpr pair(pair&&) = default; 859623: 859623: template 859623: 859623: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 859623: 859623: 859623: void 859623: swap(pair& __p) 859623: noexcept(__and_<__is_nothrow_swappable<_T1>, 859623: __is_nothrow_swappable<_T2>>::value) 859623: { 859623: using std::swap; 859623: swap(first, __p.first); 859623: swap(second, __p.second); 859623: } 859623: # 349 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: private: 859623: template 859623: 859623: pair(tuple<_Args1...>&, tuple<_Args2...>&, 859623: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 859623: public: 859623: # 739 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template , 859623: __is_implicitly_default_constructible<_U2>> 859623: ::value, bool>::type = true> 859623: constexpr pair() 859623: : first(), second() { } 859623: 859623: template , 859623: is_default_constructible<_U2>, 859623: __not_< 859623: __and_<__is_implicitly_default_constructible<_U1>, 859623: __is_implicitly_default_constructible<_U2>>>> 859623: ::value, bool>::type = false> 859623: explicit constexpr pair() 859623: : first(), second() { } 859623: 859623: 859623: 859623: using _PCCP = _PCC; 859623: 859623: 859623: 859623: template() 859623: && _PCCP::template 859623: _ImplicitlyConvertiblePair<_U1, _U2>(), 859623: bool>::type=true> 859623: constexpr pair(const _T1& __a, const _T2& __b) 859623: : first(__a), second(__b) { } 859623: 859623: 859623: template() 859623: && !_PCCP::template 859623: _ImplicitlyConvertiblePair<_U1, _U2>(), 859623: bool>::type=false> 859623: explicit constexpr pair(const _T1& __a, const _T2& __b) 859623: : first(__a), second(__b) { } 859623: 859623: 859623: 859623: template 859623: using _PCCFP = _PCC::value 859623: || !is_same<_T2, _U2>::value, 859623: _T1, _T2>; 859623: 859623: 859623: template::template 859623: _ConstructiblePair<_U1, _U2>() 859623: && _PCCFP<_U1, _U2>::template 859623: _ImplicitlyConvertiblePair<_U1, _U2>(), 859623: bool>::type=true> 859623: constexpr pair(const pair<_U1, _U2>& __p) 859623: : first(__p.first), second(__p.second) 859623: { ; } 859623: 859623: template::template 859623: _ConstructiblePair<_U1, _U2>() 859623: && !_PCCFP<_U1, _U2>::template 859623: _ImplicitlyConvertiblePair<_U1, _U2>(), 859623: bool>::type=false> 859623: explicit constexpr pair(const pair<_U1, _U2>& __p) 859623: : first(__p.first), second(__p.second) 859623: { ; } 859623: # 823 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: private: 859623: 859623: 859623: 859623: struct __zero_as_null_pointer_constant 859623: { 859623: __zero_as_null_pointer_constant(int __zero_as_null_pointer_constant::*) 859623: { } 859623: template::value>> 859623: __zero_as_null_pointer_constant(_Tp) = delete; 859623: }; 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: template>, 859623: is_pointer<_T2>, 859623: is_constructible<_T1, _U1>, 859623: __not_>, 859623: is_convertible<_U1, _T1>>::value, 859623: bool> = true> 859623: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 859623: constexpr 859623: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 859623: : first(std::forward<_U1>(__x)), second(nullptr) 859623: { ; } 859623: 859623: template>, 859623: is_pointer<_T2>, 859623: is_constructible<_T1, _U1>, 859623: __not_>, 859623: __not_>>::value, 859623: bool> = false> 859623: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 859623: explicit constexpr 859623: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 859623: : first(std::forward<_U1>(__x)), second(nullptr) 859623: { ; } 859623: 859623: template, 859623: __not_>, 859623: is_constructible<_T2, _U2>, 859623: __not_>, 859623: is_convertible<_U2, _T2>>::value, 859623: bool> = true> 859623: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 859623: constexpr 859623: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 859623: : first(nullptr), second(std::forward<_U2>(__y)) 859623: { ; } 859623: 859623: template, 859623: __not_>, 859623: is_constructible<_T2, _U2>, 859623: __not_>, 859623: __not_>>::value, 859623: bool> = false> 859623: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 859623: explicit constexpr 859623: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 859623: : first(nullptr), second(std::forward<_U2>(__y)) 859623: { ; } 859623: 859623: 859623: 859623: template() 859623: && _PCCP::template 859623: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 859623: bool>::type=true> 859623: constexpr pair(_U1&& __x, _U2&& __y) 859623: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) 859623: { ; } 859623: 859623: template() 859623: && !_PCCP::template 859623: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 859623: bool>::type=false> 859623: explicit constexpr pair(_U1&& __x, _U2&& __y) 859623: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) 859623: { ; } 859623: 859623: 859623: template::template 859623: _MoveConstructiblePair<_U1, _U2>() 859623: && _PCCFP<_U1, _U2>::template 859623: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 859623: bool>::type=true> 859623: constexpr pair(pair<_U1, _U2>&& __p) 859623: : first(std::forward<_U1>(__p.first)), 859623: second(std::forward<_U2>(__p.second)) 859623: { ; } 859623: 859623: template::template 859623: _MoveConstructiblePair<_U1, _U2>() 859623: && !_PCCFP<_U1, _U2>::template 859623: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 859623: bool>::type=false> 859623: explicit constexpr pair(pair<_U1, _U2>&& __p) 859623: : first(std::forward<_U1>(__p.first)), 859623: second(std::forward<_U2>(__p.second)) 859623: { ; } 859623: 859623: 859623: 859623: pair& 859623: operator=(__conditional_t<__and_, 859623: is_copy_assignable<_T2>>::value, 859623: const pair&, const __nonesuch&> __p) 859623: { 859623: first = __p.first; 859623: second = __p.second; 859623: return *this; 859623: } 859623: 859623: pair& 859623: operator=(__conditional_t<__and_, 859623: is_move_assignable<_T2>>::value, 859623: pair&&, __nonesuch&&> __p) 859623: noexcept(__and_, 859623: is_nothrow_move_assignable<_T2>>::value) 859623: { 859623: first = std::forward(__p.first); 859623: second = std::forward(__p.second); 859623: return *this; 859623: } 859623: 859623: template 859623: typename enable_if<__and_, 859623: is_assignable<_T2&, const _U2&>>::value, 859623: pair&>::type 859623: operator=(const pair<_U1, _U2>& __p) 859623: { 859623: first = __p.first; 859623: second = __p.second; 859623: return *this; 859623: } 859623: 859623: template 859623: typename enable_if<__and_, 859623: is_assignable<_T2&, _U2&&>>::value, 859623: pair&>::type 859623: operator=(pair<_U1, _U2>&& __p) 859623: { 859623: first = std::forward<_U1>(__p.first); 859623: second = std::forward<_U2>(__p.second); 859623: return *this; 859623: } 859623: # 1015 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: }; 859623: # 1057 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline constexpr bool 859623: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 859623: { return __x.first == __y.first && __x.second == __y.second; } 859623: # 1070 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline constexpr bool 859623: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 859623: { return __x.first < __y.first 859623: || (!(__y.first < __x.first) && __x.second < __y.second); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline constexpr bool 859623: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 859623: { return !(__x == __y); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline constexpr bool 859623: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 859623: { return __y < __x; } 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline constexpr bool 859623: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 859623: { return !(__y < __x); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline constexpr bool 859623: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 859623: { return !(__x < __y); } 859623: # 1112 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template 859623: inline 859623: 859623: 859623: 859623: 859623: 859623: void 859623: 859623: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 859623: noexcept(noexcept(__x.swap(__y))) 859623: { __x.swap(__y); } 859623: # 1161 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template 859623: constexpr pair::__type, 859623: typename __decay_and_strip<_T2>::__type> 859623: make_pair(_T1&& __x, _T2&& __y) 859623: { 859623: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 859623: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 859623: typedef pair<__ds_type1, __ds_type2> __pair_type; 859623: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 859623: } 859623: # 1184 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: template 859623: struct __is_tuple_like_impl> : true_type 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct tuple_size> 859623: : public integral_constant { }; 859623: 859623: 859623: template 859623: struct tuple_element<0, pair<_Tp1, _Tp2>> 859623: { typedef _Tp1 type; }; 859623: 859623: 859623: template 859623: struct tuple_element<1, pair<_Tp1, _Tp2>> 859623: { typedef _Tp2 type; }; 859623: # 1213 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++14-extensions" 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: inline constexpr bool __is_pair = false; 859623: 859623: template 859623: inline constexpr bool __is_pair> = true; 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: template 859623: struct __pair_get; 859623: 859623: template<> 859623: struct __pair_get<0> 859623: { 859623: template 859623: static constexpr _Tp1& 859623: __get(pair<_Tp1, _Tp2>& __pair) noexcept 859623: { return __pair.first; } 859623: 859623: template 859623: static constexpr _Tp1&& 859623: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 859623: { return std::forward<_Tp1>(__pair.first); } 859623: 859623: template 859623: static constexpr const _Tp1& 859623: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 859623: { return __pair.first; } 859623: 859623: template 859623: static constexpr const _Tp1&& 859623: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 859623: { return std::forward(__pair.first); } 859623: }; 859623: 859623: template<> 859623: struct __pair_get<1> 859623: { 859623: template 859623: static constexpr _Tp2& 859623: __get(pair<_Tp1, _Tp2>& __pair) noexcept 859623: { return __pair.second; } 859623: 859623: template 859623: static constexpr _Tp2&& 859623: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 859623: { return std::forward<_Tp2>(__pair.second); } 859623: 859623: template 859623: static constexpr const _Tp2& 859623: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 859623: { return __pair.second; } 859623: 859623: template 859623: static constexpr const _Tp2&& 859623: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 859623: { return std::forward(__pair.second); } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 859623: get(pair<_Tp1, _Tp2>& __in) noexcept 859623: { return __pair_get<_Int>::__get(__in); } 859623: 859623: template 859623: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 859623: get(pair<_Tp1, _Tp2>&& __in) noexcept 859623: { return __pair_get<_Int>::__move_get(std::move(__in)); } 859623: 859623: template 859623: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 859623: get(const pair<_Tp1, _Tp2>& __in) noexcept 859623: { return __pair_get<_Int>::__const_get(__in); } 859623: 859623: template 859623: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 859623: get(const pair<_Tp1, _Tp2>&& __in) noexcept 859623: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 859623: # 1365 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_pair.h" 3 859623: 859623: } 859623: # 65 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 2 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/debug/debug.h" 1 3 859623: # 48 "/usr/arm-linux-gnueabi/include/c++/15/debug/debug.h" 3 859623: namespace std 859623: { 859623: namespace __debug { } 859623: } 859623: 859623: 859623: 859623: 859623: namespace __gnu_debug 859623: { 859623: using namespace std::__debug; 859623: 859623: template 859623: struct _Safe_iterator; 859623: } 859623: # 70 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/predefined_ops.h" 1 3 859623: # 35 "/usr/arm-linux-gnueabi/include/c++/15/bits/predefined_ops.h" 3 859623: namespace __gnu_cxx 859623: { 859623: namespace __ops 859623: { 859623: struct _Iter_less_iter 859623: { 859623: template 859623: 859623: bool 859623: operator()(_Iterator1 __it1, _Iterator2 __it2) const 859623: { return *__it1 < *__it2; } 859623: }; 859623: 859623: 859623: inline _Iter_less_iter 859623: __iter_less_iter() 859623: { return _Iter_less_iter(); } 859623: 859623: struct _Iter_less_val 859623: { 859623: 859623: constexpr _Iter_less_val() = default; 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: _Iter_less_val(_Iter_less_iter) { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator __it, _Value& __val) const 859623: { return *__it < __val; } 859623: }; 859623: 859623: 859623: inline _Iter_less_val 859623: __iter_less_val() 859623: { return _Iter_less_val(); } 859623: 859623: 859623: inline _Iter_less_val 859623: __iter_comp_val(_Iter_less_iter) 859623: { return _Iter_less_val(); } 859623: 859623: struct _Val_less_iter 859623: { 859623: 859623: constexpr _Val_less_iter() = default; 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: _Val_less_iter(_Iter_less_iter) { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Value& __val, _Iterator __it) const 859623: { return __val < *__it; } 859623: }; 859623: 859623: 859623: inline _Val_less_iter 859623: __val_less_iter() 859623: { return _Val_less_iter(); } 859623: 859623: 859623: inline _Val_less_iter 859623: __val_comp_iter(_Iter_less_iter) 859623: { return _Val_less_iter(); } 859623: 859623: struct _Iter_equal_to_iter 859623: { 859623: template 859623: 859623: bool 859623: operator()(_Iterator1 __it1, _Iterator2 __it2) const 859623: { return *__it1 == *__it2; } 859623: }; 859623: 859623: 859623: inline _Iter_equal_to_iter 859623: __iter_equal_to_iter() 859623: { return _Iter_equal_to_iter(); } 859623: 859623: struct _Iter_equal_to_val 859623: { 859623: template 859623: 859623: bool 859623: operator()(_Iterator __it, _Value& __val) const 859623: { return *__it == __val; } 859623: }; 859623: 859623: 859623: inline _Iter_equal_to_val 859623: __iter_equal_to_val() 859623: { return _Iter_equal_to_val(); } 859623: 859623: 859623: inline _Iter_equal_to_val 859623: __iter_comp_val(_Iter_equal_to_iter) 859623: { return _Iter_equal_to_val(); } 859623: 859623: template 859623: struct _Iter_comp_iter 859623: { 859623: _Compare _M_comp; 859623: 859623: explicit 859623: _Iter_comp_iter(_Compare __comp) 859623: : _M_comp(std::move(__comp)) 859623: { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator1 __it1, _Iterator2 __it2) 859623: { return bool(_M_comp(*__it1, *__it2)); } 859623: }; 859623: 859623: template 859623: 859623: inline _Iter_comp_iter<_Compare> 859623: __iter_comp_iter(_Compare __comp) 859623: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 859623: 859623: template 859623: struct _Iter_comp_val 859623: { 859623: _Compare _M_comp; 859623: 859623: 859623: explicit 859623: _Iter_comp_val(_Compare __comp) 859623: : _M_comp(std::move(__comp)) 859623: { } 859623: 859623: 859623: explicit 859623: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 859623: : _M_comp(__comp._M_comp) 859623: { } 859623: 859623: 859623: 859623: explicit 859623: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 859623: : _M_comp(std::move(__comp._M_comp)) 859623: { } 859623: 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator __it, _Value& __val) 859623: { return bool(_M_comp(*__it, __val)); } 859623: }; 859623: 859623: template 859623: 859623: inline _Iter_comp_val<_Compare> 859623: __iter_comp_val(_Compare __comp) 859623: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 859623: 859623: template 859623: 859623: inline _Iter_comp_val<_Compare> 859623: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 859623: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 859623: 859623: template 859623: struct _Val_comp_iter 859623: { 859623: _Compare _M_comp; 859623: 859623: 859623: explicit 859623: _Val_comp_iter(_Compare __comp) 859623: : _M_comp(std::move(__comp)) 859623: { } 859623: 859623: 859623: explicit 859623: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 859623: : _M_comp(__comp._M_comp) 859623: { } 859623: 859623: 859623: 859623: explicit 859623: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 859623: : _M_comp(std::move(__comp._M_comp)) 859623: { } 859623: 859623: 859623: template 859623: 859623: bool 859623: operator()(_Value& __val, _Iterator __it) 859623: { return bool(_M_comp(__val, *__it)); } 859623: }; 859623: 859623: template 859623: 859623: inline _Val_comp_iter<_Compare> 859623: __val_comp_iter(_Compare __comp) 859623: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 859623: 859623: template 859623: 859623: inline _Val_comp_iter<_Compare> 859623: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 859623: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 859623: 859623: template 859623: struct _Iter_equals_val 859623: { 859623: _Value& _M_value; 859623: 859623: 859623: explicit 859623: _Iter_equals_val(_Value& __value) 859623: : _M_value(__value) 859623: { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator __it) 859623: { return *__it == _M_value; } 859623: }; 859623: 859623: template 859623: 859623: inline _Iter_equals_val<_Value> 859623: __iter_equals_val(_Value& __val) 859623: { return _Iter_equals_val<_Value>(__val); } 859623: 859623: template 859623: struct _Iter_equals_iter 859623: { 859623: _Iterator1 _M_it1; 859623: 859623: 859623: explicit 859623: _Iter_equals_iter(_Iterator1 __it1) 859623: : _M_it1(__it1) 859623: { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator2 __it2) 859623: { return *__it2 == *_M_it1; } 859623: }; 859623: 859623: template 859623: 859623: inline _Iter_equals_iter<_Iterator> 859623: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 859623: { return _Iter_equals_iter<_Iterator>(__it); } 859623: 859623: template 859623: struct _Iter_pred 859623: { 859623: _Predicate _M_pred; 859623: 859623: 859623: explicit 859623: _Iter_pred(_Predicate __pred) 859623: : _M_pred(std::move(__pred)) 859623: { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator __it) 859623: { return bool(_M_pred(*__it)); } 859623: }; 859623: 859623: template 859623: 859623: inline _Iter_pred<_Predicate> 859623: __pred_iter(_Predicate __pred) 859623: { return _Iter_pred<_Predicate>(std::move(__pred)); } 859623: 859623: template 859623: struct _Iter_comp_to_val 859623: { 859623: _Compare _M_comp; 859623: _Value& _M_value; 859623: 859623: 859623: _Iter_comp_to_val(_Compare __comp, _Value& __value) 859623: : _M_comp(std::move(__comp)), _M_value(__value) 859623: { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator __it) 859623: { return bool(_M_comp(*__it, _M_value)); } 859623: }; 859623: 859623: template 859623: _Iter_comp_to_val<_Compare, _Value> 859623: 859623: __iter_comp_val(_Compare __comp, _Value &__val) 859623: { 859623: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 859623: } 859623: 859623: template 859623: struct _Iter_comp_to_iter 859623: { 859623: _Compare _M_comp; 859623: _Iterator1 _M_it1; 859623: 859623: 859623: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 859623: : _M_comp(std::move(__comp)), _M_it1(__it1) 859623: { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator2 __it2) 859623: { return bool(_M_comp(*__it2, *_M_it1)); } 859623: }; 859623: 859623: template 859623: 859623: inline _Iter_comp_to_iter<_Compare, _Iterator> 859623: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 859623: { 859623: return _Iter_comp_to_iter<_Compare, _Iterator>( 859623: std::move(__comp._M_comp), __it); 859623: } 859623: 859623: template 859623: struct _Iter_negate 859623: { 859623: _Predicate _M_pred; 859623: 859623: 859623: explicit 859623: _Iter_negate(_Predicate __pred) 859623: : _M_pred(std::move(__pred)) 859623: { } 859623: 859623: template 859623: 859623: bool 859623: operator()(_Iterator __it) 859623: { return !bool(_M_pred(*__it)); } 859623: }; 859623: 859623: template 859623: 859623: inline _Iter_negate<_Predicate> 859623: __negate(_Iter_pred<_Predicate> __pred) 859623: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 859623: 859623: } 859623: } 859623: # 72 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 2 3 859623: # 83 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: 859623: inline int 859623: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num) 859623: { 859623: 859623: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp"); 859623: # 109 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); 859623: } 859623: # 153 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: 859623: inline void 859623: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 859623: { 859623: 859623: 859623: 859623: 859623: # 186 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: swap(*__a, *__b); 859623: 859623: } 859623: # 202 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: 859623: _ForwardIterator2 859623: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 859623: _ForwardIterator2 __first2) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: for (; __first1 != __last1; ++__first1, (void)++__first2) 859623: std::iter_swap(__first1, __first2); 859623: return __first2; 859623: } 859623: # 231 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline const _Tp& 859623: min(const _Tp& __a, const _Tp& __b) 859623: { 859623: 859623: 859623: 859623: if (__b < __a) 859623: return __b; 859623: return __a; 859623: } 859623: # 255 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline const _Tp& 859623: max(const _Tp& __a, const _Tp& __b) 859623: { 859623: 859623: 859623: 859623: if (__a < __b) 859623: return __b; 859623: return __a; 859623: } 859623: # 279 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline const _Tp& 859623: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 859623: { 859623: 859623: if (__comp(__b, __a)) 859623: return __b; 859623: return __a; 859623: } 859623: # 301 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline const _Tp& 859623: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 859623: { 859623: 859623: if (__comp(__a, __b)) 859623: return __b; 859623: return __a; 859623: } 859623: 859623: 859623: 859623: template 859623: struct _Deque_iterator; 859623: 859623: struct _Bit_iterator; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct char_traits; 859623: 859623: template 859623: class istreambuf_iterator; 859623: 859623: template 859623: class ostreambuf_iterator; 859623: 859623: template 859623: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 859623: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 859623: __copy_move_a2(_CharT*, _CharT*, 859623: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 859623: 859623: template 859623: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 859623: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 859623: __copy_move_a2(const _CharT*, const _CharT*, 859623: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 859623: 859623: template 859623: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 859623: _CharT*>::__type 859623: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 859623: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 859623: 859623: template 859623: typename __gnu_cxx::__enable_if< 859623: __is_char<_CharT>::__value, 859623: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 859623: __copy_move_a2( 859623: istreambuf_iterator<_CharT, char_traits<_CharT> >, 859623: istreambuf_iterator<_CharT, char_traits<_CharT> >, 859623: std::_Deque_iterator<_CharT, _CharT&, _CharT*>); 859623: # 395 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: __attribute__((__always_inline__)) 859623: inline void 859623: __assign_one(_OutIter& __out, _InIter& __in) 859623: { 859623: 859623: if constexpr (_IsMove) 859623: *__out = std::move(*__in); 859623: else 859623: 859623: *__out = *__in; 859623: } 859623: 859623: template 859623: 859623: inline _OutIter 859623: __copy_move_a2(_InIter __first, _Sent __last, _OutIter __result) 859623: { 859623: typedef __decltype(*__first) _InRef; 859623: typedef __decltype(*__result) _OutRef; 859623: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 859623: { } 859623: else if (std::__is_constant_evaluated()) 859623: { } 859623: else if constexpr (__memcpyable<_OutIter, _InIter>::__value) 859623: { 859623: ptrdiff_t __n = std::distance(__first, __last); 859623: if (__builtin_expect(__n > 1, true)) 859623: { 859623: __builtin_memmove(__result, 859623: __first, 859623: __n * sizeof(*__first)); 859623: __result += __n; 859623: } 859623: else if (__n == 1) 859623: { 859623: std::__assign_one<_IsMove>(__result, __first); 859623: ++__result; 859623: } 859623: return __result; 859623: } 859623: # 461 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: for (; __first != __last; ++__result, (void)++__first) 859623: std::__assign_one<_IsMove>(__result, __first); 859623: return __result; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: template 859623: _OI 859623: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 859623: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 859623: _OI); 859623: 859623: template 859623: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 859623: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, 859623: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 859623: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 859623: 859623: template 859623: typename __gnu_cxx::__enable_if< 859623: __is_random_access_iter<_II>::__value, 859623: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 859623: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _OI 859623: __copy_move_a1(_II __first, _II __last, _OI __result) 859623: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _OI 859623: __copy_move_a(_II __first, _II __last, _OI __result) 859623: { 859623: return std::__niter_wrap(__result, 859623: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), 859623: std::__niter_base(__last), 859623: std::__niter_base(__result))); 859623: } 859623: 859623: template 859623: 859623: _OI 859623: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 859623: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 859623: _OI); 859623: 859623: template 859623: 859623: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 859623: __copy_move_a(_II, _II, 859623: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 859623: 859623: template 859623: 859623: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 859623: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 859623: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 859623: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: 859623: _OutputIterator 859623: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result, 859623: bool) 859623: { 859623: typedef __decltype(*__first) _InRef; 859623: typedef __decltype(*__result) _OutRef; 859623: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 859623: { } 859623: 859623: 859623: 859623: 859623: else if constexpr (__memcpyable<_OutputIterator, 859623: _InputIterator>::__value) 859623: { 859623: if (__builtin_expect(__n > 1, true)) 859623: { 859623: __builtin_memmove(__result, 859623: __first, 859623: __n * sizeof(*__first)); 859623: __result += __n; 859623: } 859623: else if (__n == 1) 859623: *__result++ = *__first; 859623: return __result; 859623: } 859623: # 581 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: if (__n > 0) 859623: { 859623: while (true) 859623: { 859623: *__result = *__first; 859623: ++__result; 859623: if (--__n > 0) 859623: ++__first; 859623: else 859623: break; 859623: } 859623: } 859623: return __result; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: template 859623: typename __gnu_cxx::__enable_if< 859623: __is_char<_CharT>::__value, _CharT*>::__type 859623: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, 859623: _Size, _CharT*, bool); 859623: 859623: template 859623: typename __gnu_cxx::__enable_if< 859623: __is_char<_CharT>::__value, 859623: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 859623: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, _Size, 859623: std::_Deque_iterator<_CharT, _CharT&, _CharT*>, 859623: bool); 859623: # 630 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: 859623: inline _OI 859623: copy(_II __first, _II __last, _OI __result) 859623: { 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__copy_move_a<__is_move_iterator<_II>::__value> 859623: (std::__miter_base(__first), std::__miter_base(__last), __result); 859623: } 859623: # 663 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: 859623: inline _OI 859623: move(_II __first, _II __last, _OI __result) 859623: { 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__copy_move_a(std::__miter_base(__first), 859623: std::__miter_base(__last), __result); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: 859623: inline _BI2 859623: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 859623: { 859623: typedef __decltype(*__first) _InRef; 859623: typedef __decltype(*__result) _OutRef; 859623: if constexpr (!__is_trivially_assignable(_OutRef, _InRef)) 859623: { } 859623: 859623: 859623: 859623: 859623: else if constexpr (__memcpyable<_BI2, _BI1>::__value) 859623: { 859623: ptrdiff_t __n = std::distance(__first, __last); 859623: std::advance(__result, -__n); 859623: if (__builtin_expect(__n > 1, true)) 859623: { 859623: __builtin_memmove(__result, 859623: __first, 859623: __n * sizeof(*__first)); 859623: } 859623: else if (__n == 1) 859623: std::__assign_one<_IsMove>(__result, __first); 859623: return __result; 859623: } 859623: # 735 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: while (__first != __last) 859623: { 859623: --__last; 859623: --__result; 859623: std::__assign_one<_IsMove>(__result, __last); 859623: } 859623: return __result; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _BI2 859623: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) 859623: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } 859623: 859623: template 859623: _OI 859623: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 859623: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 859623: _OI); 859623: 859623: template 859623: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 859623: __copy_move_backward_a1( 859623: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 859623: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 859623: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 859623: 859623: template 859623: typename __gnu_cxx::__enable_if< 859623: __is_random_access_iter<_II>::__value, 859623: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 859623: __copy_move_backward_a1(_II, _II, 859623: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _OI 859623: __copy_move_backward_a(_II __first, _II __last, _OI __result) 859623: { 859623: return std::__niter_wrap(__result, 859623: std::__copy_move_backward_a1<_IsMove> 859623: (std::__niter_base(__first), std::__niter_base(__last), 859623: std::__niter_base(__result))); 859623: } 859623: 859623: template 859623: 859623: _OI 859623: __copy_move_backward_a( 859623: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 859623: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 859623: _OI); 859623: 859623: template 859623: 859623: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 859623: __copy_move_backward_a(_II, _II, 859623: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 859623: 859623: template 859623: 859623: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 859623: __copy_move_backward_a( 859623: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 859623: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 859623: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 859623: # 833 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _BI2 859623: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> 859623: (std::__miter_base(__first), std::__miter_base(__last), __result); 859623: } 859623: # 869 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _BI2 859623: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__copy_move_backward_a(std::__miter_base(__first), 859623: std::__miter_base(__last), 859623: __result); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: 859623: inline void 859623: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 859623: const _Tp& __value) 859623: { 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: 859623: 859623: 859623: 859623: const bool __load_outside_loop = 859623: 859623: 859623: __is_trivially_constructible(_Tp, const _Tp&) 859623: && __is_trivially_assignable(__decltype(*__first), const _Tp&) 859623: 859623: 859623: 859623: 859623: && sizeof(_Tp) <= sizeof(long long); 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: typedef typename __gnu_cxx::__conditional_type<__load_outside_loop, 859623: const _Tp, 859623: const _Tp&>::__type _Up; 859623: _Up __val(__value); 859623: for (; __first != __last; ++__first) 859623: *__first = __val; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: template 859623: 859623: inline typename 859623: __gnu_cxx::__enable_if<__is_byte<_Up>::__value 859623: && (__are_same<_Up, _Tp>::__value 859623: || __memcpyable_integer<_Tp>::__width), 859623: void>::__type 859623: __fill_a1(_Up* __first, _Up* __last, const _Tp& __x) 859623: { 859623: 859623: 859623: const _Up __val = __x; 859623: # 950 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: if (const size_t __len = __last - __first) 859623: __builtin_memset(__first, static_cast(__val), __len); 859623: } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline void 859623: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, 859623: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, 859623: const _Tp& __value) 859623: { std::__fill_a1(__first.base(), __last.base(), __value); } 859623: 859623: template 859623: void 859623: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 859623: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 859623: const _VTp&); 859623: 859623: 859623: void 859623: __fill_a1(std::_Bit_iterator, std::_Bit_iterator, 859623: const bool&); 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline void 859623: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) 859623: { std::__fill_a1(__first, __last, __value); } 859623: 859623: template 859623: 859623: void 859623: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 859623: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 859623: const _Tp&); 859623: # 1000 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline void 859623: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 859623: { 859623: 859623: 859623: 859623: ; 859623: 859623: std::__fill_a(__first, __last, __value); 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: 859623: inline constexpr int 859623: __size_to_integer(int __n) { return __n; } 859623: inline constexpr unsigned 859623: __size_to_integer(unsigned __n) { return __n; } 859623: inline constexpr long 859623: __size_to_integer(long __n) { return __n; } 859623: inline constexpr unsigned long 859623: __size_to_integer(unsigned long __n) { return __n; } 859623: inline constexpr long long 859623: __size_to_integer(long long __n) { return __n; } 859623: inline constexpr unsigned long long 859623: __size_to_integer(unsigned long long __n) { return __n; } 859623: # 1055 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: inline constexpr long long 859623: __size_to_integer(float __n) { return (long long)__n; } 859623: inline constexpr long long 859623: __size_to_integer(double __n) { return (long long)__n; } 859623: inline constexpr long long 859623: __size_to_integer(long double __n) { return (long long)__n; } 859623: 859623: 859623: 859623: 859623: #pragma GCC diagnostic pop 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: template 859623: 859623: inline _OutputIterator 859623: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 859623: { 859623: 859623: const bool __load_outside_loop = 859623: 859623: 859623: __is_trivially_constructible(_Tp, const _Tp&) 859623: && __is_trivially_assignable(__decltype(*__first), const _Tp&) 859623: 859623: 859623: 859623: 859623: && sizeof(_Tp) <= sizeof(long long); 859623: 859623: 859623: 859623: typedef typename __gnu_cxx::__conditional_type<__load_outside_loop, 859623: const _Tp, 859623: const _Tp&>::__type _Up; 859623: _Up __val(__value); 859623: for (; __n > 0; --__n, (void) ++__first) 859623: *__first = __val; 859623: return __first; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: template 859623: 859623: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 859623: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, 859623: _Size __n, const _Tp& __value, 859623: std::input_iterator_tag); 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _OutputIterator 859623: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 859623: std::output_iterator_tag) 859623: { 859623: 859623: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 859623: 859623: return __fill_n_a1(__first, __n, __value); 859623: } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _OutputIterator 859623: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 859623: std::input_iterator_tag) 859623: { 859623: 859623: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 859623: 859623: return __fill_n_a1(__first, __n, __value); 859623: } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _OutputIterator 859623: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 859623: std::random_access_iterator_tag) 859623: { 859623: 859623: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 859623: 859623: if (__n <= 0) 859623: return __first; 859623: 859623: ; 859623: 859623: std::__fill_a(__first, __first + __n, __value); 859623: return __first + __n; 859623: } 859623: # 1169 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline _OI 859623: fill_n(_OI __first, _Size __n, const _Tp& __value) 859623: { 859623: 859623: 859623: 859623: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, 859623: std::__iterator_category(__first)); 859623: } 859623: 859623: template 859623: struct __equal 859623: { 859623: template 859623: 859623: static bool 859623: equal(_II1 __first1, _II1 __last1, _II2 __first2) 859623: { 859623: for (; __first1 != __last1; ++__first1, (void) ++__first2) 859623: if (!(*__first1 == *__first2)) 859623: return false; 859623: return true; 859623: } 859623: }; 859623: 859623: template<> 859623: struct __equal 859623: { 859623: template 859623: 859623: static bool 859623: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 859623: { 859623: if (const size_t __len = (__last1 - __first1)) 859623: return !std::__memcmp(__first1, __first2, __len); 859623: return true; 859623: } 859623: }; 859623: 859623: template 859623: typename __gnu_cxx::__enable_if< 859623: __is_random_access_iter<_II>::__value, bool>::__type 859623: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 859623: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 859623: _II); 859623: 859623: template 859623: bool 859623: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 859623: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 859623: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 859623: 859623: template 859623: typename __gnu_cxx::__enable_if< 859623: __is_random_access_iter<_II>::__value, bool>::__type 859623: __equal_aux1(_II, _II, 859623: std::_Deque_iterator<_Tp, _Ref, _Ptr>); 859623: 859623: template 859623: 859623: inline bool 859623: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) 859623: { 859623: typedef typename iterator_traits<_II1>::value_type _ValueType1; 859623: const bool __simple = ((__is_integer<_ValueType1>::__value 859623: 859623: || __is_pointer(_ValueType1) 859623: 859623: 859623: 859623: 859623: 859623: ) && __memcmpable<_II1, _II2>::__value); 859623: return std::__equal<__simple>::equal(__first1, __last1, __first2); 859623: } 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: 859623: inline bool 859623: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 859623: { 859623: return std::__equal_aux1(std::__niter_base(__first1), 859623: std::__niter_base(__last1), 859623: std::__niter_base(__first2)); 859623: } 859623: 859623: template 859623: 859623: bool 859623: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 859623: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 859623: _II2); 859623: 859623: template 859623: 859623: bool 859623: __equal_aux(_II1, _II1, 859623: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 859623: 859623: template 859623: 859623: bool 859623: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 859623: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 859623: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 859623: 859623: template 859623: struct __lc_rai 859623: { 859623: template 859623: 859623: static _II1 859623: __newlast1(_II1, _II1 __last1, _II2, _II2) 859623: { return __last1; } 859623: 859623: template 859623: 859623: static bool 859623: __cnd2(_II __first, _II __last) 859623: { return __first != __last; } 859623: }; 859623: 859623: template<> 859623: struct __lc_rai 859623: { 859623: template 859623: 859623: static _RAI1 859623: __newlast1(_RAI1 __first1, _RAI1 __last1, 859623: _RAI2 __first2, _RAI2 __last2) 859623: { 859623: const typename iterator_traits<_RAI1>::difference_type 859623: __diff1 = __last1 - __first1; 859623: const typename iterator_traits<_RAI2>::difference_type 859623: __diff2 = __last2 - __first2; 859623: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 859623: } 859623: 859623: template 859623: static bool 859623: __cnd2(_RAI, _RAI) 859623: { return true; } 859623: }; 859623: 859623: template 859623: 859623: bool 859623: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 859623: _II2 __first2, _II2 __last2, 859623: _Compare __comp) 859623: { 859623: typedef typename iterator_traits<_II1>::iterator_category _Category1; 859623: typedef typename iterator_traits<_II2>::iterator_category _Category2; 859623: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 859623: 859623: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 859623: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 859623: ++__first1, (void)++__first2) 859623: { 859623: if (__comp(__first1, __first2)) 859623: return true; 859623: if (__comp(__first2, __first1)) 859623: return false; 859623: } 859623: return __first1 == __last1 && __first2 != __last2; 859623: } 859623: 859623: template 859623: struct __lexicographical_compare 859623: { 859623: template 859623: 859623: static bool 859623: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 859623: { 859623: using __gnu_cxx::__ops::__iter_less_iter; 859623: return std::__lexicographical_compare_impl(__first1, __last1, 859623: __first2, __last2, 859623: __iter_less_iter()); 859623: } 859623: 859623: template 859623: 859623: static int 859623: __3way(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 859623: { 859623: while (__first1 != __last1) 859623: { 859623: if (__first2 == __last2) 859623: return +1; 859623: if (*__first1 < *__first2) 859623: return -1; 859623: if (*__first2 < *__first1) 859623: return +1; 859623: ++__first1; 859623: ++__first2; 859623: } 859623: return int(__first2 == __last2) - 1; 859623: } 859623: }; 859623: 859623: template<> 859623: struct __lexicographical_compare 859623: { 859623: template 859623: 859623: static bool 859623: __lc(const _Tp* __first1, const _Tp* __last1, 859623: const _Up* __first2, const _Up* __last2) 859623: { return __3way(__first1, __last1, __first2, __last2) < 0; } 859623: 859623: template 859623: 859623: static ptrdiff_t 859623: __3way(const _Tp* __first1, const _Tp* __last1, 859623: const _Up* __first2, const _Up* __last2) 859623: { 859623: const size_t __len1 = __last1 - __first1; 859623: const size_t __len2 = __last2 - __first2; 859623: if (const size_t __len = std::min(__len1, __len2)) 859623: if (int __result = std::__memcmp(__first1, __first2, __len)) 859623: return __result; 859623: return ptrdiff_t(__len1 - __len2); 859623: } 859623: }; 859623: 859623: template 859623: 859623: inline bool 859623: __lexicographical_compare_aux1(_II1 __first1, _II1 __last1, 859623: _II2 __first2, _II2 __last2) 859623: { 859623: typedef typename iterator_traits<_II1>::value_type _ValueType1; 859623: typedef typename iterator_traits<_II2>::value_type _ValueType2; 859623: 859623: const bool __simple = 859623: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value 859623: && __is_pointer(_II1) && __is_pointer(_II2) 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: ); 859623: 859623: 859623: 859623: 859623: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 859623: __first2, __last2); 859623: } 859623: 859623: template 859623: bool 859623: __lexicographical_compare_aux1( 859623: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 859623: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 859623: _Tp2*, _Tp2*); 859623: 859623: template 859623: bool 859623: __lexicographical_compare_aux1(_Tp1*, _Tp1*, 859623: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 859623: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 859623: 859623: template 859623: bool 859623: __lexicographical_compare_aux1( 859623: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 859623: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 859623: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 859623: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 859623: 859623: template 859623: 859623: inline bool 859623: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 859623: _II2 __first2, _II2 __last2) 859623: { 859623: return std::__lexicographical_compare_aux1(std::__niter_base(__first1), 859623: std::__niter_base(__last1), 859623: std::__niter_base(__first2), 859623: std::__niter_base(__last2)); 859623: } 859623: 859623: template 859623: 859623: bool 859623: __lexicographical_compare_aux( 859623: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 859623: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 859623: _II2, _II2); 859623: 859623: template 859623: 859623: bool 859623: __lexicographical_compare_aux( 859623: _II1, _II1, 859623: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 859623: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 859623: 859623: template 859623: 859623: bool 859623: __lexicographical_compare_aux( 859623: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 859623: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 859623: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 859623: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 859623: 859623: template 859623: 859623: _ForwardIterator 859623: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 859623: const _Tp& __val, _Compare __comp) 859623: { 859623: typedef typename iterator_traits<_ForwardIterator>::difference_type 859623: _DistanceType; 859623: 859623: _DistanceType __len = std::distance(__first, __last); 859623: 859623: while (__len > 0) 859623: { 859623: _DistanceType __half = __len >> 1; 859623: _ForwardIterator __middle = __first; 859623: std::advance(__middle, __half); 859623: if (__comp(__middle, __val)) 859623: { 859623: __first = __middle; 859623: ++__first; 859623: __len = __len - __half - 1; 859623: } 859623: else 859623: __len = __half; 859623: } 859623: return __first; 859623: } 859623: # 1532 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline _ForwardIterator 859623: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 859623: const _Tp& __val) 859623: { 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__lower_bound(__first, __last, __val, 859623: __gnu_cxx::__ops::__iter_less_val()); 859623: } 859623: 859623: 859623: 859623: template 859623: inline constexpr _Tp 859623: __lg(_Tp __n) 859623: { 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: 859623: return (sizeof(+__n) * 8 - 1) 859623: - (sizeof(+__n) == sizeof(long long) 859623: ? __builtin_clzll(+__n) 859623: : (sizeof(+__n) == sizeof(long) 859623: ? __builtin_clzl(+__n) 859623: : __builtin_clz(+__n))); 859623: #pragma GCC diagnostic pop 859623: 859623: } 859623: 859623: 859623: # 1584 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: equal(_II1 __first1, _II1 __last1, _II2 __first2) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__equal_aux(__first1, __last1, __first2); 859623: } 859623: # 1615 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: equal(_IIter1 __first1, _IIter1 __last1, 859623: _IIter2 __first2, _BinaryPredicate __binary_pred) 859623: { 859623: 859623: 859623: 859623: ; 859623: 859623: for (; __first1 != __last1; ++__first1, (void)++__first2) 859623: if (!bool(__binary_pred(*__first1, *__first2))) 859623: return false; 859623: return true; 859623: } 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: 859623: template 859623: 859623: inline bool 859623: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 859623: { 859623: using _RATag = random_access_iterator_tag; 859623: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 859623: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 859623: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 859623: if constexpr (_RAIters::value) 859623: { 859623: if ((__last1 - __first1) != (__last2 - __first2)) 859623: return false; 859623: return std::equal(__first1, __last1, __first2); 859623: } 859623: else 859623: { 859623: for (; __first1 != __last1 && __first2 != __last2; 859623: ++__first1, (void)++__first2) 859623: if (!(*__first1 == *__first2)) 859623: return false; 859623: return __first1 == __last1 && __first2 == __last2; 859623: } 859623: } 859623: 859623: 859623: template 859623: 859623: inline bool 859623: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 859623: _BinaryPredicate __binary_pred) 859623: { 859623: using _RATag = random_access_iterator_tag; 859623: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 859623: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 859623: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 859623: if constexpr (_RAIters::value) 859623: { 859623: if ((__last1 - __first1) != (__last2 - __first2)) 859623: return false; 859623: return std::equal(__first1, __last1, __first2, 859623: __binary_pred); 859623: } 859623: else 859623: { 859623: for (; __first1 != __last1 && __first2 != __last2; 859623: ++__first1, (void)++__first2) 859623: if (!bool(__binary_pred(*__first1, *__first2))) 859623: return false; 859623: return __first1 == __last1 && __first2 == __last2; 859623: } 859623: } 859623: #pragma GCC diagnostic pop 859623: # 1771 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: lexicographical_compare(_II1 __first1, _II1 __last1, 859623: _II2 __first2, _II2 __last2) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: ; 859623: 859623: return std::__lexicographical_compare_aux(__first1, __last1, 859623: __first2, __last2); 859623: } 859623: # 1806 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: lexicographical_compare(_II1 __first1, _II1 __last1, 859623: _II2 __first2, _II2 __last2, _Compare __comp) 859623: { 859623: 859623: 859623: 859623: ; 859623: ; 859623: 859623: return std::__lexicographical_compare_impl 859623: (__first1, __last1, __first2, __last2, 859623: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 859623: } 859623: # 1921 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: 859623: pair<_InputIterator1, _InputIterator2> 859623: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 859623: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 859623: { 859623: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 859623: { 859623: ++__first1; 859623: ++__first2; 859623: } 859623: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 859623: } 859623: # 1949 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline pair<_InputIterator1, _InputIterator2> 859623: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 859623: _InputIterator2 __first2) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__mismatch(__first1, __last1, __first2, 859623: __gnu_cxx::__ops::__iter_equal_to_iter()); 859623: } 859623: # 1983 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline pair<_InputIterator1, _InputIterator2> 859623: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 859623: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 859623: { 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__mismatch(__first1, __last1, __first2, 859623: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 859623: } 859623: # 2086 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: 859623: 859623: 859623: template 859623: 859623: inline _Iterator 859623: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 859623: { 859623: #pragma GCC unroll 4 859623: while (__first != __last && !__pred(__first)) 859623: ++__first; 859623: return __first; 859623: } 859623: 859623: template 859623: 859623: typename iterator_traits<_InputIterator>::difference_type 859623: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 859623: { 859623: typename iterator_traits<_InputIterator>::difference_type __n = 0; 859623: for (; __first != __last; ++__first) 859623: if (__pred(__first)) 859623: ++__n; 859623: return __n; 859623: } 859623: 859623: template 859623: 859623: _ForwardIterator 859623: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 859623: _Predicate __pred) 859623: { 859623: __first = std::__find_if(__first, __last, __pred); 859623: if (__first == __last) 859623: return __first; 859623: _ForwardIterator __result = __first; 859623: ++__first; 859623: for (; __first != __last; ++__first) 859623: if (!__pred(__first)) 859623: { 859623: *__result = std::move(*__first); 859623: ++__result; 859623: } 859623: return __result; 859623: } 859623: 859623: template 859623: 859623: _ForwardIterator1 859623: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 859623: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 859623: _BinaryPredicate __predicate) 859623: { 859623: 859623: if (__first1 == __last1 || __first2 == __last2) 859623: return __first1; 859623: 859623: 859623: _ForwardIterator2 __p1(__first2); 859623: if (++__p1 == __last2) 859623: return std::__find_if(__first1, __last1, 859623: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 859623: 859623: 859623: _ForwardIterator1 __current = __first1; 859623: 859623: for (;;) 859623: { 859623: __first1 = 859623: std::__find_if(__first1, __last1, 859623: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 859623: 859623: if (__first1 == __last1) 859623: return __last1; 859623: 859623: _ForwardIterator2 __p = __p1; 859623: __current = __first1; 859623: if (++__current == __last1) 859623: return __last1; 859623: 859623: while (__predicate(__current, __p)) 859623: { 859623: if (++__p == __last2) 859623: return __first1; 859623: if (++__current == __last1) 859623: return __last1; 859623: } 859623: ++__first1; 859623: } 859623: return __first1; 859623: } 859623: 859623: 859623: template 859623: 859623: bool 859623: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 859623: _ForwardIterator2 __first2, _BinaryPredicate __pred) 859623: { 859623: 859623: 859623: for (; __first1 != __last1; ++__first1, (void)++__first2) 859623: if (!__pred(__first1, __first2)) 859623: break; 859623: 859623: if (__first1 == __last1) 859623: return true; 859623: 859623: 859623: 859623: _ForwardIterator2 __last2 = __first2; 859623: std::advance(__last2, std::distance(__first1, __last1)); 859623: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 859623: { 859623: if (__scan != std::__find_if(__first1, __scan, 859623: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 859623: continue; 859623: 859623: auto __matches 859623: = std::__count_if(__first2, __last2, 859623: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 859623: if (0 == __matches || 859623: std::__count_if(__scan, __last1, 859623: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 859623: != __matches) 859623: return false; 859623: } 859623: return true; 859623: } 859623: # 2230 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: 859623: inline bool 859623: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 859623: _ForwardIterator2 __first2) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: 859623: return std::__is_permutation(__first1, __last1, __first2, 859623: __gnu_cxx::__ops::__iter_equal_to_iter()); 859623: } 859623: 859623: 859623: 859623: # 2272 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_algobase.h" 3 859623: template 859623: 859623: inline _ForwardIterator1 859623: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 859623: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 859623: _BinaryPredicate __predicate) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: ; 859623: 859623: return std::__search(__first1, __last1, __first2, __last2, 859623: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 859623: } 859623: 859623: 859623: 859623: } 859623: # 54 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/invoke.h" 1 3 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/bits/invoke.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 55 "/usr/arm-linux-gnueabi/include/c++/15/bits/invoke.h" 3 859623: template::type> 859623: constexpr _Up&& 859623: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 859623: { return static_cast<_Up&&>(__t); } 859623: 859623: template 859623: constexpr _Res 859623: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 859623: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 859623: 859623: template 859623: constexpr _Res 859623: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 859623: _Args&&... __args) 859623: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 859623: 859623: template 859623: constexpr _Res 859623: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 859623: _Args&&... __args) 859623: { 859623: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 859623: } 859623: 859623: template 859623: constexpr _Res 859623: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 859623: { return __invfwd<_Tp>(__t).*__f; } 859623: 859623: template 859623: constexpr _Res 859623: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 859623: { return (*std::forward<_Tp>(__t)).*__f; } 859623: 859623: 859623: template 859623: constexpr typename __invoke_result<_Callable, _Args...>::type 859623: __invoke(_Callable&& __fn, _Args&&... __args) 859623: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 859623: { 859623: using __result = __invoke_result<_Callable, _Args...>; 859623: using __type = typename __result::type; 859623: using __tag = typename __result::__invoke_type; 859623: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 859623: std::forward<_Args>(__args)...); 859623: } 859623: # 129 "/usr/arm-linux-gnueabi/include/c++/15/bits/invoke.h" 3 859623: template 859623: constexpr __enable_if_t::value, _Res> 859623: __invoke_r(_Callable&& __fn, _Args&&... __args) 859623: { 859623: using __result = __invoke_result<_Callable, _Args...>; 859623: using __type = typename __result::type; 859623: 859623: static_assert(!__reference_converts_from_temporary(_Res, __type), 859623: "INVOKE must not create a dangling reference"); 859623: 859623: using __tag = typename __result::__invoke_type; 859623: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 859623: std::forward<_Args>(__args)...); 859623: } 859623: 859623: 859623: template 859623: __enable_if_t::value, _Res> 859623: __invoke_r(_Callable&& __fn, _Args&&... __args) 859623: { 859623: using __result = __invoke_result<_Callable, _Args...>; 859623: using __type = typename __result::type; 859623: using __tag = typename __result::__invoke_type; 859623: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 859623: std::forward<_Args>(__args)...); 859623: } 859623: 859623: 859623: 859623: } 859623: # 41 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 58 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 3 859623: template 859623: struct _Maybe_unary_or_binary_function { }; 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: 859623: template 859623: struct _Maybe_unary_or_binary_function<_Res, _T1> 859623: : std::unary_function<_T1, _Res> { }; 859623: 859623: 859623: template 859623: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 859623: : std::binary_function<_T1, _T2, _Res> { }; 859623: 859623: #pragma GCC diagnostic pop 859623: 859623: template 859623: struct _Mem_fn_traits; 859623: 859623: template 859623: struct _Mem_fn_traits_base 859623: { 859623: using __result_type = _Res; 859623: using __maybe_type 859623: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 859623: using __arity = integral_constant; 859623: }; 859623: # 109 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 3 859623: 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; }; 859623: 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; }; 859623: 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; }; 859623: # 123 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 3 859623: template> 859623: struct _Maybe_get_result_type 859623: { }; 859623: 859623: template 859623: struct _Maybe_get_result_type<_Functor, 859623: __void_t> 859623: { typedef typename _Functor::result_type result_type; }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Weak_result_type_impl 859623: : _Maybe_get_result_type<_Functor> 859623: { }; 859623: 859623: 859623: template 859623: struct _Weak_result_type_impl<_Res(_ArgTypes...) > 859623: { typedef _Res result_type; }; 859623: 859623: 859623: template 859623: struct _Weak_result_type_impl<_Res(_ArgTypes..., 859623: ...) > 859623: { typedef _Res result_type; }; 859623: 859623: 859623: template 859623: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > 859623: { typedef _Res result_type; }; 859623: 859623: 859623: template 859623: struct 859623: _Weak_result_type_impl<_Res(*)(_ArgTypes..., ...) > 859623: { typedef _Res result_type; }; 859623: 859623: 859623: template::value> 859623: struct _Weak_result_type_memfun 859623: : _Weak_result_type_impl<_Functor> 859623: { }; 859623: 859623: 859623: template 859623: struct _Weak_result_type_memfun<_MemFunPtr, true> 859623: { 859623: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 859623: }; 859623: 859623: 859623: template 859623: struct _Weak_result_type_memfun<_Func _Class::*, false> 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Weak_result_type 859623: : _Weak_result_type_memfun::type> 859623: { }; 859623: 859623: 859623: 859623: template> 859623: struct _Refwrap_base_arg1 859623: { }; 859623: 859623: 859623: template 859623: struct _Refwrap_base_arg1<_Tp, 859623: __void_t> 859623: { 859623: typedef typename _Tp::argument_type argument_type; 859623: }; 859623: 859623: 859623: template> 859623: struct _Refwrap_base_arg2 859623: { }; 859623: 859623: 859623: template 859623: struct _Refwrap_base_arg2<_Tp, 859623: __void_t> 859623: { 859623: typedef typename _Tp::first_argument_type first_argument_type; 859623: typedef typename _Tp::second_argument_type second_argument_type; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Reference_wrapper_base 859623: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 859623: { }; 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1) > 859623: : unary_function<_T1, _Res> 859623: { }; 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1) const> 859623: : unary_function<_T1, _Res> 859623: { }; 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1) volatile> 859623: : unary_function<_T1, _Res> 859623: { }; 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1) const volatile> 859623: : unary_function<_T1, _Res> 859623: { }; 859623: 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1, _T2) > 859623: : binary_function<_T1, _T2, _Res> 859623: { }; 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 859623: : binary_function<_T1, _T2, _Res> 859623: { }; 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 859623: : binary_function<_T1, _T2, _Res> 859623: { }; 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 859623: : binary_function<_T1, _T2, _Res> 859623: { }; 859623: 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(*)(_T1) > 859623: : unary_function<_T1, _Res> 859623: { }; 859623: 859623: 859623: template 859623: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > 859623: : binary_function<_T1, _T2, _Res> 859623: { }; 859623: 859623: template::value> 859623: struct _Reference_wrapper_base_memfun 859623: : _Reference_wrapper_base<_Tp> 859623: { }; 859623: 859623: template 859623: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 859623: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 859623: { 859623: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 859623: }; 859623: #pragma GCC diagnostic pop 859623: # 309 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 3 859623: template 859623: class reference_wrapper 859623: 859623: 859623: 859623: : public _Reference_wrapper_base_memfun::type> 859623: 859623: { 859623: _Tp* _M_data; 859623: 859623: 859623: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } 859623: 859623: static void _S_fun(_Tp&&) = delete; 859623: 859623: template> 859623: using __not_same 859623: = typename enable_if::value>::type; 859623: 859623: public: 859623: typedef _Tp type; 859623: 859623: 859623: 859623: 859623: template, typename 859623: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> 859623: 859623: reference_wrapper(_Up&& __uref) 859623: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) 859623: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) 859623: { } 859623: 859623: reference_wrapper(const reference_wrapper&) = default; 859623: 859623: reference_wrapper& 859623: operator=(const reference_wrapper&) = default; 859623: 859623: 859623: operator _Tp&() const noexcept 859623: { return this->get(); } 859623: 859623: 859623: _Tp& 859623: get() const noexcept 859623: { return *_M_data; } 859623: 859623: template 859623: 859623: typename __invoke_result<_Tp&, _Args...>::type 859623: operator()(_Args&&... __args) const 859623: noexcept(__is_nothrow_invocable<_Tp&, _Args...>::value) 859623: { 859623: 859623: 859623: 859623: 859623: return std::__invoke(get(), std::forward<_Args>(__args)...); 859623: } 859623: # 415 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 3 859623: }; 859623: # 425 "/usr/arm-linux-gnueabi/include/c++/15/bits/refwrap.h" 3 859623: template 859623: 859623: inline reference_wrapper<_Tp> 859623: ref(_Tp& __t) noexcept 859623: { return reference_wrapper<_Tp>(__t); } 859623: 859623: 859623: template 859623: 859623: inline reference_wrapper 859623: cref(const _Tp& __t) noexcept 859623: { return reference_wrapper(__t); } 859623: 859623: template 859623: void ref(const _Tp&&) = delete; 859623: 859623: template 859623: void cref(const _Tp&&) = delete; 859623: 859623: 859623: template 859623: 859623: inline reference_wrapper<_Tp> 859623: ref(reference_wrapper<_Tp> __t) noexcept 859623: { return __t; } 859623: 859623: 859623: template 859623: 859623: inline reference_wrapper 859623: cref(reference_wrapper<_Tp> __t) noexcept 859623: { return { __t.get() }; } 859623: 859623: 859623: 859623: 859623: } 859623: # 55 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/range_access.h" 1 3 859623: # 38 "/usr/arm-linux-gnueabi/include/c++/15/bits/range_access.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/initializer_list" 1 3 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/initializer_list" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: template 859623: class initializer_list 859623: { 859623: public: 859623: typedef _E value_type; 859623: typedef const _E& reference; 859623: typedef const _E& const_reference; 859623: typedef size_t size_type; 859623: typedef const _E* iterator; 859623: typedef const _E* const_iterator; 859623: 859623: private: 859623: iterator _M_array; 859623: size_type _M_len; 859623: 859623: 859623: constexpr initializer_list(const_iterator __a, size_type __l) 859623: : _M_array(__a), _M_len(__l) { } 859623: 859623: public: 859623: constexpr initializer_list() noexcept 859623: : _M_array(0), _M_len(0) { } 859623: 859623: 859623: constexpr size_type 859623: size() const noexcept { return _M_len; } 859623: 859623: 859623: constexpr const_iterator 859623: begin() const noexcept { return _M_array; } 859623: 859623: 859623: constexpr const_iterator 859623: end() const noexcept { return begin() + size(); } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: constexpr const _Tp* 859623: begin(initializer_list<_Tp> __ils) noexcept 859623: { return __ils.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: constexpr const _Tp* 859623: end(initializer_list<_Tp> __ils) noexcept 859623: { return __ils.end(); } 859623: } 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/range_access.h" 2 3 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__, __gnu__::__always_inline__]] 859623: inline auto 859623: begin(_Container& __cont) noexcept(noexcept(__cont.begin())) 859623: -> decltype(__cont.begin()) 859623: { return __cont.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__, __gnu__::__always_inline__]] 859623: inline auto 859623: begin(const _Container& __cont) noexcept(noexcept(__cont.begin())) 859623: -> decltype(__cont.begin()) 859623: { return __cont.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__, __gnu__::__always_inline__]] 859623: inline auto 859623: end(_Container& __cont) noexcept(noexcept(__cont.end())) 859623: -> decltype(__cont.end()) 859623: { return __cont.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__, __gnu__::__always_inline__]] 859623: inline auto 859623: end(const _Container& __cont) noexcept(noexcept(__cont.end())) 859623: -> decltype(__cont.end()) 859623: { return __cont.end(); } 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__, __gnu__::__always_inline__]] 859623: inline _Tp* 859623: begin(_Tp (&__arr)[_Nm]) noexcept 859623: { return __arr; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__, __gnu__::__always_inline__]] 859623: inline _Tp* 859623: end(_Tp (&__arr)[_Nm]) noexcept 859623: { return __arr + _Nm; } 859623: # 377 "/usr/arm-linux-gnueabi/include/c++/15/bits/range_access.h" 3 859623: 859623: } 859623: # 56 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 1 3 859623: # 41 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ext/alloc_traits.h" 1 3 859623: # 36 "/usr/arm-linux-gnueabi/include/c++/15/ext/alloc_traits.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 1 3 859623: # 33 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 1 3 859623: # 73 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 120 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 3 859623: template 859623: 859623: inline void 859623: _Construct(_Tp* __p, _Args&&... __args) 859623: { 859623: # 133 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 3 859623: ::new(static_cast(__p)) _Tp(std::forward<_Args>(__args)...); 859623: } 859623: # 146 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 3 859623: template 859623: 859623: inline void 859623: _Construct_novalue(_T1* __p) 859623: { ::new(static_cast(__p)) _T1; } 859623: 859623: template 859623: void 859623: _Destroy(_ForwardIterator __first, _ForwardIterator __last); 859623: 859623: 859623: 859623: 859623: template 859623: inline void 859623: _Destroy(_Tp* __pointer) 859623: { 859623: 859623: 859623: 859623: __pointer->~_Tp(); 859623: 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: # 217 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 3 859623: template 859623: inline void 859623: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 859623: { 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _Value_type; 859623: 859623: if constexpr (!is_trivially_destructible<_Value_type>::value) 859623: for (; __first != __last; ++__first) 859623: std::_Destroy(std::__addressof(*__first)); 859623: # 236 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 3 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: inline _ForwardIterator 859623: _Destroy_n(_ForwardIterator __first, _Size __count) 859623: { 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _Value_type; 859623: 859623: if constexpr (!is_trivially_destructible<_Value_type>::value) 859623: for (; __count > 0; (void)++__first, --__count) 859623: std::_Destroy(std::__addressof(*__first)); 859623: 859623: 859623: 859623: 859623: 859623: else 859623: std::advance(__first, __count); 859623: return __first; 859623: 859623: 859623: 859623: 859623: } 859623: #pragma GCC diagnostic pop 859623: # 284 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_construct.h" 3 859623: 859623: } 859623: # 34 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 2 3 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++14-extensions" 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: 859623: struct __allocator_traits_base 859623: { 859623: 859623: 859623: 859623: template 859623: 859623: struct __rebind : __replace_first_arg<_Tp, _Up> 859623: { 859623: static_assert(is_same< 859623: typename __replace_first_arg<_Tp, typename _Tp::value_type>::type, 859623: _Tp>::value, 859623: "allocator_traits::rebind_alloc must be A"); 859623: }; 859623: 859623: template 859623: 859623: 859623: 859623: 859623: struct __rebind<_Tp, _Up, 859623: __void_t::other>> 859623: 859623: { 859623: using type = typename _Tp::template rebind<_Up>::other; 859623: 859623: static_assert(is_same< 859623: typename _Tp::template rebind::other, 859623: _Tp>::value, 859623: "allocator_traits::rebind_alloc must be A"); 859623: }; 859623: 859623: protected: 859623: template 859623: using __pointer = typename _Tp::pointer; 859623: template 859623: using __c_pointer = typename _Tp::const_pointer; 859623: template 859623: using __v_pointer = typename _Tp::void_pointer; 859623: template 859623: using __cv_pointer = typename _Tp::const_void_pointer; 859623: template 859623: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 859623: template 859623: using __pocma = typename _Tp::propagate_on_container_move_assignment; 859623: template 859623: using __pocs = typename _Tp::propagate_on_container_swap; 859623: template 859623: using __equal = __type_identity; 859623: # 115 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: using __allocate_hint_t 859623: = decltype(std::declval<_Alloc&>() 859623: .allocate(std::declval<_Sz>(), std::declval<_Vp>())); 859623: template 859623: static constexpr bool __has_allocate_hint = false; 859623: template 859623: static constexpr bool 859623: __has_allocate_hint<_Alloc, _Sz, _Vp, 859623: __void_t<__allocate_hint_t<_Alloc, _Sz, _Vp>>> 859623: = true; 859623: # 152 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: using __construct_t 859623: = decltype(std::declval<_Alloc&>().construct(std::declval<_Tp*>(), 859623: std::declval<_Args>()...)); 859623: template 859623: static constexpr bool __has_construct_impl = false; 859623: template 859623: static constexpr bool 859623: __has_construct_impl<_Alloc, _Tp, 859623: __void_t<__construct_t<_Alloc, _Tp, _Args...>>, 859623: _Args...> 859623: = true; 859623: template 859623: static constexpr bool __has_construct 859623: = __has_construct_impl<_Alloc, _Tp, void, _Args...>; 859623: template 859623: using __new_expr_t 859623: = decltype(::new((void*)0) _Tp(std::declval<_Args>()...)); 859623: template 859623: static constexpr bool __has_new_expr = false; 859623: template 859623: static constexpr bool 859623: __has_new_expr<_Tp, __void_t<__new_expr_t<_Tp, _Args...>>, _Args...> 859623: = true; 859623: template 859623: static constexpr bool __can_construct 859623: = __has_construct<_Alloc, _Tp, _Args...> 859623: || __has_new_expr<_Tp, void, _Args...>; 859623: # 189 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: using __destroy_t 859623: = decltype(std::declval<_Alloc&>().destroy(std::declval<_Tp*>())); 859623: template 859623: static constexpr bool __has_destroy = false; 859623: template 859623: static constexpr bool __has_destroy<_Alloc, _Tp, 859623: __void_t<__destroy_t<_Alloc, _Tp>>> 859623: = true; 859623: # 207 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: using __max_size_t = decltype(std::declval().max_size()); 859623: template 859623: static constexpr bool __has_max_size = false; 859623: template 859623: static constexpr bool __has_max_size<_Alloc, 859623: __void_t<__max_size_t<_Alloc>>> 859623: = true; 859623: # 225 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: using __soccc_t 859623: = decltype(std::declval() 859623: .select_on_container_copy_construction()); 859623: template 859623: static constexpr bool __has_soccc = false; 859623: template 859623: static constexpr bool __has_soccc<_Alloc, __void_t<__soccc_t<_Alloc>>> 859623: = true; 859623: 859623: }; 859623: 859623: template 859623: using __alloc_rebind 859623: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 859623: # 248 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: struct allocator_traits : __allocator_traits_base 859623: { 859623: 859623: typedef _Alloc allocator_type; 859623: 859623: typedef typename _Alloc::value_type value_type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: using pointer = __detected_or_t; 859623: 859623: private: 859623: 859623: template class _Func, typename _Tp, typename = void> 859623: struct _Ptr 859623: { 859623: using type = typename pointer_traits::template rebind<_Tp>; 859623: }; 859623: 859623: template class _Func, typename _Tp> 859623: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 859623: { 859623: using type = _Func<_Alloc>; 859623: }; 859623: 859623: 859623: template 859623: struct _Diff 859623: { using type = typename pointer_traits<_PtrT>::difference_type; }; 859623: 859623: template 859623: struct _Diff<_A2, _PtrT, __void_t> 859623: { using type = typename _A2::difference_type; }; 859623: 859623: 859623: template 859623: struct _Size : make_unsigned<_DiffT> { }; 859623: 859623: template 859623: struct _Size<_A2, _DiffT, __void_t> 859623: { using type = typename _A2::size_type; }; 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using void_pointer = typename _Ptr<__v_pointer, void>::type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using difference_type = typename _Diff<_Alloc, pointer>::type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using size_type = typename _Size<_Alloc, difference_type>::type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using propagate_on_container_copy_assignment 859623: = __detected_or_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using propagate_on_container_move_assignment 859623: = __detected_or_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using propagate_on_container_swap 859623: = __detected_or_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: using is_always_equal 859623: = typename __detected_or_t, __equal, _Alloc>::type; 859623: 859623: template 859623: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 859623: template 859623: using rebind_traits = allocator_traits>; 859623: # 383 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: [[__nodiscard__]] static pointer 859623: allocate(_Alloc& __a, size_type __n) 859623: { return __a.allocate(__n); } 859623: # 398 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: [[__nodiscard__]] static pointer 859623: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 859623: { 859623: if constexpr (__has_allocate_hint<_Alloc, size_type, const_void_pointer>) 859623: return __a.allocate(__n, __hint); 859623: else 859623: return __a.allocate(__n); 859623: } 859623: # 415 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: static void 859623: deallocate(_Alloc& __a, pointer __p, size_type __n) 859623: { __a.deallocate(__p, __n); } 859623: # 430 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: 859623: 859623: 859623: 859623: static __enable_if_t<__can_construct<_Alloc, _Tp, _Args...>> 859623: 859623: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 859623: noexcept(_S_nothrow_construct<_Tp, _Args...>()) 859623: { 859623: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) 859623: __a.construct(__p, std::forward<_Args>(__args)...); 859623: else 859623: std::_Construct(__p, std::forward<_Args>(__args)...); 859623: } 859623: # 454 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: static void 859623: destroy(_Alloc& __a, _Tp* __p) 859623: noexcept(_S_nothrow_destroy<_Tp>()) 859623: { 859623: if constexpr (__has_destroy<_Alloc, _Tp>) 859623: __a.destroy(__p); 859623: else 859623: std::_Destroy(__p); 859623: } 859623: # 473 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: static size_type 859623: max_size(const _Alloc& __a) noexcept 859623: { 859623: if constexpr (__has_max_size<_Alloc>) 859623: return __a.max_size(); 859623: else 859623: 859623: 859623: return __gnu_cxx::__numeric_traits::__max 859623: / sizeof(value_type); 859623: } 859623: # 493 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: static _Alloc 859623: select_on_container_copy_construction(const _Alloc& __rhs) 859623: { 859623: if constexpr (__has_soccc<_Alloc>) 859623: return __rhs.select_on_container_copy_construction(); 859623: else 859623: return __rhs; 859623: } 859623: 859623: private: 859623: # 524 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: static constexpr 859623: __enable_if_t<__has_construct<_Alloc, _Tp, _Args...>, bool> 859623: _S_nothrow_construct(_Alloc* __a = nullptr, _Tp* __p = nullptr) 859623: { return noexcept(__a->construct(__p, std::declval<_Args>()...)); } 859623: 859623: template 859623: static constexpr 859623: __enable_if_t, bool> 859623: _S_nothrow_construct(_Alloc* = nullptr, _Tp* __p = nullptr) 859623: { return __is_nothrow_new_constructible<_Tp, _Args...>; } 859623: 859623: template 859623: static constexpr 859623: __enable_if_t<__has_destroy<_Alloc, _Tp>, bool> 859623: _S_nothrow_destroy(_Alloc* __a = nullptr, _Tp* __p = nullptr) 859623: { return noexcept(__a->destroy(__p)); } 859623: 859623: template 859623: static constexpr 859623: __enable_if_t, bool> 859623: _S_nothrow_destroy(_Alloc* = nullptr, _Tp* __p = nullptr) 859623: { return is_nothrow_destructible<_Tp>::value; } 859623: 859623: }; 859623: #pragma GCC diagnostic pop 859623: # 559 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: struct allocator_traits> 859623: { 859623: 859623: using allocator_type = allocator<_Tp>; 859623: 859623: 859623: using value_type = _Tp; 859623: 859623: 859623: using pointer = _Tp*; 859623: 859623: 859623: using const_pointer = const _Tp*; 859623: 859623: 859623: using void_pointer = void*; 859623: 859623: 859623: using const_void_pointer = const void*; 859623: 859623: 859623: using difference_type = std::ptrdiff_t; 859623: 859623: 859623: using size_type = std::size_t; 859623: 859623: 859623: using propagate_on_container_copy_assignment = false_type; 859623: 859623: 859623: using propagate_on_container_move_assignment = true_type; 859623: 859623: 859623: using propagate_on_container_swap = false_type; 859623: 859623: 859623: using is_always_equal = true_type; 859623: 859623: template 859623: using rebind_alloc = allocator<_Up>; 859623: 859623: template 859623: using rebind_traits = allocator_traits>; 859623: # 611 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: [[__nodiscard__,__gnu__::__always_inline__]] 859623: static pointer 859623: allocate(allocator_type& __a, size_type __n) 859623: { return __a.allocate(__n); } 859623: # 626 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: [[__nodiscard__,__gnu__::__always_inline__]] 859623: static pointer 859623: allocate(allocator_type& __a, size_type __n, 859623: [[maybe_unused]] const_void_pointer __hint) 859623: { 859623: 859623: return __a.allocate(__n, __hint); 859623: 859623: 859623: 859623: } 859623: # 646 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: [[__gnu__::__always_inline__]] 859623: static void 859623: deallocate(allocator_type& __a, pointer __p, size_type __n) 859623: { __a.deallocate(__p, __n); } 859623: # 662 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: [[__gnu__::__always_inline__]] 859623: static void 859623: construct(allocator_type& __a __attribute__((__unused__)), 859623: _Up* __p, _Args&&... __args) 859623: 859623: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) 859623: 859623: 859623: 859623: { 859623: 859623: __a.construct(__p, std::forward<_Args>(__args)...); 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 689 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: [[__gnu__::__always_inline__]] 859623: static void 859623: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) 859623: noexcept(is_nothrow_destructible<_Up>::value) 859623: { 859623: 859623: __a.destroy(__p); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__gnu__::__always_inline__]] 859623: static size_type 859623: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept 859623: { 859623: 859623: return __a.max_size(); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__gnu__::__always_inline__]] 859623: static allocator_type 859623: select_on_container_copy_construction(const allocator_type& __rhs) 859623: { return __rhs; } 859623: }; 859623: # 736 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template<> 859623: struct allocator_traits> 859623: { 859623: 859623: using allocator_type = allocator; 859623: 859623: 859623: using value_type = void; 859623: 859623: 859623: using pointer = void*; 859623: 859623: 859623: using const_pointer = const void*; 859623: 859623: 859623: using void_pointer = void*; 859623: 859623: 859623: using const_void_pointer = const void*; 859623: 859623: 859623: using difference_type = std::ptrdiff_t; 859623: 859623: 859623: using size_type = std::size_t; 859623: 859623: 859623: using propagate_on_container_copy_assignment = false_type; 859623: 859623: 859623: using propagate_on_container_move_assignment = true_type; 859623: 859623: 859623: using propagate_on_container_swap = false_type; 859623: 859623: 859623: using is_always_equal = true_type; 859623: 859623: template 859623: using rebind_alloc = allocator<_Up>; 859623: 859623: template 859623: using rebind_traits = allocator_traits>; 859623: 859623: 859623: static void* 859623: allocate(allocator_type&, size_type, const void* = nullptr) = delete; 859623: 859623: 859623: static void 859623: deallocate(allocator_type&, void*, size_type) = delete; 859623: # 800 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: [[__gnu__::__always_inline__]] 859623: static void 859623: construct(allocator_type&, _Up* __p, _Args&&... __args) 859623: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) 859623: { std::_Construct(__p, std::forward<_Args>(__args)...); } 859623: # 814 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: [[__gnu__::__always_inline__]] 859623: static void 859623: destroy(allocator_type&, _Up* __p) 859623: noexcept(is_nothrow_destructible<_Up>::value) 859623: { std::_Destroy(__p); } 859623: 859623: 859623: static size_type 859623: max_size(const allocator_type&) = delete; 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__gnu__::__always_inline__]] 859623: static allocator_type 859623: select_on_container_copy_construction(const allocator_type& __rhs) 859623: { return __rhs; } 859623: }; 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: [[__gnu__::__always_inline__]] 859623: inline void 859623: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 859623: { 859623: using __traits = allocator_traits<_Alloc>; 859623: using __pocca = 859623: typename __traits::propagate_on_container_copy_assignment::type; 859623: if constexpr (__pocca::value) 859623: __one = __two; 859623: } 859623: 859623: template 859623: [[__gnu__::__always_inline__]] 859623: constexpr _Alloc 859623: __alloc_on_copy(const _Alloc& __a) 859623: { 859623: typedef allocator_traits<_Alloc> __traits; 859623: return __traits::select_on_container_copy_construction(__a); 859623: } 859623: 859623: template 859623: [[__gnu__::__always_inline__]] 859623: inline void 859623: __alloc_on_move(_Alloc& __one, _Alloc& __two) 859623: { 859623: using __traits = allocator_traits<_Alloc>; 859623: using __pocma 859623: = typename __traits::propagate_on_container_move_assignment::type; 859623: if constexpr (__pocma::value) 859623: __one = std::move(__two); 859623: } 859623: 859623: template 859623: [[__gnu__::__always_inline__]] 859623: inline void 859623: __alloc_on_swap(_Alloc& __one, _Alloc& __two) 859623: { 859623: using __traits = allocator_traits<_Alloc>; 859623: using __pocs = typename __traits::propagate_on_container_swap::type; 859623: if constexpr (__pocs::value) 859623: { 859623: using std::swap; 859623: swap(__one, __two); 859623: } 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: template, 859623: typename = void> 859623: struct __is_alloc_insertable_impl 859623: : false_type 859623: { }; 859623: 859623: template 859623: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, 859623: __void_t::construct( 859623: std::declval<_Alloc&>(), std::declval<_ValueT*>(), 859623: std::declval<_Tp>()))>> 859623: : true_type 859623: { }; 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_copy_insertable 859623: : __is_alloc_insertable_impl<_Alloc, 859623: typename _Alloc::value_type const&>::type 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct __is_copy_insertable> 859623: : is_copy_constructible<_Tp> 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_move_insertable 859623: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct __is_move_insertable> 859623: : is_move_constructible<_Tp> 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct __is_allocator : false_type { }; 859623: 859623: template 859623: struct __is_allocator<_Alloc, 859623: __void_t().allocate(size_t{}))>> 859623: : true_type { }; 859623: 859623: template 859623: using _RequireAllocator 859623: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 859623: 859623: template 859623: using _RequireNotAllocator 859623: = typename enable_if::value, _Alloc>::type; 859623: # 970 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: struct __alloc_swap 859623: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 859623: 859623: template 859623: struct __alloc_swap<_Alloc, false> 859623: { 859623: static void 859623: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 859623: { 859623: 859623: if (__one != __two) 859623: swap(__one, __two); 859623: } 859623: }; 859623: 859623: 859623: template, 859623: is_nothrow_move_constructible>::value> 859623: struct __shrink_to_fit_aux 859623: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 859623: 859623: template 859623: struct __shrink_to_fit_aux<_Tp, true> 859623: { 859623: 859623: static bool 859623: _S_do_it(_Tp& __c) noexcept 859623: { 859623: # 1011 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: return false; 859623: 859623: } 859623: }; 859623: # 1023 "/usr/arm-linux-gnueabi/include/c++/15/bits/alloc_traits.h" 3 859623: template 859623: 859623: void 859623: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 859623: _Allocator& __alloc) 859623: { 859623: for (; __first != __last; ++__first) 859623: 859623: 859623: 859623: allocator_traits<_Allocator>::destroy(__alloc, 859623: std::__addressof(*__first)); 859623: 859623: } 859623: 859623: 859623: template 859623: __attribute__((__always_inline__)) 859623: inline void 859623: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 859623: allocator<_Tp>&) 859623: { 859623: std::_Destroy(__first, __last); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 37 "/usr/arm-linux-gnueabi/include/c++/15/ext/alloc_traits.h" 2 3 859623: 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __alloc_traits 859623: 859623: : std::allocator_traits<_Alloc> 859623: 859623: { 859623: typedef _Alloc allocator_type; 859623: 859623: typedef std::allocator_traits<_Alloc> _Base_type; 859623: typedef typename _Base_type::value_type value_type; 859623: typedef typename _Base_type::pointer pointer; 859623: typedef typename _Base_type::const_pointer const_pointer; 859623: typedef typename _Base_type::size_type size_type; 859623: typedef typename _Base_type::difference_type difference_type; 859623: 859623: typedef value_type& reference; 859623: typedef const value_type& const_reference; 859623: using _Base_type::allocate; 859623: using _Base_type::deallocate; 859623: using _Base_type::construct; 859623: using _Base_type::destroy; 859623: using _Base_type::max_size; 859623: 859623: private: 859623: template 859623: using __is_custom_pointer 859623: = std::__and_, 859623: std::__not_>>; 859623: 859623: public: 859623: 859623: template 859623: [[__gnu__::__always_inline__]] 859623: static 859623: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 859623: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 859623: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), 859623: std::forward<_Args>(__args)...))) 859623: { 859623: _Base_type::construct(__a, std::__to_address(__p), 859623: std::forward<_Args>(__args)...); 859623: } 859623: 859623: 859623: template 859623: [[__gnu__::__always_inline__]] 859623: static 859623: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 859623: destroy(_Alloc& __a, _Ptr __p) 859623: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) 859623: { _Base_type::destroy(__a, std::__to_address(__p)); } 859623: 859623: [[__gnu__::__always_inline__]] 859623: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) 859623: { return _Base_type::select_on_container_copy_construction(__a); } 859623: 859623: [[__gnu__::__always_inline__]] 859623: static void _S_on_swap(_Alloc& __a, _Alloc& __b) 859623: { std::__alloc_on_swap(__a, __b); } 859623: 859623: [[__gnu__::__always_inline__]] 859623: static constexpr bool _S_propagate_on_copy_assign() 859623: { return _Base_type::propagate_on_container_copy_assignment::value; } 859623: 859623: [[__gnu__::__always_inline__]] 859623: static constexpr bool _S_propagate_on_move_assign() 859623: { return _Base_type::propagate_on_container_move_assignment::value; } 859623: 859623: [[__gnu__::__always_inline__]] 859623: static constexpr bool _S_propagate_on_swap() 859623: { return _Base_type::propagate_on_container_swap::value; } 859623: 859623: [[__gnu__::__always_inline__]] 859623: static constexpr bool _S_always_equal() 859623: { return _Base_type::is_always_equal::value; } 859623: 859623: __attribute__((__always_inline__)) 859623: static constexpr bool _S_nothrow_move() 859623: { return _S_propagate_on_move_assign() || _S_always_equal(); } 859623: 859623: template 859623: struct rebind 859623: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 859623: # 182 "/usr/arm-linux-gnueabi/include/c++/15/ext/alloc_traits.h" 3 859623: }; 859623: 859623: 859623: } 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 49 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 2 3 859623: # 68 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: namespace __cxx11 { 859623: # 93 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: class basic_string 859623: { 859623: # 104 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 859623: rebind<_CharT>::other _Char_alloc_type; 859623: 859623: 859623: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 859623: 859623: 859623: public: 859623: typedef _Traits traits_type; 859623: typedef typename _Traits::char_type value_type; 859623: typedef _Char_alloc_type allocator_type; 859623: typedef typename _Alloc_traits::size_type size_type; 859623: typedef typename _Alloc_traits::difference_type difference_type; 859623: typedef typename _Alloc_traits::reference reference; 859623: typedef typename _Alloc_traits::const_reference const_reference; 859623: typedef typename _Alloc_traits::pointer pointer; 859623: typedef typename _Alloc_traits::const_pointer const_pointer; 859623: typedef __gnu_cxx::__normal_iterator iterator; 859623: typedef __gnu_cxx::__normal_iterator 859623: const_iterator; 859623: typedef std::reverse_iterator const_reverse_iterator; 859623: typedef std::reverse_iterator reverse_iterator; 859623: 859623: 859623: static const size_type npos = static_cast(-1); 859623: 859623: protected: 859623: 859623: 859623: 859623: 859623: typedef const_iterator __const_iterator; 859623: 859623: 859623: private: 859623: static pointer 859623: _S_allocate(_Char_alloc_type& __a, size_type __n) 859623: { 859623: pointer __p = _Alloc_traits::allocate(__a, __n); 859623: # 152 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: return __p; 859623: } 859623: # 197 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: struct _Alloc_hider : allocator_type 859623: { 859623: 859623: 859623: 859623: 859623: 859623: _Alloc_hider(pointer __dat, const _Alloc& __a) 859623: : allocator_type(__a), _M_p(__dat) { } 859623: 859623: 859623: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) 859623: : allocator_type(std::move(__a)), _M_p(__dat) { } 859623: 859623: 859623: pointer _M_p; 859623: }; 859623: 859623: _Alloc_hider _M_dataplus; 859623: size_type _M_string_length; 859623: 859623: enum { _S_local_capacity = 15 / sizeof(_CharT) }; 859623: 859623: union 859623: { 859623: _CharT _M_local_buf[_S_local_capacity + 1]; 859623: size_type _M_allocated_capacity; 859623: }; 859623: 859623: 859623: void 859623: _M_data(pointer __p) 859623: { _M_dataplus._M_p = __p; } 859623: 859623: 859623: void 859623: _M_length(size_type __length) 859623: { _M_string_length = __length; } 859623: 859623: 859623: pointer 859623: _M_data() const 859623: { return _M_dataplus._M_p; } 859623: 859623: 859623: pointer 859623: _M_local_data() 859623: { 859623: 859623: return std::pointer_traits::pointer_to(*_M_local_buf); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: const_pointer 859623: _M_local_data() const 859623: { 859623: 859623: return std::pointer_traits::pointer_to(*_M_local_buf); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: void 859623: _M_capacity(size_type __capacity) 859623: { _M_allocated_capacity = __capacity; } 859623: 859623: 859623: void 859623: _M_set_length(size_type __n) 859623: { 859623: _M_length(__n); 859623: traits_type::assign(_M_data()[__n], _CharT()); 859623: } 859623: 859623: 859623: bool 859623: _M_is_local() const 859623: { 859623: if (_M_data() == _M_local_data()) 859623: { 859623: if (_M_string_length > _S_local_capacity) 859623: __builtin_unreachable(); 859623: return true; 859623: } 859623: return false; 859623: } 859623: 859623: 859623: 859623: pointer 859623: _M_create(size_type&, size_type); 859623: 859623: 859623: void 859623: _M_dispose() 859623: { 859623: if (!_M_is_local()) 859623: _M_destroy(_M_allocated_capacity); 859623: } 859623: 859623: 859623: void 859623: _M_destroy(size_type __size) throw() 859623: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } 859623: # 332 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: 859623: void 859623: _M_construct(_InIterator __beg, _InIterator __end, 859623: std::input_iterator_tag); 859623: 859623: 859623: 859623: template 859623: 859623: void 859623: _M_construct(_FwdIterator __beg, _FwdIterator __end, 859623: std::forward_iterator_tag); 859623: 859623: 859623: void 859623: _M_construct(size_type __req, _CharT __c); 859623: 859623: 859623: 859623: template 859623: 859623: void 859623: _M_construct(const _CharT *__c, size_type __n); 859623: 859623: 859623: allocator_type& 859623: _M_get_allocator() 859623: { return _M_dataplus; } 859623: 859623: 859623: const allocator_type& 859623: _M_get_allocator() const 859623: { return _M_dataplus; } 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: void 859623: _M_init_local_buf() noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: } 859623: 859623: __attribute__((__always_inline__)) 859623: 859623: pointer 859623: _M_use_local_data() noexcept 859623: { 859623: 859623: 859623: 859623: return _M_local_data(); 859623: } 859623: 859623: private: 859623: # 407 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: size_type 859623: _M_check(size_type __pos, const char* __s) const 859623: { 859623: if (__pos > this->size()) 859623: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") 859623: , 859623: __s, __pos, this->size()); 859623: return __pos; 859623: } 859623: 859623: 859623: void 859623: _M_check_length(size_type __n1, size_type __n2, const char* __s) const 859623: { 859623: if (this->max_size() - (this->size() - __n1) < __n2) 859623: __throw_length_error((__s)); 859623: } 859623: 859623: 859623: 859623: 859623: size_type 859623: _M_limit(size_type __pos, size_type __off) const noexcept 859623: { 859623: const bool __testoff = __off < this->size() - __pos; 859623: return __testoff ? __off : this->size() - __pos; 859623: } 859623: 859623: 859623: bool 859623: _M_disjunct(const _CharT* __s) const noexcept 859623: { 859623: return (less()(__s, _M_data()) 859623: || less()(_M_data() + this->size(), __s)); 859623: } 859623: 859623: 859623: 859623: 859623: static void 859623: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) 859623: { 859623: if (__n == 1) 859623: traits_type::assign(*__d, *__s); 859623: else 859623: traits_type::copy(__d, __s, __n); 859623: } 859623: 859623: 859623: static void 859623: _S_move(_CharT* __d, const _CharT* __s, size_type __n) 859623: { 859623: if (__n == 1) 859623: traits_type::assign(*__d, *__s); 859623: else 859623: traits_type::move(__d, __s, __n); 859623: } 859623: 859623: 859623: static void 859623: _S_assign(_CharT* __d, size_type __n, _CharT __c) 859623: { 859623: if (__n == 1) 859623: traits_type::assign(*__d, __c); 859623: else 859623: traits_type::assign(__d, __n, __c); 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: 859623: template 859623: 859623: static void 859623: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 859623: { 859623: 859623: using _IterBase = decltype(std::__niter_base(__k1)); 859623: if constexpr (__or_, 859623: is_same<_IterBase, const _CharT*>>::value) 859623: _S_copy(__p, std::__niter_base(__k1), __k2 - __k1); 859623: # 502 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: else 859623: 859623: for (; __k1 != __k2; ++__k1, (void)++__p) 859623: traits_type::assign(*__p, static_cast<_CharT>(*__k1)); 859623: } 859623: #pragma GCC diagnostic pop 859623: # 549 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: static int 859623: _S_compare(size_type __n1, size_type __n2) noexcept 859623: { 859623: const difference_type __d = difference_type(__n1 - __n2); 859623: 859623: if (__d > __gnu_cxx::__numeric_traits::__max) 859623: return __gnu_cxx::__numeric_traits::__max; 859623: else if (__d < __gnu_cxx::__numeric_traits::__min) 859623: return __gnu_cxx::__numeric_traits::__min; 859623: else 859623: return int(__d); 859623: } 859623: 859623: 859623: void 859623: _M_assign(const basic_string&); 859623: 859623: 859623: void 859623: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 859623: size_type __len2); 859623: 859623: 859623: void 859623: _M_erase(size_type __pos, size_type __n); 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string() 859623: noexcept(is_nothrow_default_constructible<_Alloc>::value) 859623: 859623: 859623: 859623: : _M_dataplus(_M_local_data()) 859623: { 859623: _M_init_local_buf(); 859623: _M_set_length(0); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: basic_string(const _Alloc& __a) noexcept 859623: : _M_dataplus(_M_local_data(), __a) 859623: { 859623: _M_init_local_buf(); 859623: _M_set_length(0); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string(const basic_string& __str) 859623: : _M_dataplus(_M_local_data(), 859623: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) 859623: { 859623: _M_construct(__str._M_data(), __str.length()); 859623: } 859623: # 628 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string(const basic_string& __str, size_type __pos, 859623: const _Alloc& __a = _Alloc()) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { 859623: const _CharT* __start = __str._M_data() 859623: + __str._M_check(__pos, "basic_string::basic_string"); 859623: _M_construct(__start, __start + __str._M_limit(__pos, npos), 859623: std::forward_iterator_tag()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string(const basic_string& __str, size_type __pos, 859623: size_type __n) 859623: : _M_dataplus(_M_local_data()) 859623: { 859623: const _CharT* __start = __str._M_data() 859623: + __str._M_check(__pos, "basic_string::basic_string"); 859623: _M_construct(__start, __start + __str._M_limit(__pos, __n), 859623: std::forward_iterator_tag()); 859623: } 859623: # 663 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string(const basic_string& __str, size_type __pos, 859623: size_type __n, const _Alloc& __a) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { 859623: const _CharT* __start 859623: = __str._M_data() + __str._M_check(__pos, "string::string"); 859623: _M_construct(__start, __start + __str._M_limit(__pos, __n), 859623: std::forward_iterator_tag()); 859623: } 859623: # 683 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string(const _CharT* __s, size_type __n, 859623: const _Alloc& __a = _Alloc()) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { 859623: 859623: if (__s == 0 && __n > 0) 859623: std::__throw_logic_error(("basic_string: " "construction from null is not valid") 859623: ); 859623: _M_construct(__s, __s + __n, std::forward_iterator_tag()); 859623: } 859623: # 705 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { 859623: 859623: if (__s == 0) 859623: std::__throw_logic_error(("basic_string: " "construction from null is not valid") 859623: ); 859623: const _CharT* __end = __s + traits_type::length(__s); 859623: _M_construct(__s, __end, forward_iterator_tag()); 859623: } 859623: # 728 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { _M_construct(__n, __c); } 859623: # 741 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string(basic_string&& __str) noexcept 859623: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) 859623: { 859623: if (__str._M_is_local()) 859623: { 859623: _M_init_local_buf(); 859623: traits_type::copy(_M_local_buf, __str._M_local_buf, 859623: __str.length() + 1); 859623: } 859623: else 859623: { 859623: _M_data(__str._M_data()); 859623: _M_capacity(__str._M_allocated_capacity); 859623: } 859623: 859623: 859623: 859623: 859623: _M_length(__str.length()); 859623: __str._M_data(__str._M_use_local_data()); 859623: __str._M_set_length(0); 859623: } 859623: # 797 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { _M_construct(__l.begin(), __l.end(), std::forward_iterator_tag()); } 859623: 859623: 859623: basic_string(const basic_string& __str, const _Alloc& __a) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); } 859623: 859623: 859623: basic_string(basic_string&& __str, const _Alloc& __a) 859623: noexcept(_Alloc_traits::_S_always_equal()) 859623: : _M_dataplus(_M_local_data(), __a) 859623: { 859623: if (__str._M_is_local()) 859623: { 859623: _M_init_local_buf(); 859623: traits_type::copy(_M_local_buf, __str._M_local_buf, 859623: __str.length() + 1); 859623: _M_length(__str.length()); 859623: __str._M_set_length(0); 859623: } 859623: else if (_Alloc_traits::_S_always_equal() 859623: || __str.get_allocator() == __a) 859623: { 859623: _M_data(__str._M_data()); 859623: _M_length(__str.length()); 859623: _M_capacity(__str._M_allocated_capacity); 859623: __str._M_data(__str._M_use_local_data()); 859623: __str._M_set_length(0); 859623: } 859623: else 859623: _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); 859623: } 859623: # 846 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template> 859623: 859623: 859623: 859623: 859623: basic_string(_InputIterator __beg, _InputIterator __end, 859623: const _Alloc& __a = _Alloc()) 859623: : _M_dataplus(_M_local_data(), __a), _M_string_length(0) 859623: { 859623: 859623: _M_construct(__beg, __end, std::__iterator_category(__beg)); 859623: 859623: 859623: 859623: 859623: } 859623: # 894 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: ~basic_string() 859623: { _M_dispose(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: operator=(const basic_string& __str) 859623: { 859623: return this->assign(__str); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: operator=(const _CharT* __s) 859623: { return this->assign(__s); } 859623: # 925 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: operator=(_CharT __c) 859623: { 859623: this->assign(1, __c); 859623: return *this; 859623: } 859623: # 943 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: operator=(basic_string&& __str) 859623: noexcept(_Alloc_traits::_S_nothrow_move()) 859623: { 859623: const bool __equal_allocs = _Alloc_traits::_S_always_equal() 859623: || _M_get_allocator() == __str._M_get_allocator(); 859623: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() 859623: && !__equal_allocs) 859623: { 859623: 859623: _M_destroy(_M_allocated_capacity); 859623: _M_data(_M_local_data()); 859623: _M_set_length(0); 859623: } 859623: 859623: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); 859623: 859623: if (__str._M_is_local()) 859623: { 859623: 859623: 859623: 859623: if (__builtin_expect(std::__addressof(__str) != this, true)) 859623: { 859623: if (__str.size()) 859623: this->_S_copy(_M_data(), __str._M_data(), __str.size()); 859623: _M_set_length(__str.size()); 859623: } 859623: } 859623: else if (_Alloc_traits::_S_propagate_on_move_assign() || __equal_allocs) 859623: { 859623: 859623: pointer __data = nullptr; 859623: size_type __capacity; 859623: if (!_M_is_local()) 859623: { 859623: if (__equal_allocs) 859623: { 859623: 859623: __data = _M_data(); 859623: __capacity = _M_allocated_capacity; 859623: } 859623: else 859623: _M_destroy(_M_allocated_capacity); 859623: } 859623: 859623: _M_data(__str._M_data()); 859623: _M_length(__str.length()); 859623: _M_capacity(__str._M_allocated_capacity); 859623: if (__data) 859623: { 859623: __str._M_data(__data); 859623: __str._M_capacity(__capacity); 859623: } 859623: else 859623: __str._M_data(__str._M_use_local_data()); 859623: } 859623: else 859623: _M_assign(__str); 859623: __str.clear(); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: operator=(initializer_list<_CharT> __l) 859623: { 859623: this->assign(__l.begin(), __l.size()); 859623: return *this; 859623: } 859623: # 1045 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: iterator 859623: begin() noexcept 859623: { return iterator(_M_data()); } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: begin() const noexcept 859623: { return const_iterator(_M_data()); } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: iterator 859623: end() noexcept 859623: { return iterator(_M_data() + this->size()); } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: end() const noexcept 859623: { return const_iterator(_M_data() + this->size()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: rbegin() noexcept 859623: { return reverse_iterator(this->end()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: rbegin() const noexcept 859623: { return const_reverse_iterator(this->end()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: rend() noexcept 859623: { return reverse_iterator(this->begin()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: rend() const noexcept 859623: { return const_reverse_iterator(this->begin()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: cbegin() const noexcept 859623: { return const_iterator(this->_M_data()); } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: cend() const noexcept 859623: { return const_iterator(this->_M_data() + this->size()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: crbegin() const noexcept 859623: { return const_reverse_iterator(this->end()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: crend() const noexcept 859623: { return const_reverse_iterator(this->begin()); } 859623: 859623: 859623: public: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: size() const noexcept 859623: { 859623: size_type __sz = _M_string_length; 859623: if (__sz > max_size ()) 859623: __builtin_unreachable (); 859623: return __sz; 859623: } 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: length() const noexcept 859623: { return size(); } 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: max_size() const noexcept 859623: { 859623: const size_t __diffmax 859623: = __gnu_cxx::__numeric_traits::__max / sizeof(_CharT); 859623: const size_t __allocmax = _Alloc_traits::max_size(_M_get_allocator()); 859623: return (std::min)(__diffmax, __allocmax) - 1; 859623: } 859623: # 1199 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: void 859623: resize(size_type __n, _CharT __c); 859623: # 1213 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: void 859623: resize(size_type __n) 859623: { this->resize(__n, _CharT()); } 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: 859623: 859623: void 859623: shrink_to_fit() noexcept 859623: { reserve(); } 859623: #pragma GCC diagnostic pop 859623: # 1266 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: void 859623: __resize_and_overwrite(size_type __n, _Operation __op); 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: capacity() const noexcept 859623: { 859623: size_t __sz = _M_is_local() ? size_type(_S_local_capacity) 859623: : _M_allocated_capacity; 859623: if (__sz < _S_local_capacity || __sz > max_size ()) 859623: __builtin_unreachable (); 859623: return __sz; 859623: } 859623: # 1303 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: void 859623: reserve(size_type __res_arg); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: reserve(); 859623: 859623: 859623: 859623: 859623: 859623: void 859623: clear() noexcept 859623: { _M_set_length(0); } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: bool 859623: empty() const noexcept 859623: { return _M_string_length == 0; } 859623: # 1345 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: const_reference 859623: operator[] (size_type __pos) const noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); 859623: return _M_data()[__pos]; 859623: } 859623: # 1363 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: reference 859623: operator[](size_type __pos) 859623: { 859623: 859623: 859623: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: ; 859623: return _M_data()[__pos]; 859623: } 859623: # 1385 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: const_reference 859623: at(size_type __n) const 859623: { 859623: if (__n >= this->size()) 859623: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 859623: 859623: , 859623: __n, this->size()); 859623: return _M_data()[__n]; 859623: } 859623: # 1407 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: reference 859623: at(size_type __n) 859623: { 859623: if (__n >= size()) 859623: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 859623: 859623: , 859623: __n, this->size()); 859623: return _M_data()[__n]; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reference 859623: front() noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return operator[](0); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: front() const noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return operator[](0); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reference 859623: back() noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return operator[](this->size() - 1); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: back() const noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return operator[](this->size() - 1); 859623: } 859623: # 1475 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: operator+=(const basic_string& __str) 859623: { return this->append(__str); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: operator+=(const _CharT* __s) 859623: { return this->append(__s); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: operator+=(_CharT __c) 859623: { 859623: this->push_back(__c); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: operator+=(initializer_list<_CharT> __l) 859623: { return this->append(__l.begin(), __l.size()); } 859623: # 1533 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: append(const basic_string& __str) 859623: { return this->append(__str._M_data(), __str.size()); } 859623: # 1551 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: append(const basic_string& __str, size_type __pos, size_type __n = npos) 859623: { return this->append(__str._M_data() 859623: + __str._M_check(__pos, "basic_string::append"), 859623: __str._M_limit(__pos, __n)); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: append(const _CharT* __s, size_type __n) 859623: { 859623: ; 859623: _M_check_length(size_type(0), __n, "basic_string::append"); 859623: return _M_append(__s, __n); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: append(const _CharT* __s) 859623: { 859623: ; 859623: const size_type __n = traits_type::length(__s); 859623: _M_check_length(size_type(0), __n, "basic_string::append"); 859623: return _M_append(__s, __n); 859623: } 859623: # 1596 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: append(size_type __n, _CharT __c) 859623: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } 859623: # 1659 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: append(initializer_list<_CharT> __l) 859623: { return this->append(__l.begin(), __l.size()); } 859623: # 1674 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template> 859623: 859623: 859623: 859623: 859623: basic_string& 859623: append(_InputIterator __first, _InputIterator __last) 859623: { return this->replace(end(), end(), __first, __last); } 859623: # 1722 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: void 859623: push_back(_CharT __c) 859623: { 859623: const size_type __size = this->size(); 859623: if (__size + 1 > this->capacity()) 859623: this->_M_mutate(__size, size_type(0), 0, size_type(1)); 859623: traits_type::assign(this->_M_data()[__size], __c); 859623: this->_M_set_length(__size + 1); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: basic_string& 859623: assign(const basic_string& __str) 859623: { 859623: 859623: if (_Alloc_traits::_S_propagate_on_copy_assign()) 859623: { 859623: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() 859623: && _M_get_allocator() != __str._M_get_allocator()) 859623: { 859623: 859623: 859623: if (__str.size() <= _S_local_capacity) 859623: { 859623: _M_destroy(_M_allocated_capacity); 859623: _M_data(_M_use_local_data()); 859623: _M_set_length(0); 859623: } 859623: else 859623: { 859623: const auto __len = __str.size(); 859623: auto __alloc = __str._M_get_allocator(); 859623: 859623: auto __ptr = _S_allocate(__alloc, __len + 1); 859623: _M_destroy(_M_allocated_capacity); 859623: _M_data(__ptr); 859623: _M_capacity(__len); 859623: _M_set_length(__len); 859623: } 859623: } 859623: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); 859623: } 859623: 859623: this->_M_assign(__str); 859623: return *this; 859623: } 859623: # 1784 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: assign(basic_string&& __str) 859623: noexcept(_Alloc_traits::_S_nothrow_move()) 859623: { 859623: 859623: 859623: return *this = std::move(__str); 859623: } 859623: # 1808 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: assign(const basic_string& __str, size_type __pos, size_type __n = npos) 859623: { return _M_replace(size_type(0), this->size(), __str._M_data() 859623: + __str._M_check(__pos, "basic_string::assign"), 859623: __str._M_limit(__pos, __n)); } 859623: # 1825 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: assign(const _CharT* __s, size_type __n) 859623: { 859623: ; 859623: return _M_replace(size_type(0), this->size(), __s, __n); 859623: } 859623: # 1842 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: assign(const _CharT* __s) 859623: { 859623: ; 859623: return _M_replace(size_type(0), this->size(), __s, 859623: traits_type::length(__s)); 859623: } 859623: # 1860 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: assign(size_type __n, _CharT __c) 859623: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } 859623: # 1874 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template> 859623: 859623: basic_string& 859623: assign(_InputIterator __first, _InputIterator __last) 859623: { 859623: using _IterTraits = iterator_traits<_InputIterator>; 859623: if constexpr (is_pointer::value 859623: && is_same::value) 859623: { 859623: ; 859623: return _M_replace(size_type(0), size(), 859623: std::__niter_base(__first), __last - __first); 859623: } 859623: # 1901 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: else 859623: return *this = basic_string(__first, __last, get_allocator()); 859623: } 859623: #pragma GCC diagnostic pop 859623: # 1937 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: assign(initializer_list<_CharT> __l) 859623: { 859623: 859623: 859623: const size_type __n = __l.size(); 859623: if (__n > capacity()) 859623: *this = basic_string(__l.begin(), __l.end(), get_allocator()); 859623: else 859623: { 859623: if (__n) 859623: _S_copy(_M_data(), __l.begin(), __n); 859623: _M_set_length(__n); 859623: } 859623: return *this; 859623: } 859623: # 2007 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: iterator 859623: insert(const_iterator __p, size_type __n, _CharT __c) 859623: { 859623: ; 859623: const size_type __pos = __p - begin(); 859623: this->replace(__p, __p, __n, __c); 859623: return iterator(this->_M_data() + __pos); 859623: } 859623: # 2050 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template> 859623: 859623: iterator 859623: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) 859623: { 859623: ; 859623: const size_type __pos = __p - begin(); 859623: this->replace(__p, __p, __beg, __end); 859623: return iterator(this->_M_data() + __pos); 859623: } 859623: # 2118 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: iterator 859623: insert(const_iterator __p, initializer_list<_CharT> __l) 859623: { return this->insert(__p, __l.begin(), __l.end()); } 859623: # 2146 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: insert(size_type __pos1, const basic_string& __str) 859623: { return this->replace(__pos1, size_type(0), 859623: __str._M_data(), __str.size()); } 859623: # 2170 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: insert(size_type __pos1, const basic_string& __str, 859623: size_type __pos2, size_type __n = npos) 859623: { return this->replace(__pos1, size_type(0), __str._M_data() 859623: + __str._M_check(__pos2, "basic_string::insert"), 859623: __str._M_limit(__pos2, __n)); } 859623: # 2194 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: insert(size_type __pos, const _CharT* __s, size_type __n) 859623: { return this->replace(__pos, size_type(0), __s, __n); } 859623: # 2214 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: insert(size_type __pos, const _CharT* __s) 859623: { 859623: ; 859623: return this->replace(__pos, size_type(0), __s, 859623: traits_type::length(__s)); 859623: } 859623: # 2239 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: insert(size_type __pos, size_type __n, _CharT __c) 859623: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), 859623: size_type(0), __n, __c); } 859623: # 2258 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: iterator 859623: insert(__const_iterator __p, _CharT __c) 859623: { 859623: ; 859623: const size_type __pos = __p - begin(); 859623: _M_replace_aux(__pos, size_type(0), size_type(1), __c); 859623: return iterator(_M_data() + __pos); 859623: } 859623: # 2321 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: erase(size_type __pos = 0, size_type __n = npos) 859623: { 859623: _M_check(__pos, "basic_string::erase"); 859623: if (__n == npos) 859623: this->_M_set_length(__pos); 859623: else if (__n != 0) 859623: this->_M_erase(__pos, _M_limit(__pos, __n)); 859623: return *this; 859623: } 859623: # 2341 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: iterator 859623: erase(__const_iterator __position) 859623: { 859623: 859623: ; 859623: const size_type __pos = __position - begin(); 859623: this->_M_erase(__pos, size_type(1)); 859623: return iterator(_M_data() + __pos); 859623: } 859623: # 2361 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: iterator 859623: erase(__const_iterator __first, __const_iterator __last) 859623: { 859623: 859623: ; 859623: const size_type __pos = __first - begin(); 859623: if (__last == end()) 859623: this->_M_set_length(__pos); 859623: else 859623: this->_M_erase(__pos, __last - __first); 859623: return iterator(this->_M_data() + __pos); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: pop_back() noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); 859623: _M_erase(size() - 1, 1); 859623: } 859623: # 2407 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(size_type __pos, size_type __n, const basic_string& __str) 859623: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 859623: # 2430 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(size_type __pos1, size_type __n1, const basic_string& __str, 859623: size_type __pos2, size_type __n2 = npos) 859623: { return this->replace(__pos1, __n1, __str._M_data() 859623: + __str._M_check(__pos2, "basic_string::replace"), 859623: __str._M_limit(__pos2, __n2)); } 859623: # 2456 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(size_type __pos, size_type __n1, const _CharT* __s, 859623: size_type __n2) 859623: { 859623: ; 859623: return _M_replace(_M_check(__pos, "basic_string::replace"), 859623: _M_limit(__pos, __n1), __s, __n2); 859623: } 859623: # 2482 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(size_type __pos, size_type __n1, const _CharT* __s) 859623: { 859623: ; 859623: return this->replace(__pos, __n1, __s, traits_type::length(__s)); 859623: } 859623: # 2507 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 859623: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), 859623: _M_limit(__pos, __n1), __n2, __c); } 859623: # 2526 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, 859623: const basic_string& __str) 859623: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 859623: # 2547 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, 859623: const _CharT* __s, size_type __n) 859623: { 859623: 859623: ; 859623: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); 859623: } 859623: # 2570 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) 859623: { 859623: ; 859623: return this->replace(__i1, __i2, __s, traits_type::length(__s)); 859623: } 859623: # 2592 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, 859623: _CharT __c) 859623: { 859623: 859623: ; 859623: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); 859623: } 859623: # 2618 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template> 859623: 859623: basic_string& 859623: replace(const_iterator __i1, const_iterator __i2, 859623: _InputIterator __k1, _InputIterator __k2) 859623: { 859623: 859623: ; 859623: ; 859623: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, 859623: std::__false_type()); 859623: } 859623: # 2651 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, 859623: _CharT* __k1, _CharT* __k2) 859623: { 859623: 859623: ; 859623: ; 859623: return this->replace(__i1 - begin(), __i2 - __i1, 859623: __k1, __k2 - __k1); 859623: } 859623: 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, 859623: const _CharT* __k1, const _CharT* __k2) 859623: { 859623: 859623: ; 859623: ; 859623: return this->replace(__i1 - begin(), __i2 - __i1, 859623: __k1, __k2 - __k1); 859623: } 859623: 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, 859623: iterator __k1, iterator __k2) 859623: { 859623: 859623: ; 859623: ; 859623: return this->replace(__i1 - begin(), __i2 - __i1, 859623: __k1.base(), __k2 - __k1); 859623: } 859623: 859623: 859623: basic_string& 859623: replace(__const_iterator __i1, __const_iterator __i2, 859623: const_iterator __k1, const_iterator __k2) 859623: { 859623: 859623: ; 859623: ; 859623: return this->replace(__i1 - begin(), __i2 - __i1, 859623: __k1.base(), __k2 - __k1); 859623: } 859623: # 2738 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: basic_string& replace(const_iterator __i1, const_iterator __i2, 859623: initializer_list<_CharT> __l) 859623: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } 859623: # 2802 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: private: 859623: template 859623: 859623: basic_string& 859623: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 859623: _Integer __n, _Integer __val, __true_type) 859623: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } 859623: 859623: template 859623: 859623: basic_string& 859623: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 859623: _InputIterator __k1, _InputIterator __k2, 859623: __false_type); 859623: 859623: 859623: basic_string& 859623: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 859623: _CharT __c); 859623: 859623: __attribute__((__noinline__, __noclone__, __cold__)) void 859623: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, 859623: const size_type __len2, const size_type __how_much); 859623: 859623: 859623: basic_string& 859623: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 859623: const size_type __len2); 859623: 859623: 859623: basic_string& 859623: _M_append(const _CharT* __s, size_type __n); 859623: 859623: public: 859623: # 2849 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: size_type 859623: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 859623: # 2860 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: void 859623: swap(basic_string& __s) noexcept; 859623: # 2871 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: const _CharT* 859623: c_str() const noexcept 859623: { return _M_data(); } 859623: # 2884 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: const _CharT* 859623: data() const noexcept 859623: { return _M_data(); } 859623: # 2905 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return _M_get_allocator(); } 859623: # 2922 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept; 859623: # 2937 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find(const basic_string& __str, size_type __pos = 0) const 859623: noexcept 859623: { return this->find(__str.data(), __pos, __str.size()); } 859623: # 2971 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find(const _CharT* __s, size_type __pos = 0) const noexcept 859623: { 859623: ; 859623: return this->find(__s, __pos, traits_type::length(__s)); 859623: } 859623: # 2989 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find(_CharT __c, size_type __pos = 0) const noexcept; 859623: # 3003 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: rfind(const basic_string& __str, size_type __pos = npos) const 859623: noexcept 859623: { return this->rfind(__str.data(), __pos, __str.size()); } 859623: # 3039 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: rfind(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept; 859623: # 3054 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: rfind(const _CharT* __s, size_type __pos = npos) const 859623: { 859623: ; 859623: return this->rfind(__s, __pos, traits_type::length(__s)); 859623: } 859623: # 3072 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: rfind(_CharT __c, size_type __pos = npos) const noexcept; 859623: # 3087 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_of(const basic_string& __str, size_type __pos = 0) const 859623: noexcept 859623: { return this->find_first_of(__str.data(), __pos, __str.size()); } 859623: # 3124 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept; 859623: # 3139 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_of(const _CharT* __s, size_type __pos = 0) const 859623: noexcept 859623: { 859623: ; 859623: return this->find_first_of(__s, __pos, traits_type::length(__s)); 859623: } 859623: # 3160 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_of(_CharT __c, size_type __pos = 0) const noexcept 859623: { return this->find(__c, __pos); } 859623: # 3176 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_of(const basic_string& __str, size_type __pos = npos) const 859623: noexcept 859623: { return this->find_last_of(__str.data(), __pos, __str.size()); } 859623: # 3213 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept; 859623: # 3228 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_of(const _CharT* __s, size_type __pos = npos) const 859623: noexcept 859623: { 859623: ; 859623: return this->find_last_of(__s, __pos, traits_type::length(__s)); 859623: } 859623: # 3249 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_of(_CharT __c, size_type __pos = npos) const noexcept 859623: { return this->rfind(__c, __pos); } 859623: # 3264 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_not_of(const basic_string& __str, size_type __pos = 0) const 859623: noexcept 859623: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 859623: # 3301 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_not_of(const _CharT* __s, size_type __pos, 859623: size_type __n) const noexcept; 859623: # 3316 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_not_of(const _CharT* __s, size_type __pos = 0) const 859623: noexcept 859623: { 859623: ; 859623: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); 859623: } 859623: # 3335 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_first_not_of(_CharT __c, size_type __pos = 0) const 859623: noexcept; 859623: # 3351 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_not_of(const basic_string& __str, size_type __pos = npos) const 859623: noexcept 859623: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 859623: # 3388 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_not_of(const _CharT* __s, size_type __pos, 859623: size_type __n) const noexcept; 859623: # 3403 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_not_of(const _CharT* __s, size_type __pos = npos) const 859623: noexcept 859623: { 859623: ; 859623: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); 859623: } 859623: # 3422 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: size_type 859623: find_last_not_of(_CharT __c, size_type __pos = npos) const 859623: noexcept; 859623: # 3439 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: basic_string 859623: substr(size_type __pos = 0, size_type __n = npos) const 859623: { return basic_string(*this, 859623: _M_check(__pos, "basic_string::substr"), __n); } 859623: # 3459 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: int 859623: compare(const basic_string& __str) const 859623: { 859623: const size_type __size = this->size(); 859623: const size_type __osize = __str.size(); 859623: const size_type __len = std::min(__size, __osize); 859623: 859623: int __r = traits_type::compare(_M_data(), __str.data(), __len); 859623: if (!__r) 859623: __r = _S_compare(__size, __osize); 859623: return __r; 859623: } 859623: # 3556 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: int 859623: compare(size_type __pos, size_type __n, const basic_string& __str) const 859623: { 859623: _M_check(__pos, "basic_string::compare"); 859623: __n = _M_limit(__pos, __n); 859623: const size_type __osize = __str.size(); 859623: const size_type __len = std::min(__n, __osize); 859623: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); 859623: if (!__r) 859623: __r = _S_compare(__n, __osize); 859623: return __r; 859623: } 859623: # 3593 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: int 859623: compare(size_type __pos1, size_type __n1, const basic_string& __str, 859623: size_type __pos2, size_type __n2 = npos) const 859623: { 859623: _M_check(__pos1, "basic_string::compare"); 859623: __str._M_check(__pos2, "basic_string::compare"); 859623: __n1 = _M_limit(__pos1, __n1); 859623: __n2 = __str._M_limit(__pos2, __n2); 859623: const size_type __len = std::min(__n1, __n2); 859623: int __r = traits_type::compare(_M_data() + __pos1, 859623: __str.data() + __pos2, __len); 859623: if (!__r) 859623: __r = _S_compare(__n1, __n2); 859623: return __r; 859623: } 859623: # 3624 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: int 859623: compare(const _CharT* __s) const noexcept 859623: { 859623: ; 859623: const size_type __size = this->size(); 859623: const size_type __osize = traits_type::length(__s); 859623: const size_type __len = std::min(__size, __osize); 859623: int __r = traits_type::compare(_M_data(), __s, __len); 859623: if (!__r) 859623: __r = _S_compare(__size, __osize); 859623: return __r; 859623: } 859623: # 3659 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: int 859623: compare(size_type __pos, size_type __n1, const _CharT* __s) const 859623: { 859623: ; 859623: _M_check(__pos, "basic_string::compare"); 859623: __n1 = _M_limit(__pos, __n1); 859623: const size_type __osize = traits_type::length(__s); 859623: const size_type __len = std::min(__n1, __osize); 859623: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 859623: if (!__r) 859623: __r = _S_compare(__n1, __osize); 859623: return __r; 859623: } 859623: # 3698 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: int 859623: compare(size_type __pos, size_type __n1, const _CharT* __s, 859623: size_type __n2) const 859623: { 859623: ; 859623: _M_check(__pos, "basic_string::compare"); 859623: __n1 = _M_limit(__pos, __n1); 859623: const size_type __len = std::min(__n1, __n2); 859623: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 859623: if (!__r) 859623: __r = _S_compare(__n1, __n2); 859623: return __r; 859623: } 859623: # 3763 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template friend class basic_stringbuf; 859623: }; 859623: } 859623: 859623: } 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 3812 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: 859623: inline _Str 859623: __str_concat(typename _Str::value_type const* __lhs, 859623: typename _Str::size_type __lhs_len, 859623: typename _Str::value_type const* __rhs, 859623: typename _Str::size_type __rhs_len, 859623: typename _Str::allocator_type const& __a) 859623: { 859623: typedef typename _Str::allocator_type allocator_type; 859623: typedef __gnu_cxx::__alloc_traits _Alloc_traits; 859623: _Str __str(_Alloc_traits::_S_select_on_copy(__a)); 859623: __str.reserve(__lhs_len + __rhs_len); 859623: __str.append(__lhs, __lhs_len); 859623: __str.append(__rhs, __rhs_len); 859623: return __str; 859623: } 859623: # 3837 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { 859623: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 859623: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 859623: __rhs.c_str(), __rhs.size(), 859623: __lhs.get_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT,_Traits,_Alloc> 859623: operator+(const _CharT* __lhs, 859623: const basic_string<_CharT,_Traits,_Alloc>& __rhs) 859623: { 859623: ; 859623: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 859623: return std::__str_concat<_Str>(__lhs, _Traits::length(__lhs), 859623: __rhs.c_str(), __rhs.size(), 859623: __rhs.get_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT,_Traits,_Alloc> 859623: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs) 859623: { 859623: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 859623: return std::__str_concat<_Str>(__builtin_addressof(__lhs), 1, 859623: __rhs.c_str(), __rhs.size(), 859623: __rhs.get_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const _CharT* __rhs) 859623: { 859623: ; 859623: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 859623: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 859623: __rhs, _Traits::length(__rhs), 859623: __lhs.get_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) 859623: { 859623: typedef basic_string<_CharT, _Traits, _Alloc> _Str; 859623: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), 859623: __builtin_addressof(__rhs), 1, 859623: __lhs.get_allocator()); 859623: } 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { return std::move(__lhs.append(__rhs)); } 859623: 859623: template 859623: 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 859623: { return std::move(__rhs.insert(0, __lhs)); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 859623: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 859623: { 859623: 859623: using _Alloc_traits = allocator_traits<_Alloc>; 859623: bool __use_rhs = false; 859623: if (typename _Alloc_traits::is_always_equal{}) 859623: __use_rhs = true; 859623: else if (__lhs.get_allocator() == __rhs.get_allocator()) 859623: __use_rhs = true; 859623: if (__use_rhs) 859623: 859623: { 859623: const auto __size = __lhs.size() + __rhs.size(); 859623: if (__size > __lhs.capacity() && __size <= __rhs.capacity()) 859623: return std::move(__rhs.insert(0, __lhs)); 859623: } 859623: return std::move(__lhs.append(__rhs)); 859623: } 859623: 859623: template 859623: [[__nodiscard__]] [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(const _CharT* __lhs, 859623: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 859623: { return std::move(__rhs.insert(0, __lhs)); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(_CharT __lhs, 859623: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 859623: { return std::move(__rhs.insert(0, 1, __lhs)); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 859623: const _CharT* __rhs) 859623: { return std::move(__lhs.append(__rhs)); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline basic_string<_CharT, _Traits, _Alloc> 859623: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 859623: _CharT __rhs) 859623: { return std::move(__lhs.append(1, __rhs)); } 859623: # 4042 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: noexcept 859623: { 859623: return __lhs.size() == __rhs.size() 859623: && !_Traits::compare(__lhs.data(), __rhs.data(), __lhs.size()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const _CharT* __rhs) 859623: { 859623: return __lhs.size() == _Traits::length(__rhs) 859623: && !_Traits::compare(__lhs.data(), __rhs, __lhs.size()); 859623: } 859623: # 4106 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const _CharT* __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { return __rhs == __lhs; } 859623: # 4120 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: noexcept 859623: { return !(__lhs == __rhs); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator!=(const _CharT* __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { return !(__rhs == __lhs); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const _CharT* __rhs) 859623: { return !(__lhs == __rhs); } 859623: # 4161 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: noexcept 859623: { return __lhs.compare(__rhs) < 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const _CharT* __rhs) 859623: { return __lhs.compare(__rhs) < 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<(const _CharT* __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { return __rhs.compare(__lhs) > 0; } 859623: # 4202 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: noexcept 859623: { return __lhs.compare(__rhs) > 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const _CharT* __rhs) 859623: { return __lhs.compare(__rhs) > 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>(const _CharT* __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { return __rhs.compare(__lhs) < 0; } 859623: # 4243 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: noexcept 859623: { return __lhs.compare(__rhs) <= 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const _CharT* __rhs) 859623: { return __lhs.compare(__rhs) <= 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator<=(const _CharT* __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { return __rhs.compare(__lhs) >= 0; } 859623: # 4284 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: noexcept 859623: { return __lhs.compare(__rhs) >= 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: const _CharT* __rhs) 859623: { return __lhs.compare(__rhs) >= 0; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator>=(const _CharT* __lhs, 859623: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: { return __rhs.compare(__lhs) <= 0; } 859623: # 4326 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: 859623: inline void 859623: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, 859623: basic_string<_CharT, _Traits, _Alloc>& __rhs) 859623: noexcept(noexcept(__lhs.swap(__rhs))) 859623: { __lhs.swap(__rhs); } 859623: # 4347 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: basic_istream<_CharT, _Traits>& 859623: operator>>(basic_istream<_CharT, _Traits>& __is, 859623: basic_string<_CharT, _Traits, _Alloc>& __str); 859623: 859623: template<> 859623: basic_istream& 859623: operator>>(basic_istream& __is, basic_string& __str); 859623: # 4365 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: inline basic_ostream<_CharT, _Traits>& 859623: operator<<(basic_ostream<_CharT, _Traits>& __os, 859623: const basic_string<_CharT, _Traits, _Alloc>& __str) 859623: { 859623: 859623: 859623: return __ostream_insert(__os, __str.data(), __str.size()); 859623: } 859623: # 4388 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: basic_istream<_CharT, _Traits>& 859623: getline(basic_istream<_CharT, _Traits>& __is, 859623: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); 859623: # 4405 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: inline basic_istream<_CharT, _Traits>& 859623: getline(basic_istream<_CharT, _Traits>& __is, 859623: basic_string<_CharT, _Traits, _Alloc>& __str) 859623: { return std::getline(__is, __str, __is.widen('\n')); } 859623: 859623: 859623: 859623: template 859623: inline basic_istream<_CharT, _Traits>& 859623: getline(basic_istream<_CharT, _Traits>&& __is, 859623: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 859623: { return std::getline(__is, __str, __delim); } 859623: 859623: 859623: template 859623: inline basic_istream<_CharT, _Traits>& 859623: getline(basic_istream<_CharT, _Traits>&& __is, 859623: basic_string<_CharT, _Traits, _Alloc>& __str) 859623: { return std::getline(__is, __str); } 859623: 859623: 859623: template<> 859623: basic_istream& 859623: getline(basic_istream& __in, basic_string& __str, 859623: char __delim); 859623: 859623: 859623: template<> 859623: basic_istream& 859623: getline(basic_istream& __in, basic_string& __str, 859623: wchar_t __delim); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ext/string_conversions.h" 1 3 859623: # 45 "/usr/arm-linux-gnueabi/include/c++/15/ext/string_conversions.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 1 3 859623: # 80 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wpedantic" 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/stdlib.h" 1 3 859623: # 26 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 33 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/waitflags.h" 1 3 859623: # 41 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/waitstatus.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: # 56 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/floatn.h" 1 3 859623: # 57 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: typedef struct 859623: { 859623: int quot; 859623: int rem; 859623: } div_t; 859623: 859623: 859623: 859623: typedef struct 859623: { 859623: long int quot; 859623: long int rem; 859623: } ldiv_t; 859623: 859623: 859623: 859623: 859623: 859623: __extension__ typedef struct 859623: { 859623: long long int quot; 859623: long long int rem; 859623: } lldiv_t; 859623: # 98 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern size_t __ctype_get_mb_cur_max (void) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: extern double atof (const char *__nptr) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: extern int atoi (const char *__nptr) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: extern long int atol (const char *__nptr) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: __extension__ extern long long int atoll (const char *__nptr) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: extern double strtod (const char *__restrict __nptr, 859623: char **__restrict __endptr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern float strtof (const char *__restrict __nptr, 859623: char **__restrict __endptr) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: extern long double strtold (const char *__restrict __nptr, 859623: char **__restrict __endptr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 141 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern _Float32 strtof32 (const char *__restrict __nptr, 859623: char **__restrict __endptr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern _Float64 strtof64 (const char *__restrict __nptr, 859623: char **__restrict __endptr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 159 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern _Float32x strtof32x (const char *__restrict __nptr, 859623: char **__restrict __endptr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 177 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern long int strtol (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: extern unsigned long int strtoul (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: __extension__ 859623: extern long long int strtoq (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: __extension__ 859623: extern unsigned long long int strtouq (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: __extension__ 859623: extern long long int strtoll (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: __extension__ 859623: extern unsigned long long int strtoull (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtol") 859623: 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoul") 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: 859623: __extension__ 859623: extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") 859623: 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: __extension__ 859623: extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: 859623: __extension__ 859623: extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") 859623: 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: __extension__ 859623: extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: # 278 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int strfromd (char *__dest, size_t __size, const char *__format, 859623: double __f) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: 859623: extern int strfromf (char *__dest, size_t __size, const char *__format, 859623: float __f) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: 859623: extern int strfroml (char *__dest, size_t __size, const char *__format, 859623: long double __f) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: # 298 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int strfromf32 (char *__dest, size_t __size, const char * __format, 859623: _Float32 __f) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: 859623: 859623: 859623: extern int strfromf64 (char *__dest, size_t __size, const char * __format, 859623: _Float64 __f) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: # 316 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int strfromf32x (char *__dest, size_t __size, const char * __format, 859623: _Float32x __f) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: # 340 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern long int strtol_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base, 859623: locale_t __loc) noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 859623: 859623: extern unsigned long int strtoul_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, 859623: int __base, locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 859623: 859623: __extension__ 859623: extern long long int strtoll_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, int __base, 859623: locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 859623: 859623: __extension__ 859623: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, 859623: int __base, locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 859623: 859623: 859623: 859623: 859623: 859623: extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtol_l") 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 4))); 859623: extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoul_l") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 4))); 859623: __extension__ 859623: extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoll_l") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 4))); 859623: __extension__ 859623: 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") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 4))); 859623: # 415 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern double strtod_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: extern float strtof_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: extern long double strtold_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, 859623: locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: # 436 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern _Float32 strtof32_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, 859623: locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: 859623: extern _Float64 strtof64_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, 859623: locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: # 457 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern _Float32x strtof32x_l (const char *__restrict __nptr, 859623: char **__restrict __endptr, 859623: locale_t __loc) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: # 480 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: __attribute__ ((__leaf__)) atoi (const char *__nptr) noexcept (true) 859623: { 859623: return (int) strtol (__nptr, (char **) __null, 10); 859623: } 859623: extern __inline __attribute__ ((__gnu_inline__)) long int 859623: __attribute__ ((__leaf__)) atol (const char *__nptr) noexcept (true) 859623: { 859623: return strtol (__nptr, (char **) __null, 10); 859623: } 859623: 859623: 859623: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 859623: __attribute__ ((__leaf__)) atoll (const char *__nptr) noexcept (true) 859623: { 859623: return strtoll (__nptr, (char **) __null, 10); 859623: } 859623: # 505 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern char *l64a (long int __n) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: extern long int a64l (const char *__s) 859623: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/types.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/sys/types.h" 3 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: typedef __u_char u_char; 859623: typedef __u_short u_short; 859623: typedef __u_int u_int; 859623: typedef __u_long u_long; 859623: typedef __quad_t quad_t; 859623: typedef __u_quad_t u_quad_t; 859623: typedef __fsid_t fsid_t; 859623: 859623: 859623: typedef __loff_t loff_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __ino64_t ino_t; 859623: 859623: 859623: 859623: 859623: typedef __ino64_t ino64_t; 859623: 859623: 859623: 859623: 859623: typedef __dev_t dev_t; 859623: 859623: 859623: 859623: 859623: typedef __gid_t gid_t; 859623: 859623: 859623: 859623: 859623: typedef __mode_t mode_t; 859623: 859623: 859623: 859623: 859623: typedef __nlink_t nlink_t; 859623: 859623: 859623: 859623: 859623: typedef __uid_t uid_t; 859623: # 97 "/usr/arm-linux-gnueabi/include/sys/types.h" 3 859623: typedef __pid_t pid_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef __id_t id_t; 859623: # 114 "/usr/arm-linux-gnueabi/include/sys/types.h" 3 859623: typedef __daddr_t daddr_t; 859623: typedef __caddr_t caddr_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef __key_t key_t; 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/clock_t.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __clock_t clock_t; 859623: # 127 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/clockid_t.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __clockid_t clockid_t; 859623: # 129 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/time_t.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __time64_t time_t; 859623: # 130 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/timer_t.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __timer_t timer_t; 859623: # 131 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: 859623: 859623: 859623: typedef __useconds_t useconds_t; 859623: 859623: 859623: 859623: typedef __suseconds_t suseconds_t; 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 145 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: 859623: 859623: 859623: typedef unsigned long int ulong; 859623: typedef unsigned short int ushort; 859623: typedef unsigned int uint; 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdint-intn.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/stdint-intn.h" 3 859623: typedef __int8_t int8_t; 859623: typedef __int16_t int16_t; 859623: typedef __int32_t int32_t; 859623: typedef __int64_t int64_t; 859623: # 156 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: 859623: 859623: typedef __uint8_t u_int8_t; 859623: typedef __uint16_t u_int16_t; 859623: typedef __uint32_t u_int32_t; 859623: typedef __uint64_t u_int64_t; 859623: 859623: 859623: typedef int register_t __attribute__ ((__mode__ (__word__))); 859623: # 176 "/usr/arm-linux-gnueabi/include/sys/types.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/endian.h" 1 3 859623: # 35 "/usr/arm-linux-gnueabi/include/endian.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/byteswap.h" 1 3 859623: # 33 "/usr/arm-linux-gnueabi/include/bits/byteswap.h" 3 859623: static __inline __uint16_t 859623: __bswap_16 (__uint16_t __bsx) 859623: { 859623: 859623: return __builtin_bswap16 (__bsx); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: static __inline __uint32_t 859623: __bswap_32 (__uint32_t __bsx) 859623: { 859623: 859623: return __builtin_bswap32 (__bsx); 859623: 859623: 859623: 859623: } 859623: # 69 "/usr/arm-linux-gnueabi/include/bits/byteswap.h" 3 859623: __extension__ static __inline __uint64_t 859623: __bswap_64 (__uint64_t __bsx) 859623: { 859623: 859623: return __builtin_bswap64 (__bsx); 859623: 859623: 859623: 859623: } 859623: # 36 "/usr/arm-linux-gnueabi/include/endian.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/uintn-identity.h" 1 3 859623: # 32 "/usr/arm-linux-gnueabi/include/bits/uintn-identity.h" 3 859623: static __inline __uint16_t 859623: __uint16_identity (__uint16_t __x) 859623: { 859623: return __x; 859623: } 859623: 859623: static __inline __uint32_t 859623: __uint32_identity (__uint32_t __x) 859623: { 859623: return __x; 859623: } 859623: 859623: static __inline __uint64_t 859623: __uint64_identity (__uint64_t __x) 859623: { 859623: return __x; 859623: } 859623: # 37 "/usr/arm-linux-gnueabi/include/endian.h" 2 3 859623: # 177 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/select.h" 1 3 859623: # 30 "/usr/arm-linux-gnueabi/include/sys/select.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/select.h" 1 3 859623: # 31 "/usr/arm-linux-gnueabi/include/sys/select.h" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/sigset_t.h" 1 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/__sigset_t.h" 1 3 859623: 859623: 859623: 859623: 859623: typedef struct 859623: { 859623: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 859623: } __sigset_t; 859623: # 5 "/usr/arm-linux-gnueabi/include/bits/types/sigset_t.h" 2 3 859623: 859623: 859623: typedef __sigset_t sigset_t; 859623: # 34 "/usr/arm-linux-gnueabi/include/sys/select.h" 2 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_timeval.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct timeval 859623: { 859623: 859623: __time64_t tv_sec; 859623: __suseconds64_t tv_usec; 859623: 859623: 859623: 859623: 859623: }; 859623: # 38 "/usr/arm-linux-gnueabi/include/sys/select.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_timespec.h" 1 3 859623: # 11 "/usr/arm-linux-gnueabi/include/bits/types/struct_timespec.h" 3 859623: struct timespec 859623: { 859623: 859623: __time64_t tv_sec; 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/types/struct_timespec.h" 3 859623: long int tv_nsec; 859623: int: 32; 859623: 859623: 859623: }; 859623: # 40 "/usr/arm-linux-gnueabi/include/sys/select.h" 2 3 859623: # 49 "/usr/arm-linux-gnueabi/include/sys/select.h" 3 859623: typedef long int __fd_mask; 859623: # 59 "/usr/arm-linux-gnueabi/include/sys/select.h" 3 859623: typedef struct 859623: { 859623: 859623: 859623: 859623: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 859623: 859623: 859623: 859623: 859623: 859623: } fd_set; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __fd_mask fd_mask; 859623: # 91 "/usr/arm-linux-gnueabi/include/sys/select.h" 3 859623: extern "C" { 859623: # 108 "/usr/arm-linux-gnueabi/include/sys/select.h" 3 859623: extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) __asm__ ("" "__select64") 859623: 859623: 859623: 859623: 859623: ; 859623: # 134 "/usr/arm-linux-gnueabi/include/sys/select.h" 3 859623: 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") 859623: 859623: 859623: 859623: 859623: 859623: ; 859623: # 150 "/usr/arm-linux-gnueabi/include/sys/select.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/select2.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/select2.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/select-decl.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/select-decl.h" 3 859623: extern long int __fdelt_chk (long int __d); 859623: extern long int __fdelt_warn (long int __d) 859623: __attribute__((__warning__ ("bit outside of fd_set selected"))); 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/select2.h" 2 3 859623: # 151 "/usr/arm-linux-gnueabi/include/sys/select.h" 2 3 859623: 859623: 859623: } 859623: # 180 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: typedef __blksize_t blksize_t; 859623: # 205 "/usr/arm-linux-gnueabi/include/sys/types.h" 3 859623: typedef __blkcnt64_t blkcnt_t; 859623: 859623: 859623: 859623: typedef __fsblkcnt64_t fsblkcnt_t; 859623: 859623: 859623: 859623: typedef __fsfilcnt64_t fsfilcnt_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef __blkcnt64_t blkcnt64_t; 859623: typedef __fsblkcnt64_t fsblkcnt64_t; 859623: typedef __fsfilcnt64_t fsfilcnt64_t; 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/pthreadtypes.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/pthreadtypes.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 1 3 859623: # 44 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/pthreadtypes-arch.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/pthreadtypes-arch.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/pthreadtypes-arch.h" 2 3 859623: # 45 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/atomic_wide_counter.h" 1 3 859623: # 25 "/usr/arm-linux-gnueabi/include/bits/atomic_wide_counter.h" 3 859623: typedef union 859623: { 859623: __extension__ unsigned long long int __value64; 859623: struct 859623: { 859623: unsigned int __low; 859623: unsigned int __high; 859623: } __value32; 859623: } __atomic_wide_counter; 859623: # 47 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 2 3 859623: 859623: 859623: 859623: 859623: typedef struct __pthread_internal_list 859623: { 859623: struct __pthread_internal_list *__prev; 859623: struct __pthread_internal_list *__next; 859623: } __pthread_list_t; 859623: 859623: typedef struct __pthread_internal_slist 859623: { 859623: struct __pthread_internal_slist *__next; 859623: } __pthread_slist_t; 859623: # 76 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/struct_mutex.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/struct_mutex.h" 3 859623: struct __pthread_mutex_s 859623: { 859623: int __lock ; 859623: unsigned int __count; 859623: int __owner; 859623: # 58 "/usr/arm-linux-gnueabi/include/bits/struct_mutex.h" 3 859623: int __kind; 859623: 859623: unsigned int __nusers; 859623: 859623: 859623: 859623: 859623: 859623: 859623: __extension__ union 859623: { 859623: int __spins; 859623: __pthread_slist_t __list; 859623: }; 859623: 859623: 859623: }; 859623: # 77 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 2 3 859623: # 89 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/struct_rwlock.h" 1 3 859623: # 29 "/usr/arm-linux-gnueabi/include/bits/struct_rwlock.h" 3 859623: struct __pthread_rwlock_arch_t 859623: { 859623: unsigned int __readers; 859623: unsigned int __writers; 859623: unsigned int __wrphase_futex; 859623: unsigned int __writers_futex; 859623: unsigned int __pad3; 859623: unsigned int __pad4; 859623: # 45 "/usr/arm-linux-gnueabi/include/bits/struct_rwlock.h" 3 859623: unsigned char __flags; 859623: unsigned char __shared; 859623: unsigned char __pad1; 859623: unsigned char __pad2; 859623: 859623: int __cur_writer; 859623: }; 859623: # 90 "/usr/arm-linux-gnueabi/include/bits/thread-shared-types.h" 2 3 859623: 859623: 859623: 859623: 859623: struct __pthread_cond_s 859623: { 859623: __atomic_wide_counter __wseq; 859623: __atomic_wide_counter __g1_start; 859623: unsigned int __g_size[2] ; 859623: unsigned int __g1_orig_size; 859623: unsigned int __wrefs; 859623: unsigned int __g_signals[2]; 859623: unsigned int __unused_initialized_1; 859623: unsigned int __unused_initialized_2; 859623: }; 859623: 859623: typedef unsigned int __tss_t; 859623: typedef unsigned long int __thrd_t; 859623: 859623: typedef struct 859623: { 859623: int __data ; 859623: } __once_flag; 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/pthreadtypes.h" 2 3 859623: 859623: 859623: 859623: typedef unsigned long int pthread_t; 859623: 859623: 859623: 859623: 859623: typedef union 859623: { 859623: char __size[4]; 859623: int __align; 859623: } pthread_mutexattr_t; 859623: 859623: 859623: 859623: 859623: typedef union 859623: { 859623: char __size[4]; 859623: int __align; 859623: } pthread_condattr_t; 859623: 859623: 859623: 859623: typedef unsigned int pthread_key_t; 859623: 859623: 859623: 859623: typedef int pthread_once_t; 859623: 859623: 859623: union pthread_attr_t 859623: { 859623: char __size[36]; 859623: long int __align; 859623: }; 859623: 859623: typedef union pthread_attr_t pthread_attr_t; 859623: 859623: 859623: 859623: 859623: typedef union 859623: { 859623: struct __pthread_mutex_s __data; 859623: char __size[24]; 859623: long int __align; 859623: } pthread_mutex_t; 859623: 859623: 859623: typedef union 859623: { 859623: struct __pthread_cond_s __data; 859623: char __size[48]; 859623: __extension__ long long int __align; 859623: } pthread_cond_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef union 859623: { 859623: struct __pthread_rwlock_arch_t __data; 859623: char __size[32]; 859623: long int __align; 859623: } pthread_rwlock_t; 859623: 859623: typedef union 859623: { 859623: char __size[8]; 859623: long int __align; 859623: } pthread_rwlockattr_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef volatile int pthread_spinlock_t; 859623: 859623: 859623: 859623: 859623: typedef union 859623: { 859623: char __size[20]; 859623: long int __align; 859623: } pthread_barrier_t; 859623: 859623: typedef union 859623: { 859623: char __size[4]; 859623: int __align; 859623: } pthread_barrierattr_t; 859623: # 228 "/usr/arm-linux-gnueabi/include/sys/types.h" 2 3 859623: 859623: 859623: } 859623: # 515 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern long int random (void) noexcept (true); 859623: 859623: 859623: extern void srandom (unsigned int __seed) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern char *initstate (unsigned int __seed, char *__statebuf, 859623: size_t __statelen) noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: extern char *setstate (char *__statebuf) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct random_data 859623: { 859623: int32_t *fptr; 859623: int32_t *rptr; 859623: int32_t *state; 859623: int rand_type; 859623: int rand_deg; 859623: int rand_sep; 859623: int32_t *end_ptr; 859623: }; 859623: 859623: extern int random_r (struct random_data *__restrict __buf, 859623: int32_t *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 859623: size_t __statelen, 859623: struct random_data *__restrict __buf) 859623: noexcept (true) __attribute__ ((__nonnull__ (2, 4))); 859623: 859623: extern int setstate_r (char *__restrict __statebuf, 859623: struct random_data *__restrict __buf) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: 859623: extern int rand (void) noexcept (true); 859623: 859623: extern void srand (unsigned int __seed) noexcept (true); 859623: 859623: 859623: 859623: extern int rand_r (unsigned int *__seed) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern double drand48 (void) noexcept (true); 859623: extern double erand48 (unsigned short int __xsubi[3]) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern long int lrand48 (void) noexcept (true); 859623: extern long int nrand48 (unsigned short int __xsubi[3]) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern long int mrand48 (void) noexcept (true); 859623: extern long int jrand48 (unsigned short int __xsubi[3]) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern void srand48 (long int __seedval) noexcept (true); 859623: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: extern void lcong48 (unsigned short int __param[7]) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: struct drand48_data 859623: { 859623: unsigned short int __x[3]; 859623: unsigned short int __old_x[3]; 859623: unsigned short int __c; 859623: unsigned short int __init; 859623: __extension__ unsigned long long int __a; 859623: 859623: }; 859623: 859623: 859623: extern int drand48_r (struct drand48_data *__restrict __buffer, 859623: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: extern int erand48_r (unsigned short int __xsubi[3], 859623: struct drand48_data *__restrict __buffer, 859623: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int lrand48_r (struct drand48_data *__restrict __buffer, 859623: long int *__restrict __result) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: extern int nrand48_r (unsigned short int __xsubi[3], 859623: struct drand48_data *__restrict __buffer, 859623: long int *__restrict __result) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int mrand48_r (struct drand48_data *__restrict __buffer, 859623: long int *__restrict __result) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: extern int jrand48_r (unsigned short int __xsubi[3], 859623: struct drand48_data *__restrict __buffer, 859623: long int *__restrict __result) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: extern int seed48_r (unsigned short int __seed16v[3], 859623: struct drand48_data *__buffer) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: extern int lcong48_r (unsigned short int __param[7], 859623: struct drand48_data *__buffer) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern __uint32_t arc4random (void) 859623: noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: extern void arc4random_buf (void *__buf, size_t __size) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) 859623: noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 859623: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: extern void *calloc (size_t __nmemb, size_t __size) 859623: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void *realloc (void *__ptr, size_t __size) 859623: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); 859623: 859623: 859623: extern void free (void *__ptr) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 859623: noexcept (true) __attribute__ ((__warn_unused_result__)) 859623: __attribute__ ((__alloc_size__ (2, 3))) 859623: __attribute__ ((__malloc__ (__builtin_free, 1))); 859623: 859623: 859623: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 859623: noexcept (true) __attribute__ ((__malloc__ (reallocarray, 1))); 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/alloca.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/alloca.h" 3 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 25 "/usr/arm-linux-gnueabi/include/alloca.h" 2 3 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: extern void *alloca (size_t __size) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 707 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 859623: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern void *aligned_alloc (size_t __alignment, size_t __size) 859623: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) 859623: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: extern void abort (void) noexcept (true) __attribute__ ((__noreturn__)) __attribute__ ((__cold__)); 859623: 859623: 859623: 859623: extern int atexit (void (*__func) (void)) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern "C++" int at_quick_exit (void (*__func) (void)) 859623: noexcept (true) __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 859623: # 749 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: extern void exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 859623: 859623: 859623: 859623: 859623: 859623: extern void quick_exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 859623: 859623: 859623: 859623: 859623: 859623: extern void _Exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 859623: 859623: 859623: 859623: 859623: extern char *getenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern char *secure_getenv (const char *__name) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int putenv (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: extern int setenv (const char *__name, const char *__value, int __replace) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: extern int unsetenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int clearenv (void) noexcept (true); 859623: # 814 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern char *mktemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 830 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") 859623: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: # 852 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64") 859623: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: extern int mkstemps64 (char *__template, int __suffixlen) 859623: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: # 870 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern char *mkdtemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: # 884 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") 859623: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: # 905 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64") 859623: 859623: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 859623: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: # 923 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: extern char *canonicalize_file_name (const char *__name) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) 859623: __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); 859623: # 940 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern char *realpath (const char *__restrict __name, 859623: char *__restrict __resolved) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef int (*__compar_fn_t) (const void *, const void *); 859623: 859623: 859623: typedef __compar_fn_t comparison_fn_t; 859623: 859623: 859623: 859623: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 859623: 859623: 859623: 859623: 859623: extern void *bsearch (const void *__key, const void *__base, 859623: size_t __nmemb, size_t __size, __compar_fn_t __compar) 859623: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdlib-bsearch.h" 1 3 859623: # 19 "/usr/arm-linux-gnueabi/include/bits/stdlib-bsearch.h" 3 859623: extern __inline __attribute__ ((__gnu_inline__)) void * 859623: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 859623: __compar_fn_t __compar) 859623: { 859623: const void *__p; 859623: int __comparison; 859623: 859623: while (__nmemb) 859623: { 859623: __p = (const void *) (((const char *) __base) + ((__nmemb >> 1) * __size)); 859623: __comparison = (*__compar) (__key, __p); 859623: if (__comparison == 0) 859623: { 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wcast-qual" 859623: 859623: return (void *) __p; 859623: 859623: #pragma GCC diagnostic pop 859623: 859623: } 859623: if (__comparison > 0) 859623: { 859623: __base = ((const char *) __p) + __size; 859623: --__nmemb; 859623: } 859623: __nmemb >>= 1; 859623: } 859623: 859623: return __null; 859623: } 859623: # 966 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: 859623: 859623: extern void qsort (void *__base, size_t __nmemb, size_t __size, 859623: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 859623: 859623: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 859623: __compar_d_fn_t __compar, void *__arg) 859623: __attribute__ ((__nonnull__ (1, 4))); 859623: 859623: 859623: 859623: 859623: extern int abs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 859623: extern long int labs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: __extension__ extern long long int llabs (long long int __x) 859623: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern div_t div (int __numer, int __denom) 859623: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 859623: extern ldiv_t ldiv (long int __numer, long int __denom) 859623: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: __extension__ extern lldiv_t lldiv (long long int __numer, 859623: long long int __denom) 859623: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 859623: # 1012 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 859623: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 859623: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern char *gcvt (double __value, int __ndigit, char *__buf) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern char *qecvt (long double __value, int __ndigit, 859623: int *__restrict __decpt, int *__restrict __sign) 859623: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 859623: extern char *qfcvt (long double __value, int __ndigit, 859623: int *__restrict __decpt, int *__restrict __sign) 859623: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 859623: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 859623: int *__restrict __sign, char *__restrict __buf, 859623: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 859623: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 859623: int *__restrict __sign, char *__restrict __buf, 859623: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 859623: 859623: extern int qecvt_r (long double __value, int __ndigit, 859623: int *__restrict __decpt, int *__restrict __sign, 859623: char *__restrict __buf, size_t __len) 859623: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 859623: extern int qfcvt_r (long double __value, int __ndigit, 859623: int *__restrict __decpt, int *__restrict __sign, 859623: char *__restrict __buf, size_t __len) 859623: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 859623: 859623: 859623: 859623: 859623: 859623: extern int mblen (const char *__s, size_t __n) noexcept (true); 859623: 859623: 859623: extern int mbtowc (wchar_t *__restrict __pwc, 859623: const char *__restrict __s, size_t __n) noexcept (true); 859623: 859623: 859623: extern int wctomb (char *__s, wchar_t __wchar) noexcept (true); 859623: 859623: 859623: 859623: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 859623: const char *__restrict __s, size_t __n) noexcept (true) 859623: __attribute__ ((__access__ (__read_only__, 2))); 859623: 859623: extern size_t wcstombs (char *__restrict __s, 859623: const wchar_t *__restrict __pwcs, size_t __n) 859623: noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1, 3))) 859623: __attribute__ ((__access__ (__read_only__, 2))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int rpmatch (const char *__response) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 859623: # 1099 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: extern int getsubopt (char **__restrict __optionp, 859623: char *const *__restrict __tokens, 859623: char **__restrict __valuep) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int grantpt (int __fd) noexcept (true); 859623: 859623: 859623: 859623: extern int unlockpt (int __fd) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern char *ptsname (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 859623: 859623: 859623: extern int getpt (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int getloadavg (double __loadavg[], int __nelem) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 1155 "/usr/arm-linux-gnueabi/include/stdlib.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdlib-float.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/stdlib-float.h" 3 859623: extern __inline __attribute__ ((__gnu_inline__)) double 859623: __attribute__ ((__leaf__)) atof (const char *__nptr) noexcept (true) 859623: { 859623: return strtod (__nptr, (char **) __null); 859623: } 859623: # 1156 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdlib.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/stdlib.h" 3 859623: extern char *__realpath_chk (const char *__restrict __name, 859623: char *__restrict __resolved, 859623: size_t __resolvedlen) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) noexcept (true) __asm__ ("" "realpath") 859623: 859623: __attribute__ ((__warn_unused_result__)); 859623: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) noexcept (true) __asm__ ("" "__realpath_chk") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) 859623: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 859623: ; 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 859623: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char * __restrict __resolved) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__resolved, 2 > 1); 859623: 859623: if (__sz == (size_t) -1) 859623: return __realpath_alias (__name, __resolved); 859623: 859623: 859623: 859623: 859623: 859623: return __realpath_chk (__name, __resolved, __sz); 859623: } 859623: 859623: 859623: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 859623: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) 859623: __attribute__ ((__access__ (__write_only__, 2, 3))); 859623: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ptsname_r") 859623: 859623: __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 859623: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ptsname_r_chk") 859623: 859623: 859623: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 859623: ; 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 859623: __attribute__ ((__leaf__)) ptsname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: { 859623: 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)))) 859623: 859623: ; 859623: } 859623: 859623: 859623: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 859623: noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: extern int __wctomb_alias (char *__s, wchar_t __wchar) noexcept (true) __asm__ ("" "wctomb") 859623: __attribute__ ((__warn_unused_result__)); 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 859623: __attribute__ ((__leaf__)) wctomb (char * __s, wchar_t __wchar) noexcept (true) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 859623: && 16 > __builtin_object_size (__s, 2 > 1)) 859623: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); 859623: return __wctomb_alias (__s, __wchar); 859623: } 859623: 859623: 859623: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 859623: const char *__restrict __src, 859623: size_t __len, size_t __dstlen) noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 859623: extern size_t __mbstowcs_nulldst (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 859623: 859623: 859623: 859623: __attribute__ ((__access__ (__read_only__, 2))); 859623: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 859623: 859623: 859623: 859623: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 859623: 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") 859623: 859623: 859623: 859623: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 859623: ; 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) mbstowcs (wchar_t * __restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) 859623: 859623: 859623: 859623: 859623: 859623: { 859623: if (__builtin_constant_p (__dst == __null) && __dst == __null) 859623: return __mbstowcs_nulldst (__dst, __src, __len); 859623: else 859623: 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))))) 859623: ; 859623: } 859623: 859623: extern size_t __wcstombs_chk (char *__restrict __dst, 859623: const wchar_t *__restrict __src, 859623: size_t __len, size_t __dstlen) noexcept (true) 859623: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 859623: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "wcstombs") 859623: 859623: 859623: 859623: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 859623: 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") 859623: 859623: 859623: 859623: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 859623: __attribute__ ((__leaf__)) wcstombs (char * __restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) 859623: 859623: 859623: { 859623: 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)))) 859623: 859623: ; 859623: } 859623: # 1160 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/floatn.h" 1 3 859623: # 1163 "/usr/arm-linux-gnueabi/include/stdlib.h" 2 3 859623: 859623: 859623: 859623: 859623: } 859623: # 84 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 2 3 859623: 859623: 859623: # 85 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 3 859623: #pragma GCC diagnostic pop 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_abs.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_abs.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wpedantic" 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_abs.h" 3 859623: extern "C++" 859623: { 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: using ::abs; 859623: 859623: 859623: inline long 859623: abs(long __i) { return __builtin_labs(__i); } 859623: 859623: 859623: 859623: inline long long 859623: abs(long long __x) { return __builtin_llabs (__x); } 859623: # 76 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_abs.h" 3 859623: inline constexpr double 859623: abs(double __x) 859623: { return __builtin_fabs(__x); } 859623: 859623: inline constexpr float 859623: abs(float __x) 859623: { return __builtin_fabsf(__x); } 859623: 859623: inline constexpr long double 859623: abs(long double __x) 859623: { return __builtin_fabsl(__x); } 859623: # 156 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_abs.h" 3 859623: 859623: } 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 88 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 2 3 859623: # 131 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 3 859623: extern "C++" 859623: { 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: using ::div_t; 859623: using ::ldiv_t; 859623: 859623: using ::abort; 859623: 859623: 859623: 859623: using ::atexit; 859623: 859623: 859623: using ::at_quick_exit; 859623: 859623: 859623: using ::atof; 859623: using ::atoi; 859623: using ::atol; 859623: using ::bsearch; 859623: using ::calloc; 859623: using ::div; 859623: using ::exit; 859623: using ::free; 859623: using ::getenv; 859623: using ::labs; 859623: using ::ldiv; 859623: using ::malloc; 859623: 859623: using ::mblen; 859623: using ::mbstowcs; 859623: using ::mbtowc; 859623: 859623: using ::qsort; 859623: 859623: 859623: using ::quick_exit; 859623: 859623: 859623: using ::rand; 859623: using ::realloc; 859623: using ::srand; 859623: using ::strtod; 859623: using ::strtol; 859623: using ::strtoul; 859623: using ::system; 859623: 859623: using ::wcstombs; 859623: using ::wctomb; 859623: 859623: 859623: 859623: inline ldiv_t 859623: div(long __i, long __j) noexcept { return ldiv(__i, __j); } 859623: 859623: 859623: 859623: 859623: } 859623: # 205 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 3 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: using ::lldiv_t; 859623: 859623: 859623: 859623: 859623: 859623: using ::_Exit; 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: using ::llabs; 859623: 859623: inline lldiv_t 859623: div(long long __n, long long __d) 859623: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 859623: 859623: using ::lldiv; 859623: #pragma GCC diagnostic pop 859623: # 240 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 3 859623: using ::atoll; 859623: using ::strtoll; 859623: using ::strtoull; 859623: 859623: using ::strtof; 859623: using ::strtold; 859623: 859623: 859623: } 859623: 859623: namespace std 859623: { 859623: 859623: using ::__gnu_cxx::lldiv_t; 859623: 859623: using ::__gnu_cxx::_Exit; 859623: 859623: using ::__gnu_cxx::llabs; 859623: using ::__gnu_cxx::div; 859623: using ::__gnu_cxx::lldiv; 859623: 859623: using ::__gnu_cxx::atoll; 859623: using ::__gnu_cxx::strtof; 859623: using ::__gnu_cxx::strtoll; 859623: using ::__gnu_cxx::strtoull; 859623: using ::__gnu_cxx::strtold; 859623: } 859623: # 284 "/usr/arm-linux-gnueabi/include/c++/15/cstdlib" 3 859623: } 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/ext/string_conversions.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/cstdio" 1 3 859623: # 98 "/usr/arm-linux-gnueabi/include/c++/15/cstdio" 3 859623: namespace std 859623: { 859623: using ::FILE; 859623: using ::fpos_t; 859623: 859623: using ::clearerr; 859623: using ::fclose; 859623: using ::feof; 859623: using ::ferror; 859623: using ::fflush; 859623: using ::fgetc; 859623: using ::fgetpos; 859623: using ::fgets; 859623: using ::fopen; 859623: using ::fprintf; 859623: using ::fputc; 859623: using ::fputs; 859623: using ::fread; 859623: using ::freopen; 859623: using ::fscanf; 859623: using ::fseek; 859623: using ::fsetpos; 859623: using ::ftell; 859623: using ::fwrite; 859623: using ::getc; 859623: using ::getchar; 859623: 859623: 859623: using ::gets; 859623: 859623: using ::perror; 859623: using ::printf; 859623: using ::putc; 859623: using ::putchar; 859623: using ::puts; 859623: using ::remove; 859623: using ::rename; 859623: using ::rewind; 859623: using ::scanf; 859623: using ::setbuf; 859623: using ::setvbuf; 859623: using ::sprintf; 859623: using ::sscanf; 859623: using ::tmpfile; 859623: 859623: using ::tmpnam; 859623: 859623: using ::ungetc; 859623: using ::vfprintf; 859623: using ::vprintf; 859623: using ::vsprintf; 859623: } 859623: # 159 "/usr/arm-linux-gnueabi/include/c++/15/cstdio" 3 859623: namespace __gnu_cxx 859623: { 859623: # 177 "/usr/arm-linux-gnueabi/include/c++/15/cstdio" 3 859623: using ::snprintf; 859623: using ::vfscanf; 859623: using ::vscanf; 859623: using ::vsnprintf; 859623: using ::vsscanf; 859623: 859623: } 859623: 859623: namespace std 859623: { 859623: using ::__gnu_cxx::snprintf; 859623: using ::__gnu_cxx::vfscanf; 859623: using ::__gnu_cxx::vscanf; 859623: using ::__gnu_cxx::vsnprintf; 859623: using ::__gnu_cxx::vsscanf; 859623: } 859623: # 48 "/usr/arm-linux-gnueabi/include/c++/15/ext/string_conversions.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/cerrno" 1 3 859623: # 47 "/usr/arm-linux-gnueabi/include/c++/15/cerrno" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/errno.h" 1 3 859623: # 28 "/usr/arm-linux-gnueabi/include/errno.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/errno.h" 1 3 859623: # 26 "/usr/arm-linux-gnueabi/include/bits/errno.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/linux/errno.h" 1 3 859623: # 1 "/usr/arm-linux-gnueabi/include/asm/errno.h" 1 3 859623: # 1 "/usr/arm-linux-gnueabi/include/asm-generic/errno.h" 1 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm-generic/errno-base.h" 1 3 859623: # 6 "/usr/arm-linux-gnueabi/include/asm-generic/errno.h" 2 3 859623: # 2 "/usr/arm-linux-gnueabi/include/asm/errno.h" 2 3 859623: # 2 "/usr/arm-linux-gnueabi/include/linux/errno.h" 2 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/errno.h" 2 3 859623: # 29 "/usr/arm-linux-gnueabi/include/errno.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: extern int *__errno_location (void) noexcept (true) __attribute__ ((__const__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern char *program_invocation_name; 859623: extern char *program_invocation_short_name; 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/error_t.h" 1 3 859623: # 22 "/usr/arm-linux-gnueabi/include/bits/types/error_t.h" 3 859623: typedef int error_t; 859623: # 49 "/usr/arm-linux-gnueabi/include/errno.h" 2 3 859623: 859623: 859623: 859623: } 859623: # 48 "/usr/arm-linux-gnueabi/include/c++/15/cerrno" 2 3 859623: # 49 "/usr/arm-linux-gnueabi/include/c++/15/ext/string_conversions.h" 2 3 859623: 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: _Ret 859623: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), 859623: const char* __name, const _CharT* __str, std::size_t* __idx, 859623: _Base... __base) 859623: { 859623: _Ret __ret; 859623: 859623: _CharT* __endptr; 859623: 859623: struct _Save_errno { 859623: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } 859623: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } 859623: int _M_errno; 859623: } const __save_errno; 859623: 859623: struct _Range_chk { 859623: static bool 859623: _S_chk(_TRet, std::false_type) { return false; } 859623: 859623: static bool 859623: _S_chk(_TRet __val, std::true_type) 859623: { 859623: return __val < _TRet(__numeric_traits::__min) 859623: || __val > _TRet(__numeric_traits::__max); 859623: } 859623: }; 859623: 859623: const _TRet __tmp = __convf(__str, &__endptr, __base...); 859623: 859623: if (__endptr == __str) 859623: std::__throw_invalid_argument(__name); 859623: else if ((*__errno_location ()) == 34 859623: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) 859623: std::__throw_out_of_range(__name); 859623: else 859623: __ret = __tmp; 859623: 859623: if (__idx) 859623: *__idx = __endptr - __str; 859623: 859623: return __ret; 859623: } 859623: 859623: 859623: template 859623: _String 859623: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, 859623: __builtin_va_list), std::size_t __n, 859623: const _CharT* __fmt, ...) 859623: { 859623: 859623: 859623: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 859623: * __n)); 859623: 859623: __builtin_va_list __args; 859623: __builtin_va_start(__args, __fmt); 859623: 859623: const int __len = __convf(__s, __n, __fmt, __args); 859623: 859623: __builtin_va_end(__args); 859623: 859623: return _String(__s, __s + __len); 859623: } 859623: 859623: 859623: } 859623: # 4445 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/charconv.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/charconv.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: namespace __detail 859623: { 859623: # 55 "/usr/arm-linux-gnueabi/include/c++/15/bits/charconv.h" 3 859623: template 859623: unsigned 859623: __to_chars_len(_Tp __value, int __base = 10) noexcept 859623: { 859623: 859623: 859623: 859623: 859623: unsigned __n = 1; 859623: const unsigned __b2 = __base * __base; 859623: const unsigned __b3 = __b2 * __base; 859623: const unsigned long __b4 = __b3 * __base; 859623: for (;;) 859623: { 859623: if (__value < (unsigned)__base) return __n; 859623: if (__value < __b2) return __n + 1; 859623: if (__value < __b3) return __n + 2; 859623: if (__value < __b4) return __n + 3; 859623: __value /= __b4; 859623: __n += 4; 859623: } 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: void 859623: __to_chars_10_impl(char* __first, unsigned __len, _Tp __val) noexcept 859623: { 859623: 859623: 859623: 859623: 859623: constexpr char __digits[201] = 859623: "0001020304050607080910111213141516171819" 859623: "2021222324252627282930313233343536373839" 859623: "4041424344454647484950515253545556575859" 859623: "6061626364656667686970717273747576777879" 859623: "8081828384858687888990919293949596979899"; 859623: unsigned __pos = __len - 1; 859623: while (__val >= 100) 859623: { 859623: auto const __num = (__val % 100) * 2; 859623: __val /= 100; 859623: __first[__pos] = __digits[__num + 1]; 859623: __first[__pos - 1] = __digits[__num]; 859623: __pos -= 2; 859623: } 859623: if (__val >= 10) 859623: { 859623: auto const __num = __val * 2; 859623: __first[1] = __digits[__num + 1]; 859623: __first[0] = __digits[__num]; 859623: } 859623: else 859623: __first[0] = '0' + __val; 859623: } 859623: 859623: } 859623: 859623: } 859623: # 4446 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: namespace __cxx11 { 859623: 859623: 859623: inline int 859623: stoi(const string& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), 859623: __idx, __base); } 859623: 859623: inline long 859623: stol(const string& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), 859623: __idx, __base); } 859623: 859623: inline unsigned long 859623: stoul(const string& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), 859623: __idx, __base); } 859623: 859623: 859623: inline long long 859623: stoll(const string& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), 859623: __idx, __base); } 859623: 859623: inline unsigned long long 859623: stoull(const string& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), 859623: __idx, __base); } 859623: # 4488 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: inline double 859623: stod(const string& __str, size_t* __idx = 0) 859623: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } 859623: 859623: 859623: 859623: inline float 859623: stof(const string& __str, size_t* __idx = 0) 859623: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } 859623: # 4516 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: inline long double 859623: stold(const string& __str, size_t* __idx = 0) 859623: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } 859623: # 4528 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(int __val) 859623: 859623: noexcept 859623: 859623: { 859623: const bool __neg = __val < 0; 859623: const unsigned __uval = __neg ? (unsigned)~__val + 1u : __val; 859623: const auto __len = __detail::__to_chars_len(__uval); 859623: string __str; 859623: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 859623: __p[0] = '-'; 859623: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 859623: return __n; 859623: }); 859623: return __str; 859623: } 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(unsigned __val) 859623: 859623: noexcept 859623: 859623: { 859623: const auto __len = __detail::__to_chars_len(__val); 859623: string __str; 859623: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 859623: __detail::__to_chars_10_impl(__p, __n, __val); 859623: return __n; 859623: }); 859623: return __str; 859623: } 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(long __val) 859623: 859623: noexcept 859623: 859623: { 859623: const bool __neg = __val < 0; 859623: const unsigned long __uval = __neg ? (unsigned long)~__val + 1ul : __val; 859623: const auto __len = __detail::__to_chars_len(__uval); 859623: string __str; 859623: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 859623: __p[0] = '-'; 859623: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 859623: return __n; 859623: }); 859623: return __str; 859623: } 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(unsigned long __val) 859623: 859623: noexcept 859623: 859623: { 859623: const auto __len = __detail::__to_chars_len(__val); 859623: string __str; 859623: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 859623: __detail::__to_chars_10_impl(__p, __n, __val); 859623: return __n; 859623: }); 859623: return __str; 859623: } 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(long long __val) 859623: { 859623: const bool __neg = __val < 0; 859623: const unsigned long long __uval 859623: = __neg ? (unsigned long long)~__val + 1ull : __val; 859623: const auto __len = __detail::__to_chars_len(__uval); 859623: string __str; 859623: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { 859623: __p[0] = '-'; 859623: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); 859623: return __n; 859623: }); 859623: return __str; 859623: } 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(unsigned long long __val) 859623: { 859623: const auto __len = __detail::__to_chars_len(__val); 859623: string __str; 859623: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { 859623: __detail::__to_chars_10_impl(__p, __n, __val); 859623: return __n; 859623: }); 859623: return __str; 859623: } 859623: # 4687 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wsuggest-attribute=format" 859623: 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(float __val) 859623: { 859623: const int __n = 859623: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 859623: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 859623: "%f", __val); 859623: } 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(double __val) 859623: { 859623: const int __n = 859623: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 859623: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 859623: "%f", __val); 859623: } 859623: 859623: [[__nodiscard__]] 859623: inline string 859623: to_string(long double __val) 859623: { 859623: const int __n = 859623: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 859623: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 859623: "%Lf", __val); 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: inline int 859623: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), 859623: __idx, __base); } 859623: 859623: inline long 859623: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), 859623: __idx, __base); } 859623: 859623: inline unsigned long 859623: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), 859623: __idx, __base); } 859623: 859623: inline long long 859623: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), 859623: __idx, __base); } 859623: 859623: inline unsigned long long 859623: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) 859623: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), 859623: __idx, __base); } 859623: 859623: 859623: inline float 859623: stof(const wstring& __str, size_t* __idx = 0) 859623: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } 859623: 859623: inline double 859623: stod(const wstring& __str, size_t* __idx = 0) 859623: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } 859623: 859623: inline long double 859623: stold(const wstring& __str, size_t* __idx = 0) 859623: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: inline void 859623: __to_wstring_numeric(const char* __s, int __len, wchar_t* __wout) 859623: { 859623: 859623: 859623: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' 859623: && wchar_t('.') == L'.' && wchar_t('e') == L'e') 859623: { 859623: for (int __i = 0; __i < __len; ++__i) 859623: __wout[__i] = (wchar_t) __s[__i]; 859623: } 859623: else 859623: { 859623: wchar_t __wc[256]; 859623: for (int __i = '0'; __i <= '9'; ++__i) 859623: __wc[__i] = L'0' + __i; 859623: __wc['.'] = L'.'; 859623: __wc['+'] = L'+'; 859623: __wc['-'] = L'-'; 859623: __wc['a'] = L'a'; 859623: __wc['b'] = L'b'; 859623: __wc['c'] = L'c'; 859623: __wc['d'] = L'd'; 859623: __wc['e'] = L'e'; 859623: __wc['f'] = L'f'; 859623: __wc['i'] = L'i'; 859623: __wc['n'] = L'n'; 859623: __wc['p'] = L'p'; 859623: __wc['x'] = L'x'; 859623: __wc['A'] = L'A'; 859623: __wc['B'] = L'B'; 859623: __wc['C'] = L'C'; 859623: __wc['D'] = L'D'; 859623: __wc['E'] = L'E'; 859623: __wc['F'] = L'F'; 859623: __wc['I'] = L'I'; 859623: __wc['N'] = L'N'; 859623: __wc['P'] = L'P'; 859623: __wc['X'] = L'X'; 859623: 859623: for (int __i = 0; __i < __len; ++__i) 859623: __wout[__i] = __wc[(int)__s[__i]]; 859623: } 859623: } 859623: 859623: 859623: 859623: 859623: inline wstring 859623: 859623: 859623: 859623: __to_wstring_numeric(const string& __s) 859623: 859623: { 859623: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' 859623: && wchar_t('.') == L'.' && wchar_t('e') == L'e') 859623: return wstring(__s.data(), __s.data() + __s.size()); 859623: else 859623: { 859623: wstring __ws; 859623: auto __f = __s.data(); 859623: __ws.__resize_and_overwrite(__s.size(), 859623: [__f] (wchar_t* __to, int __n) { 859623: std::__to_wstring_numeric(__f, __n, __to); 859623: return __n; 859623: }); 859623: return __ws; 859623: } 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(int __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(unsigned __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(long __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(unsigned long __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(long long __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(unsigned long long __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(float __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(double __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: [[__nodiscard__]] 859623: inline wstring 859623: to_wstring(long double __val) 859623: { return std::__to_wstring_numeric(std::to_string(__val)); } 859623: 859623: 859623: 859623: } 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/functional_hash.h" 1 3 859623: # 38 "/usr/arm-linux-gnueabi/include/c++/15/bits/functional_hash.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/hash_bytes.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/hash_bytes.h" 3 859623: namespace std 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_t 859623: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 859623: 859623: 859623: 859623: 859623: 859623: size_t 859623: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 859623: 859623: 859623: } 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/functional_hash.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/bits/functional_hash.h" 3 859623: template 859623: struct __hash_base 859623: { 859623: 859623: typedef _Result result_type ; 859623: typedef _Arg argument_type ; 859623: 859623: }; 859623: 859623: 859623: 859623: template struct __hash_empty_base { }; 859623: 859623: 859623: 859623: template 859623: struct hash; 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++14-extensions" 859623: template 859623: constexpr bool __is_hash_enabled_for = false; 859623: 859623: template 859623: constexpr bool 859623: __is_hash_enabled_for<_Tp, 859623: __void_t()(declval<_Tp>()))>> 859623: = true; 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: template 859623: struct __hash_not_enabled 859623: { 859623: __hash_not_enabled(__hash_not_enabled&&) = delete; 859623: ~__hash_not_enabled() = delete; 859623: }; 859623: 859623: 859623: template 859623: struct __hash_enum : public __hash_base 859623: { 859623: size_t 859623: operator()(_Tp __val) const noexcept 859623: { 859623: using __type = typename underlying_type<_Tp>::type; 859623: return hash<__type>{}(static_cast<__type>(__val)); 859623: } 859623: }; 859623: 859623: 859623: template 859623: struct hash 859623: : __conditional_t<__is_enum(_Tp), __hash_enum<_Tp>, __hash_not_enabled<_Tp>> 859623: { }; 859623: 859623: 859623: template 859623: struct hash<_Tp*> : public __hash_base 859623: { 859623: size_t 859623: operator()(_Tp* __p) const noexcept 859623: { return reinterpret_cast(__p); } 859623: }; 859623: # 128 "/usr/arm-linux-gnueabi/include/c++/15/bits/functional_hash.h" 3 859623: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 859623: 859623: 859623: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 859623: # 204 "/usr/arm-linux-gnueabi/include/c++/15/bits/functional_hash.h" 3 859623: struct _Hash_impl 859623: { 859623: static size_t 859623: hash(const void* __ptr, size_t __clength, 859623: size_t __seed = static_cast(0xc70f6907UL)) 859623: { return _Hash_bytes(__ptr, __clength, __seed); } 859623: 859623: template 859623: static size_t 859623: hash(const _Tp& __val) 859623: { return hash(&__val, sizeof(__val)); } 859623: 859623: template 859623: static size_t 859623: __hash_combine(const _Tp& __val, size_t __hash) 859623: { return hash(&__val, sizeof(__val), __hash); } 859623: }; 859623: 859623: 859623: struct _Fnv_hash_impl 859623: { 859623: static size_t 859623: hash(const void* __ptr, size_t __clength, 859623: size_t __seed = static_cast(2166136261UL)) 859623: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 859623: 859623: template 859623: static size_t 859623: hash(const _Tp& __val) 859623: { return hash(&__val, sizeof(__val)); } 859623: 859623: template 859623: static size_t 859623: __hash_combine(const _Tp& __val, size_t __hash) 859623: { return hash(&__val, sizeof(__val), __hash); } 859623: }; 859623: 859623: 859623: template<> 859623: struct hash : public __hash_base 859623: { 859623: size_t 859623: operator()(float __val) const noexcept 859623: { 859623: 859623: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 859623: } 859623: }; 859623: 859623: 859623: template<> 859623: struct hash : public __hash_base 859623: { 859623: size_t 859623: operator()(double __val) const noexcept 859623: { 859623: 859623: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 859623: } 859623: }; 859623: 859623: 859623: template<> 859623: struct hash 859623: : public __hash_base 859623: { 859623: __attribute__ ((__pure__)) size_t 859623: operator()(long double __val) const noexcept; 859623: }; 859623: # 297 "/usr/arm-linux-gnueabi/include/c++/15/bits/functional_hash.h" 3 859623: template 859623: struct __is_fast_hash : public std::true_type 859623: { }; 859623: 859623: template<> 859623: struct __is_fast_hash> : public std::false_type 859623: { }; 859623: 859623: 859623: } 859623: # 4896 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: template, _Alloc>> 859623: struct __str_hash_base 859623: : public __hash_base 859623: { 859623: [[__nodiscard__]] 859623: size_t 859623: operator()(const _StrT& __s) const noexcept 859623: { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(_CharT)); } 859623: }; 859623: 859623: 859623: 859623: template 859623: struct hash, _Alloc>> 859623: : public __str_hash_base 859623: { }; 859623: 859623: 859623: template 859623: struct hash, _Alloc>> 859623: : public __str_hash_base 859623: { }; 859623: 859623: template 859623: struct __is_fast_hash, 859623: _Alloc>>> 859623: : std::false_type 859623: { }; 859623: # 4944 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: template 859623: struct hash, _Alloc>> 859623: : public __str_hash_base 859623: { }; 859623: 859623: 859623: template 859623: struct hash, _Alloc>> 859623: : public __str_hash_base 859623: { }; 859623: 859623: 859623: 859623: template<> struct __is_fast_hash> : std::false_type { }; 859623: template<> struct __is_fast_hash> : std::false_type { }; 859623: template<> struct __is_fast_hash> : std::false_type { }; 859623: template<> struct __is_fast_hash> : std::false_type { }; 859623: # 5036 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.h" 3 859623: 859623: } 859623: # 57 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 1 3 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++11-extensions" 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: template 859623: const typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>::npos; 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: swap(basic_string& __s) noexcept 859623: { 859623: if (this == std::__addressof(__s)) 859623: return; 859623: 859623: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); 859623: 859623: if (_M_is_local()) 859623: if (__s._M_is_local()) 859623: { 859623: if (length() && __s.length()) 859623: { 859623: _CharT __tmp_data[_S_local_capacity + 1]; 859623: traits_type::copy(__tmp_data, __s._M_local_buf, 859623: __s.length() + 1); 859623: traits_type::copy(__s._M_local_buf, _M_local_buf, 859623: length() + 1); 859623: traits_type::copy(_M_local_buf, __tmp_data, 859623: __s.length() + 1); 859623: } 859623: else if (__s.length()) 859623: { 859623: _M_init_local_buf(); 859623: traits_type::copy(_M_local_buf, __s._M_local_buf, 859623: __s.length() + 1); 859623: _M_length(__s.length()); 859623: __s._M_set_length(0); 859623: return; 859623: } 859623: else if (length()) 859623: { 859623: __s._M_init_local_buf(); 859623: traits_type::copy(__s._M_local_buf, _M_local_buf, 859623: length() + 1); 859623: __s._M_length(length()); 859623: _M_set_length(0); 859623: return; 859623: } 859623: } 859623: else 859623: { 859623: const size_type __tmp_capacity = __s._M_allocated_capacity; 859623: __s._M_init_local_buf(); 859623: traits_type::copy(__s._M_local_buf, _M_local_buf, 859623: length() + 1); 859623: _M_data(__s._M_data()); 859623: __s._M_data(__s._M_local_buf); 859623: _M_capacity(__tmp_capacity); 859623: } 859623: else 859623: { 859623: const size_type __tmp_capacity = _M_allocated_capacity; 859623: if (__s._M_is_local()) 859623: { 859623: _M_init_local_buf(); 859623: traits_type::copy(_M_local_buf, __s._M_local_buf, 859623: __s.length() + 1); 859623: __s._M_data(_M_data()); 859623: _M_data(_M_local_buf); 859623: } 859623: else 859623: { 859623: pointer __tmp_ptr = _M_data(); 859623: _M_data(__s._M_data()); 859623: __s._M_data(__tmp_ptr); 859623: _M_capacity(__s._M_allocated_capacity); 859623: } 859623: __s._M_capacity(__tmp_capacity); 859623: } 859623: 859623: const size_type __tmp_length = length(); 859623: _M_length(__s.length()); 859623: __s._M_length(__tmp_length); 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::pointer 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_create(size_type& __capacity, size_type __old_capacity) 859623: { 859623: 859623: 859623: if (__capacity > max_size()) 859623: std::__throw_length_error(("basic_string::_M_create")); 859623: 859623: 859623: 859623: 859623: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) 859623: { 859623: __capacity = 2 * __old_capacity; 859623: 859623: if (__capacity > max_size()) 859623: __capacity = max_size(); 859623: } 859623: 859623: 859623: 859623: return _S_allocate(_M_get_allocator(), __capacity + 1); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: template 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_construct(_InIterator __beg, _InIterator __end, 859623: std::input_iterator_tag) 859623: { 859623: size_type __len = 0; 859623: size_type __capacity = size_type(_S_local_capacity); 859623: 859623: _M_init_local_buf(); 859623: 859623: while (__beg != __end && __len < __capacity) 859623: { 859623: _M_local_buf[__len++] = *__beg; 859623: ++__beg; 859623: } 859623: 859623: struct _Guard 859623: { 859623: 859623: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } 859623: 859623: 859623: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } 859623: 859623: basic_string* _M_guarded; 859623: } __guard(this); 859623: 859623: while (__beg != __end) 859623: { 859623: if (__len == __capacity) 859623: { 859623: 859623: __capacity = __len + 1; 859623: pointer __another = _M_create(__capacity, __len); 859623: this->_S_copy(__another, _M_data(), __len); 859623: _M_dispose(); 859623: _M_data(__another); 859623: _M_capacity(__capacity); 859623: } 859623: traits_type::assign(_M_data()[__len++], 859623: static_cast<_CharT>(*__beg)); 859623: ++__beg; 859623: } 859623: 859623: __guard._M_guarded = 0; 859623: 859623: _M_set_length(__len); 859623: } 859623: 859623: template 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_construct(_InIterator __beg, _InIterator __end, 859623: std::forward_iterator_tag) 859623: { 859623: size_type __dnew = static_cast(std::distance(__beg, __end)); 859623: 859623: if (__dnew > size_type(_S_local_capacity)) 859623: { 859623: _M_data(_M_create(__dnew, size_type(0))); 859623: _M_capacity(__dnew); 859623: } 859623: else 859623: _M_init_local_buf(); 859623: 859623: 859623: struct _Guard 859623: { 859623: 859623: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } 859623: 859623: 859623: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } 859623: 859623: basic_string* _M_guarded; 859623: } __guard(this); 859623: 859623: this->_S_copy_chars(_M_data(), __beg, __end); 859623: 859623: __guard._M_guarded = 0; 859623: 859623: _M_set_length(__dnew); 859623: } 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_construct(size_type __n, _CharT __c) 859623: { 859623: if (__n > size_type(_S_local_capacity)) 859623: { 859623: _M_data(_M_create(__n, size_type(0))); 859623: _M_capacity(__n); 859623: } 859623: else 859623: _M_init_local_buf(); 859623: 859623: if (__n) 859623: this->_S_assign(_M_data(), __n, __c); 859623: 859623: _M_set_length(__n); 859623: } 859623: 859623: 859623: 859623: template 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_construct(const _CharT* __str, size_type __n) 859623: { 859623: if (__n > size_type(_S_local_capacity)) 859623: { 859623: _M_data(_M_create(__n, size_type(0))); 859623: _M_capacity(__n); 859623: } 859623: else 859623: _M_init_local_buf(); 859623: 859623: if (__n || _Terminated) 859623: this->_S_copy(_M_data(), __str, __n + _Terminated); 859623: 859623: _M_length(__n); 859623: if (!_Terminated) 859623: traits_type::assign(_M_data()[__n], _CharT()); 859623: } 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_assign(const basic_string& __str) 859623: { 859623: if (this != std::__addressof(__str)) 859623: { 859623: const size_type __rsize = __str.length(); 859623: const size_type __capacity = capacity(); 859623: 859623: if (__rsize > __capacity) 859623: { 859623: size_type __new_capacity = __rsize; 859623: pointer __tmp = _M_create(__new_capacity, __capacity); 859623: _M_dispose(); 859623: _M_data(__tmp); 859623: _M_capacity(__new_capacity); 859623: } 859623: 859623: if (__rsize) 859623: this->_S_copy(_M_data(), __str._M_data(), __rsize); 859623: 859623: _M_set_length(__rsize); 859623: } 859623: } 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: reserve(size_type __res) 859623: { 859623: const size_type __capacity = capacity(); 859623: 859623: 859623: 859623: 859623: if (__res <= __capacity) 859623: return; 859623: 859623: pointer __tmp = _M_create(__res, __capacity); 859623: this->_S_copy(__tmp, _M_data(), length() + 1); 859623: _M_dispose(); 859623: _M_data(__tmp); 859623: _M_capacity(__res); 859623: } 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 859623: size_type __len2) 859623: { 859623: const size_type __how_much = length() - __pos - __len1; 859623: 859623: size_type __new_capacity = length() + __len2 - __len1; 859623: pointer __r = _M_create(__new_capacity, capacity()); 859623: 859623: if (__pos) 859623: this->_S_copy(__r, _M_data(), __pos); 859623: if (__s && __len2) 859623: this->_S_copy(__r + __pos, __s, __len2); 859623: if (__how_much) 859623: this->_S_copy(__r + __pos + __len2, 859623: _M_data() + __pos + __len1, __how_much); 859623: 859623: _M_dispose(); 859623: _M_data(__r); 859623: _M_capacity(__new_capacity); 859623: } 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_erase(size_type __pos, size_type __n) 859623: { 859623: const size_type __how_much = length() - __pos - __n; 859623: 859623: if (__how_much && __n) 859623: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); 859623: 859623: _M_set_length(length() - __n); 859623: } 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: reserve() 859623: { 859623: if (_M_is_local()) 859623: return; 859623: 859623: const size_type __length = length(); 859623: const size_type __capacity = _M_allocated_capacity; 859623: 859623: if (__length <= size_type(_S_local_capacity)) 859623: { 859623: _M_init_local_buf(); 859623: this->_S_copy(_M_local_buf, _M_data(), __length + 1); 859623: _M_destroy(__capacity); 859623: _M_data(_M_local_data()); 859623: } 859623: # 426 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: } 859623: 859623: template 859623: 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: resize(size_type __n, _CharT __c) 859623: { 859623: const size_type __size = this->size(); 859623: if (__size < __n) 859623: this->append(__n - __size, __c); 859623: else if (__n < __size) 859623: this->_M_set_length(__n); 859623: } 859623: 859623: template 859623: 859623: basic_string<_CharT, _Traits, _Alloc>& 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_append(const _CharT* __s, size_type __n) 859623: { 859623: const size_type __len = __n + this->size(); 859623: 859623: if (__len <= this->capacity()) 859623: { 859623: if (__n) 859623: this->_S_copy(this->_M_data() + this->size(), __s, __n); 859623: } 859623: else 859623: this->_M_mutate(this->size(), size_type(0), __s, __n); 859623: 859623: this->_M_set_length(__len); 859623: return *this; 859623: } 859623: 859623: template 859623: template 859623: 859623: basic_string<_CharT, _Traits, _Alloc>& 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 859623: _InputIterator __k1, _InputIterator __k2, 859623: std::__false_type) 859623: { 859623: 859623: 859623: const basic_string __s(__k1, __k2, this->get_allocator()); 859623: const size_type __n1 = __i2 - __i1; 859623: return _M_replace(__i1 - begin(), __n1, __s._M_data(), 859623: __s.size()); 859623: } 859623: 859623: template 859623: 859623: basic_string<_CharT, _Traits, _Alloc>& 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 859623: _CharT __c) 859623: { 859623: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); 859623: 859623: const size_type __old_size = this->size(); 859623: const size_type __new_size = __old_size + __n2 - __n1; 859623: 859623: if (__new_size <= this->capacity()) 859623: { 859623: pointer __p = this->_M_data() + __pos1; 859623: 859623: const size_type __how_much = __old_size - __pos1 - __n1; 859623: if (__how_much && __n1 != __n2) 859623: this->_S_move(__p + __n2, __p + __n1, __how_much); 859623: } 859623: else 859623: this->_M_mutate(__pos1, __n1, 0, __n2); 859623: 859623: if (__n2) 859623: this->_S_assign(this->_M_data() + __pos1, __n2, __c); 859623: 859623: this->_M_set_length(__new_size); 859623: return *this; 859623: } 859623: 859623: template 859623: __attribute__((__noinline__, __noclone__, __cold__)) void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, 859623: const size_type __len2, const size_type __how_much) 859623: { 859623: 859623: if (__len2 && __len2 <= __len1) 859623: this->_S_move(__p, __s, __len2); 859623: if (__how_much && __len1 != __len2) 859623: this->_S_move(__p + __len2, __p + __len1, __how_much); 859623: if (__len2 > __len1) 859623: { 859623: if (__s + __len2 <= __p + __len1) 859623: this->_S_move(__p, __s, __len2); 859623: else if (__s >= __p + __len1) 859623: { 859623: 859623: 859623: const size_type __poff = (__s - __p) + (__len2 - __len1); 859623: this->_S_copy(__p, __p + __poff, __len2); 859623: } 859623: else 859623: { 859623: const size_type __nleft = (__p + __len1) - __s; 859623: this->_S_move(__p, __s, __nleft); 859623: this->_S_copy(__p + __nleft, __p + __len2, __len2 - __nleft); 859623: } 859623: } 859623: } 859623: 859623: template 859623: 859623: basic_string<_CharT, _Traits, _Alloc>& 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 859623: const size_type __len2) 859623: { 859623: _M_check_length(__len1, __len2, "basic_string::_M_replace"); 859623: 859623: const size_type __old_size = this->size(); 859623: const size_type __new_size = __old_size + __len2 - __len1; 859623: 859623: if (__new_size <= this->capacity()) 859623: { 859623: pointer __p = this->_M_data() + __pos; 859623: 859623: const size_type __how_much = __old_size - __pos - __len1; 859623: # 568 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: if (__builtin_expect(_M_disjunct(__s), true)) 859623: { 859623: if (__how_much && __len1 != __len2) 859623: this->_S_move(__p + __len2, __p + __len1, __how_much); 859623: if (__len2) 859623: this->_S_copy(__p, __s, __len2); 859623: } 859623: else 859623: _M_replace_cold(__p, __len1, __s, __len2, __how_much); 859623: } 859623: else 859623: this->_M_mutate(__pos, __len1, __s, __len2); 859623: 859623: this->_M_set_length(__new_size); 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: copy(_CharT* __s, size_type __n, size_type __pos) const 859623: { 859623: _M_check(__pos, "basic_string::copy"); 859623: __n = _M_limit(__pos, __n); 859623: ; 859623: if (__n) 859623: _S_copy(__s, _M_data() + __pos, __n); 859623: 859623: return __n; 859623: } 859623: # 611 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: template 859623: template 859623: void 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: 859623: 859623: 859623: __resize_and_overwrite(const size_type __n, _Operation __op) 859623: 859623: { 859623: reserve(__n); 859623: _CharT* const __p = _M_data(); 859623: 859623: 859623: 859623: 859623: struct _Terminator { 859623: ~_Terminator() { _M_this->_M_set_length(_M_r); } 859623: basic_string* _M_this; 859623: size_type _M_r; 859623: }; 859623: _Terminator __term{this, 0}; 859623: auto __r = std::move(__op)(__p + 0, __n + 0); 859623: 859623: 859623: 859623: static_assert(__gnu_cxx::__is_integer_nonstrict::__value, 859623: "resize_and_overwrite operation must return an integer"); 859623: 859623: ; 859623: __term._M_r = size_type(__r); 859623: if (__term._M_r > __n) 859623: __builtin_unreachable(); 859623: } 859623: # 654 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept 859623: { 859623: ; 859623: const size_type __size = this->size(); 859623: 859623: if (__n == 0) 859623: return __pos <= __size ? __pos : npos; 859623: if (__pos >= __size) 859623: return npos; 859623: 859623: const _CharT __elem0 = __s[0]; 859623: const _CharT* const __data = data(); 859623: const _CharT* __first = __data + __pos; 859623: const _CharT* const __last = __data + __size; 859623: size_type __len = __size - __pos; 859623: 859623: while (__len >= __n) 859623: { 859623: 859623: __first = traits_type::find(__first, __len - __n + 1, __elem0); 859623: if (!__first) 859623: return npos; 859623: 859623: 859623: 859623: if (traits_type::compare(__first, __s, __n) == 0) 859623: return __first - __data; 859623: __len = __last - ++__first; 859623: } 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find(_CharT __c, size_type __pos) const noexcept 859623: { 859623: size_type __ret = npos; 859623: const size_type __size = this->size(); 859623: if (__pos < __size) 859623: { 859623: const _CharT* __data = _M_data(); 859623: const size_type __n = __size - __pos; 859623: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); 859623: if (__p) 859623: __ret = __p - __data; 859623: } 859623: return __ret; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: rfind(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept 859623: { 859623: ; 859623: const size_type __size = this->size(); 859623: if (__n <= __size) 859623: { 859623: __pos = std::min(size_type(__size - __n), __pos); 859623: const _CharT* __data = _M_data(); 859623: do 859623: { 859623: if (traits_type::compare(__data + __pos, __s, __n) == 0) 859623: return __pos; 859623: } 859623: while (__pos-- > 0); 859623: } 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: rfind(_CharT __c, size_type __pos) const noexcept 859623: { 859623: size_type __size = this->size(); 859623: if (__size) 859623: { 859623: if (--__size > __pos) 859623: __size = __pos; 859623: for (++__size; __size-- > 0; ) 859623: if (traits_type::eq(_M_data()[__size], __c)) 859623: return __size; 859623: } 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept 859623: { 859623: ; 859623: for (; __n && __pos < this->size(); ++__pos) 859623: { 859623: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); 859623: if (__p) 859623: return __pos; 859623: } 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept 859623: { 859623: ; 859623: size_type __size = this->size(); 859623: if (__size && __n) 859623: { 859623: if (--__size > __pos) 859623: __size = __pos; 859623: do 859623: { 859623: if (traits_type::find(__s, __n, _M_data()[__size])) 859623: return __size; 859623: } 859623: while (__size-- != 0); 859623: } 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept 859623: { 859623: ; 859623: for (; __pos < this->size(); ++__pos) 859623: if (!traits_type::find(__s, __n, _M_data()[__pos])) 859623: return __pos; 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find_first_not_of(_CharT __c, size_type __pos) const noexcept 859623: { 859623: for (; __pos < this->size(); ++__pos) 859623: if (!traits_type::eq(_M_data()[__pos], __c)) 859623: return __pos; 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 859623: noexcept 859623: { 859623: ; 859623: size_type __size = this->size(); 859623: if (__size) 859623: { 859623: if (--__size > __pos) 859623: __size = __pos; 859623: do 859623: { 859623: if (!traits_type::find(__s, __n, _M_data()[__size])) 859623: return __size; 859623: } 859623: while (__size--); 859623: } 859623: return npos; 859623: } 859623: 859623: template 859623: 859623: typename basic_string<_CharT, _Traits, _Alloc>::size_type 859623: basic_string<_CharT, _Traits, _Alloc>:: 859623: find_last_not_of(_CharT __c, size_type __pos) const noexcept 859623: { 859623: size_type __size = this->size(); 859623: if (__size) 859623: { 859623: if (--__size > __pos) 859623: __size = __pos; 859623: do 859623: { 859623: if (!traits_type::eq(_M_data()[__size], __c)) 859623: return __size; 859623: } 859623: while (__size--); 859623: } 859623: return npos; 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: basic_istream<_CharT, _Traits>& 859623: operator>>(basic_istream<_CharT, _Traits>& __in, 859623: basic_string<_CharT, _Traits, _Alloc>& __str) 859623: { 859623: typedef basic_istream<_CharT, _Traits> __istream_type; 859623: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 859623: typedef typename __istream_type::ios_base __ios_base; 859623: typedef typename __istream_type::int_type __int_type; 859623: typedef typename __string_type::size_type __size_type; 859623: typedef ctype<_CharT> __ctype_type; 859623: typedef typename __ctype_type::ctype_base __ctype_base; 859623: 859623: __size_type __extracted = 0; 859623: typename __ios_base::iostate __err = __ios_base::goodbit; 859623: typename __istream_type::sentry __cerb(__in, false); 859623: if (__cerb) 859623: { 859623: if (true) 859623: { 859623: 859623: __str.erase(); 859623: _CharT __buf[128]; 859623: __size_type __len = 0; 859623: const streamsize __w = __in.width(); 859623: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) 859623: : __str.max_size(); 859623: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 859623: const __int_type __eof = _Traits::eof(); 859623: __int_type __c = __in.rdbuf()->sgetc(); 859623: 859623: while (__extracted < __n 859623: && !_Traits::eq_int_type(__c, __eof) 859623: && !__ct.is(__ctype_base::space, 859623: _Traits::to_char_type(__c))) 859623: { 859623: if (__len == sizeof(__buf) / sizeof(_CharT)) 859623: { 859623: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); 859623: __len = 0; 859623: } 859623: __buf[__len++] = _Traits::to_char_type(__c); 859623: ++__extracted; 859623: __c = __in.rdbuf()->snextc(); 859623: } 859623: __str.append(__buf, __len); 859623: 859623: if (__extracted < __n && _Traits::eq_int_type(__c, __eof)) 859623: __err |= __ios_base::eofbit; 859623: __in.width(0); 859623: } 859623: if (false) 859623: { 859623: __in._M_setstate(__ios_base::badbit); 859623: ; 859623: } 859623: if (false) 859623: { 859623: 859623: 859623: 859623: __in._M_setstate(__ios_base::badbit); 859623: } 859623: } 859623: 859623: if (!__extracted) 859623: __err |= __ios_base::failbit; 859623: if (__err) 859623: __in.setstate(__err); 859623: return __in; 859623: } 859623: 859623: template 859623: basic_istream<_CharT, _Traits>& 859623: getline(basic_istream<_CharT, _Traits>& __in, 859623: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 859623: { 859623: typedef basic_istream<_CharT, _Traits> __istream_type; 859623: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 859623: typedef typename __istream_type::ios_base __ios_base; 859623: typedef typename __istream_type::int_type __int_type; 859623: typedef typename __string_type::size_type __size_type; 859623: 859623: __size_type __extracted = 0; 859623: const __size_type __n = __str.max_size(); 859623: typename __ios_base::iostate __err = __ios_base::goodbit; 859623: typename __istream_type::sentry __cerb(__in, true); 859623: if (__cerb) 859623: { 859623: if (true) 859623: { 859623: __str.erase(); 859623: const __int_type __idelim = _Traits::to_int_type(__delim); 859623: const __int_type __eof = _Traits::eof(); 859623: __int_type __c = __in.rdbuf()->sgetc(); 859623: 859623: while (__extracted < __n 859623: && !_Traits::eq_int_type(__c, __eof) 859623: && !_Traits::eq_int_type(__c, __idelim)) 859623: { 859623: __str += _Traits::to_char_type(__c); 859623: ++__extracted; 859623: __c = __in.rdbuf()->snextc(); 859623: } 859623: 859623: if (_Traits::eq_int_type(__c, __eof)) 859623: __err |= __ios_base::eofbit; 859623: else if (_Traits::eq_int_type(__c, __idelim)) 859623: { 859623: ++__extracted; 859623: __in.rdbuf()->sbumpc(); 859623: } 859623: else 859623: __err |= __ios_base::failbit; 859623: } 859623: if (false) 859623: { 859623: __in._M_setstate(__ios_base::badbit); 859623: ; 859623: } 859623: if (false) 859623: { 859623: 859623: 859623: 859623: __in._M_setstate(__ios_base::badbit); 859623: } 859623: } 859623: if (!__extracted) 859623: __err |= __ios_base::failbit; 859623: if (__err) 859623: __in.setstate(__err); 859623: return __in; 859623: } 859623: # 1008 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: extern template class basic_string; 859623: # 1021 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: extern template 859623: basic_istream& 859623: operator>>(basic_istream&, string&); 859623: extern template 859623: basic_ostream& 859623: operator<<(basic_ostream&, const string&); 859623: extern template 859623: basic_istream& 859623: getline(basic_istream&, string&, char); 859623: extern template 859623: basic_istream& 859623: getline(basic_istream&, string&); 859623: 859623: 859623: 859623: extern template class basic_string; 859623: # 1047 "/usr/arm-linux-gnueabi/include/c++/15/bits/basic_string.tcc" 3 859623: extern template 859623: basic_istream& 859623: operator>>(basic_istream&, wstring&); 859623: extern template 859623: basic_ostream& 859623: operator<<(basic_ostream&, const wstring&); 859623: extern template 859623: basic_istream& 859623: getline(basic_istream&, wstring&, wchar_t); 859623: extern template 859623: basic_istream& 859623: getline(basic_istream&, wstring&); 859623: 859623: 859623: 859623: 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 58 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 69 "/usr/arm-linux-gnueabi/include/c++/15/string" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 70 "/usr/arm-linux-gnueabi/include/c++/15/string" 2 3 859623: # 22 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/vector" 1 3 859623: # 67 "/usr/arm-linux-gnueabi/include/c++/15/vector" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 1 3 859623: # 71 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _UninitDestroyGuard 859623: { 859623: 859623: explicit 859623: _UninitDestroyGuard(_ForwardIterator& __first, _Alloc& __a) 859623: : _M_first(__first), _M_cur(__builtin_addressof(__first)), _M_alloc(__a) 859623: { } 859623: 859623: 859623: ~_UninitDestroyGuard() 859623: { 859623: if (__builtin_expect(_M_cur != 0, 0)) 859623: std::_Destroy(_M_first, *_M_cur, _M_alloc); 859623: } 859623: 859623: 859623: void release() { _M_cur = 0; } 859623: 859623: private: 859623: _ForwardIterator const _M_first; 859623: _ForwardIterator* _M_cur; 859623: _Alloc& _M_alloc; 859623: 859623: _UninitDestroyGuard(const _UninitDestroyGuard&); 859623: }; 859623: 859623: template 859623: struct _UninitDestroyGuard<_ForwardIterator, void> 859623: { 859623: 859623: explicit 859623: _UninitDestroyGuard(_ForwardIterator& __first) 859623: : _M_first(__first), _M_cur(__builtin_addressof(__first)) 859623: { } 859623: 859623: 859623: ~_UninitDestroyGuard() 859623: { 859623: if (__builtin_expect(_M_cur != 0, 0)) 859623: std::_Destroy(_M_first, *_M_cur); 859623: } 859623: 859623: 859623: void release() { _M_cur = 0; } 859623: 859623: _ForwardIterator const _M_first; 859623: _ForwardIterator* _M_cur; 859623: 859623: private: 859623: _UninitDestroyGuard(const _UninitDestroyGuard&); 859623: }; 859623: 859623: 859623: 859623: template 859623: 859623: _ForwardIterator 859623: __do_uninit_copy(_InputIterator __first, _Sentinel __last, 859623: _ForwardIterator __result) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 859623: for (; __first != __last; ++__first, (void)++__result) 859623: std::_Construct(std::__addressof(*__result), *__first); 859623: __guard.release(); 859623: return __result; 859623: } 859623: # 217 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: # 228 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: 859623: inline _ForwardIterator 859623: uninitialized_copy(_InputIterator __first, _InputIterator __last, 859623: _ForwardIterator __result) 859623: { 859623: # 256 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: using _Dest = decltype(std::__niter_base(__result)); 859623: using _Src = decltype(std::__niter_base(__first)); 859623: using _ValT = typename iterator_traits<_ForwardIterator>::value_type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: if constexpr (!__is_trivially_constructible(_ValT, decltype(*__first))) 859623: return std::__do_uninit_copy(__first, __last, __result); 859623: else if constexpr (__memcpyable<_Dest, _Src>::__value) 859623: { 859623: ptrdiff_t __n = __last - __first; 859623: if (__n > 0) [[__likely__]] 859623: { 859623: using _ValT = typename remove_pointer<_Src>::type; 859623: __builtin_memcpy(std::__niter_base(__result), 859623: std::__niter_base(__first), 859623: __n * sizeof(_ValT)); 859623: __result += __n; 859623: } 859623: return __result; 859623: } 859623: # 302 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: else 859623: return std::__do_uninit_copy(__first, __last, __result); 859623: # 317 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: 859623: template 859623: void 859623: __do_uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 859623: const _Tp& __x) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 859623: for (; __first != __last; ++__first) 859623: std::_Construct(std::__addressof(*__first), __x); 859623: __guard.release(); 859623: } 859623: # 389 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: 859623: inline void 859623: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 859623: const _Tp& __x) 859623: { 859623: # 404 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _ValueType; 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: 859623: 859623: 859623: 859623: if constexpr (__is_byte<_ValueType>::__value) 859623: if constexpr (is_same<_ValueType, _Tp>::value 859623: || is_integral<_Tp>::value) 859623: { 859623: using _BasePtr = decltype(std::__niter_base(__first)); 859623: if constexpr (is_pointer<_BasePtr>::value) 859623: { 859623: void* __dest = std::__niter_base(__first); 859623: ptrdiff_t __n = __last - __first; 859623: if (__n > 0) [[__likely__]] 859623: __builtin_memset(__dest, (unsigned char)__x, __n); 859623: return; 859623: } 859623: # 438 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: } 859623: std::__do_uninit_fill(__first, __last, __x); 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: 859623: _ForwardIterator 859623: __do_uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: if constexpr (is_integral<_Size>::value) 859623: 859623: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); 859623: else if constexpr (is_floating_point<_Size>::value) 859623: 859623: do { if (std::__is_constant_evaluated() && !bool(__n >= 0 && static_cast(__n) == __n)) std::__glibcxx_assert_fail(); } while (false); 859623: #pragma GCC diagnostic pop 859623: 859623: for (; __n--; ++__first) 859623: std::_Construct(std::__addressof(*__first), __x); 859623: __guard.release(); 859623: return __first; 859623: } 859623: # 510 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: # 523 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: 859623: inline _ForwardIterator 859623: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _ValueType; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: if constexpr (__is_byte<_ValueType>::__value) 859623: if constexpr (is_integral<_Tp>::value) 859623: if constexpr (is_integral<_Size>::value) 859623: { 859623: using _BasePtr = decltype(std::__niter_base(__first)); 859623: if constexpr (is_pointer<_BasePtr>::value) 859623: { 859623: void* __dest = std::__niter_base(__first); 859623: if (__n > 0) [[__likely__]] 859623: { 859623: __builtin_memset(__dest, (unsigned char)__x, __n); 859623: __first += __n; 859623: } 859623: return __first; 859623: } 859623: # 570 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: } 859623: return std::__do_uninit_fill_n(__first, __n, __x); 859623: # 580 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: } 859623: #pragma GCC diagnostic pop 859623: # 591 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: 859623: _ForwardIterator 859623: __uninitialized_copy_a(_InputIterator __first, _Sentinel __last, 859623: _ForwardIterator __result, _Allocator& __alloc) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> 859623: __guard(__result, __alloc); 859623: 859623: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 859623: for (; __first != __last; ++__first, (void)++__result) 859623: __traits::construct(__alloc, std::__addressof(*__result), *__first); 859623: __guard.release(); 859623: return __result; 859623: } 859623: 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_copy_a(_InputIterator __first, _Sentinel __last, 859623: _ForwardIterator __result, allocator<_Tp>&) 859623: { 859623: # 637 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: return std::uninitialized_copy(__first, __last, __result); 859623: 859623: } 859623: 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 859623: _ForwardIterator __result, _Allocator& __alloc) 859623: { 859623: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 859623: std::make_move_iterator(__last), 859623: __result, __alloc); 859623: } 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_move_if_noexcept_a(_InputIterator __first, 859623: _InputIterator __last, 859623: _ForwardIterator __result, 859623: _Allocator& __alloc) 859623: { 859623: return std::__uninitialized_copy_a 859623: (std::__make_move_if_noexcept_iterator(__first), 859623: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 859623: } 859623: 859623: template 859623: 859623: void 859623: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 859623: const _Tp& __x, _Allocator& __alloc) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> 859623: __guard(__first, __alloc); 859623: 859623: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 859623: for (; __first != __last; ++__first) 859623: __traits::construct(__alloc, std::__addressof(*__first), __x); 859623: 859623: __guard.release(); 859623: } 859623: 859623: 859623: template 859623: 859623: inline void 859623: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 859623: const _Tp& __x, allocator<_Tp2>&) 859623: { 859623: 859623: 859623: 859623: 859623: std::uninitialized_fill(__first, __last, __x); 859623: } 859623: 859623: 859623: template 859623: 859623: _ForwardIterator 859623: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 859623: const _Tp& __x, _Allocator& __alloc) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> 859623: __guard(__first, __alloc); 859623: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 859623: for (; __n > 0; --__n, (void) ++__first) 859623: __traits::construct(__alloc, std::__addressof(*__first), __x); 859623: __guard.release(); 859623: return __first; 859623: } 859623: 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 859623: const _Tp& __x, allocator<_Tp2>&) 859623: { 859623: 859623: 859623: 859623: 859623: return std::uninitialized_fill_n(__first, __n, __x); 859623: } 859623: # 740 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: inline _ForwardIterator 859623: __uninitialized_copy_move(_InputIterator1 __first1, 859623: _InputIterator1 __last1, 859623: _InputIterator2 __first2, 859623: _InputIterator2 __last2, 859623: _ForwardIterator __result, 859623: _Allocator& __alloc) 859623: { 859623: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 859623: __result, __alloc); 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 859623: __alloc); 859623: __result = __mid; 859623: __result = std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 859623: __guard.release(); 859623: return __result; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: template 859623: inline _ForwardIterator 859623: __uninitialized_move_copy(_InputIterator1 __first1, 859623: _InputIterator1 __last1, 859623: _InputIterator2 __first2, 859623: _InputIterator2 __last2, 859623: _ForwardIterator __result, 859623: _Allocator& __alloc) 859623: { 859623: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 859623: __result, __alloc); 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 859623: __alloc); 859623: __result = __mid; 859623: __result = std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 859623: __guard.release(); 859623: return __result; 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: inline _ForwardIterator 859623: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 859623: const _Tp& __x, _InputIterator __first, 859623: _InputIterator __last, _Allocator& __alloc) 859623: { 859623: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__result, 859623: __alloc); 859623: __result = __mid; 859623: __result = std::__uninitialized_move_a(__first, __last, __mid, __alloc); 859623: __guard.release(); 859623: return __result; 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: inline void 859623: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 859623: _ForwardIterator __first2, 859623: _ForwardIterator __last2, const _Tp& __x, 859623: _Allocator& __alloc) 859623: { 859623: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 859623: __first2, 859623: __alloc); 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first2, 859623: __alloc); 859623: __first2 = __mid2; 859623: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 859623: __guard.release(); 859623: } 859623: # 832 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: struct __uninitialized_default_1 859623: { 859623: template 859623: 859623: static void 859623: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 859623: for (; __first != __last; ++__first) 859623: std::_Construct(std::__addressof(*__first)); 859623: __guard.release(); 859623: } 859623: }; 859623: 859623: template<> 859623: struct __uninitialized_default_1 859623: { 859623: template 859623: 859623: static void 859623: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 859623: { 859623: if (__first == __last) 859623: return; 859623: 859623: typename iterator_traits<_ForwardIterator>::value_type* __val 859623: = std::__addressof(*__first); 859623: std::_Construct(__val); 859623: if (++__first != __last) 859623: std::fill(__first, __last, *__val); 859623: } 859623: }; 859623: 859623: template 859623: struct __uninitialized_default_n_1 859623: { 859623: template 859623: 859623: static _ForwardIterator 859623: __uninit_default_n(_ForwardIterator __first, _Size __n) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 859623: for (; __n > 0; --__n, (void) ++__first) 859623: std::_Construct(std::__addressof(*__first)); 859623: __guard.release(); 859623: return __first; 859623: } 859623: }; 859623: 859623: template<> 859623: struct __uninitialized_default_n_1 859623: { 859623: template 859623: 859623: static _ForwardIterator 859623: __uninit_default_n(_ForwardIterator __first, _Size __n) 859623: { 859623: if (__n > 0) 859623: { 859623: typename iterator_traits<_ForwardIterator>::value_type* __val 859623: = std::__addressof(*__first); 859623: std::_Construct(__val); 859623: ++__first; 859623: __first = std::fill_n(__first, __n - 1, *__val); 859623: } 859623: return __first; 859623: } 859623: }; 859623: 859623: 859623: 859623: template 859623: 859623: inline void 859623: __uninitialized_default(_ForwardIterator __first, 859623: _ForwardIterator __last) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _ValueType; 859623: 859623: const bool __assignable = is_copy_assignable<_ValueType>::value; 859623: 859623: std::__uninitialized_default_1<__is_trivial(_ValueType) 859623: && __assignable>:: 859623: __uninit_default(__first, __last); 859623: } 859623: 859623: 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _ValueType; 859623: 859623: constexpr bool __can_fill 859623: = __and_, is_copy_assignable<_ValueType>>::value; 859623: 859623: return __uninitialized_default_n_1<__is_trivial(_ValueType) 859623: && __can_fill>:: 859623: __uninit_default_n(__first, __n); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: template 859623: void 859623: __uninitialized_default_a(_ForwardIterator __first, 859623: _ForwardIterator __last, 859623: _Allocator& __alloc) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first, 859623: __alloc); 859623: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 859623: for (; __first != __last; ++__first) 859623: __traits::construct(__alloc, std::__addressof(*__first)); 859623: __guard.release(); 859623: } 859623: 859623: 859623: template 859623: inline void 859623: __uninitialized_default_a(_ForwardIterator __first, 859623: _ForwardIterator __last, 859623: allocator<_Tp>&) 859623: { std::__uninitialized_default(__first, __last); } 859623: 859623: 859623: 859623: 859623: 859623: template 859623: _ForwardIterator 859623: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 859623: _Allocator& __alloc) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator, _Allocator> __guard(__first, 859623: __alloc); 859623: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 859623: for (; __n > 0; --__n, (void) ++__first) 859623: __traits::construct(__alloc, std::__addressof(*__first)); 859623: __guard.release(); 859623: return __first; 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 859623: allocator<_Tp>&) 859623: { return std::__uninitialized_default_n(__first, __n); } 859623: 859623: 859623: template 859623: struct __uninitialized_default_novalue_1 859623: { 859623: template 859623: 859623: static void 859623: __uninit_default_novalue(_ForwardIterator __first, 859623: _ForwardIterator __last) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 859623: for (; __first != __last; ++__first) 859623: std::_Construct_novalue(std::__addressof(*__first)); 859623: __guard.release(); 859623: } 859623: }; 859623: 859623: template<> 859623: struct __uninitialized_default_novalue_1 859623: { 859623: template 859623: 859623: static void 859623: __uninit_default_novalue(_ForwardIterator, _ForwardIterator) 859623: { 859623: } 859623: }; 859623: 859623: template 859623: struct __uninitialized_default_novalue_n_1 859623: { 859623: template 859623: 859623: static _ForwardIterator 859623: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__first); 859623: for (; __n > 0; --__n, (void) ++__first) 859623: std::_Construct_novalue(std::__addressof(*__first)); 859623: __guard.release(); 859623: return __first; 859623: } 859623: }; 859623: 859623: template<> 859623: struct __uninitialized_default_novalue_n_1 859623: { 859623: template 859623: 859623: static _ForwardIterator 859623: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 859623: { return std::next(__first, __n); } 859623: }; 859623: 859623: 859623: 859623: template 859623: 859623: inline void 859623: __uninitialized_default_novalue(_ForwardIterator __first, 859623: _ForwardIterator __last) 859623: { 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _ValueType; 859623: 859623: std::__uninitialized_default_novalue_1< 859623: is_trivially_default_constructible<_ValueType>::value>:: 859623: __uninit_default_novalue(__first, __last); 859623: } 859623: 859623: 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 859623: { 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _ValueType; 859623: 859623: return __uninitialized_default_novalue_n_1< 859623: is_trivially_default_constructible<_ValueType>::value>:: 859623: __uninit_default_novalue_n(__first, __n); 859623: } 859623: 859623: template 859623: 859623: _ForwardIterator 859623: __uninitialized_copy_n(_InputIterator __first, _Size __n, 859623: _ForwardIterator __result, input_iterator_tag) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 859623: for (; __n > 0; --__n, (void) ++__first, ++__result) 859623: std::_Construct(std::__addressof(*__result), *__first); 859623: __guard.release(); 859623: return __result; 859623: } 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 859623: _ForwardIterator __result, 859623: random_access_iterator_tag) 859623: { return std::uninitialized_copy(__first, __first + __n, __result); } 859623: 859623: template 859623: 859623: pair<_InputIterator, _ForwardIterator> 859623: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 859623: _ForwardIterator __result, input_iterator_tag) 859623: { 859623: _UninitDestroyGuard<_ForwardIterator> __guard(__result); 859623: for (; __n > 0; --__n, (void) ++__first, ++__result) 859623: std::_Construct(std::__addressof(*__result), *__first); 859623: __guard.release(); 859623: return {__first, __result}; 859623: } 859623: 859623: template 859623: 859623: inline pair<_RandomAccessIterator, _ForwardIterator> 859623: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 859623: _ForwardIterator __result, 859623: random_access_iterator_tag) 859623: { 859623: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 859623: auto __first_res = std::next(__first, __n); 859623: return {__first_res, __second_res}; 859623: } 859623: # 1151 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: 859623: inline _ForwardIterator 859623: uninitialized_copy_n(_InputIterator __first, _Size __n, 859623: _ForwardIterator __result) 859623: { return std::__uninitialized_copy_n(__first, __n, __result, 859623: std::__iterator_category(__first)); } 859623: 859623: 859623: template 859623: 859623: inline pair<_InputIterator, _ForwardIterator> 859623: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 859623: _ForwardIterator __result) 859623: { 859623: return 859623: std::__uninitialized_copy_n_pair(__first, __n, __result, 859623: std::__iterator_category(__first)); 859623: } 859623: # 1277 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: template 859623: 859623: inline void 859623: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, 859623: _Allocator& __alloc) 859623: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, 859623: __dest, std::move(*__orig))) 859623: && noexcept(std::allocator_traits<_Allocator>::destroy( 859623: __alloc, std::__addressof(*__orig)))) 859623: { 859623: typedef std::allocator_traits<_Allocator> __traits; 859623: __traits::construct(__alloc, __dest, std::move(*__orig)); 859623: __traits::destroy(__alloc, std::__addressof(*__orig)); 859623: } 859623: 859623: 859623: 859623: template 859623: struct __is_bitwise_relocatable 859623: : __bool_constant<__is_trivial(_Tp)> 859623: { }; 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __relocate_a_1(_InputIterator __first, _InputIterator __last, 859623: _ForwardIterator __result, _Allocator& __alloc) 859623: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), 859623: std::addressof(*__first), 859623: __alloc))) 859623: { 859623: typedef typename iterator_traits<_InputIterator>::value_type 859623: _ValueType; 859623: typedef typename iterator_traits<_ForwardIterator>::value_type 859623: _ValueType2; 859623: static_assert(std::is_same<_ValueType, _ValueType2>::value, 859623: "relocation is only possible for values of the same type"); 859623: _ForwardIterator __cur = __result; 859623: for (; __first != __last; ++__first, (void)++__cur) 859623: std::__relocate_object_a(std::__addressof(*__cur), 859623: std::__addressof(*__first), __alloc); 859623: return __cur; 859623: } 859623: 859623: 859623: template 859623: 859623: inline __enable_if_t::value, _Tp*> 859623: __relocate_a_1(_Tp* __first, _Tp* __last, 859623: _Tp* __result, 859623: [[__maybe_unused__]] allocator<_Up>& __alloc) noexcept 859623: { 859623: ptrdiff_t __count = __last - __first; 859623: if (__count > 0) 859623: { 859623: # 1343 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_uninitialized.h" 3 859623: __builtin_memcpy(__result, __first, __count * sizeof(_Tp)); 859623: } 859623: return __result + __count; 859623: } 859623: 859623: 859623: template 859623: 859623: inline _ForwardIterator 859623: __relocate_a(_InputIterator __first, _InputIterator __last, 859623: _ForwardIterator __result, _Allocator& __alloc) 859623: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), 859623: std::__niter_base(__last), 859623: std::__niter_base(__result), __alloc))) 859623: { 859623: return std::__relocate_a_1(std::__niter_base(__first), 859623: std::__niter_base(__last), 859623: std::__niter_base(__result), __alloc); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 68 "/usr/arm-linux-gnueabi/include/c++/15/vector" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 1 3 859623: # 84 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: template 859623: struct _Vector_base 859623: { 859623: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 859623: rebind<_Tp>::other _Tp_alloc_type; 859623: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 859623: pointer; 859623: 859623: struct _Vector_impl_data 859623: { 859623: pointer _M_start; 859623: pointer _M_finish; 859623: pointer _M_end_of_storage; 859623: 859623: 859623: _Vector_impl_data() noexcept 859623: : _M_start(), _M_finish(), _M_end_of_storage() 859623: { } 859623: 859623: 859623: 859623: _Vector_impl_data(_Vector_impl_data&& __x) noexcept 859623: : _M_start(__x._M_start), _M_finish(__x._M_finish), 859623: _M_end_of_storage(__x._M_end_of_storage) 859623: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } 859623: 859623: 859623: 859623: void 859623: _M_copy_data(_Vector_impl_data const& __x) noexcept 859623: { 859623: _M_start = __x._M_start; 859623: _M_finish = __x._M_finish; 859623: _M_end_of_storage = __x._M_end_of_storage; 859623: } 859623: 859623: 859623: void 859623: _M_swap_data(_Vector_impl_data& __x) noexcept 859623: { 859623: 859623: 859623: _Vector_impl_data __tmp; 859623: __tmp._M_copy_data(*this); 859623: _M_copy_data(__x); 859623: __x._M_copy_data(__tmp); 859623: } 859623: }; 859623: 859623: struct _Vector_impl 859623: : public _Tp_alloc_type, public _Vector_impl_data 859623: { 859623: 859623: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) 859623: 859623: 859623: 859623: 859623: : _Tp_alloc_type() 859623: { } 859623: 859623: 859623: _Vector_impl(_Tp_alloc_type const& __a) noexcept 859623: : _Tp_alloc_type(__a) 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: _Vector_impl(_Vector_impl&& __x) noexcept 859623: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) 859623: { } 859623: 859623: 859623: _Vector_impl(_Tp_alloc_type&& __a) noexcept 859623: : _Tp_alloc_type(std::move(__a)) 859623: { } 859623: 859623: 859623: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept 859623: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) 859623: { } 859623: # 300 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: }; 859623: 859623: public: 859623: typedef _Alloc allocator_type; 859623: 859623: 859623: _Tp_alloc_type& 859623: _M_get_Tp_allocator() noexcept 859623: { return this->_M_impl; } 859623: 859623: 859623: const _Tp_alloc_type& 859623: _M_get_Tp_allocator() const noexcept 859623: { return this->_M_impl; } 859623: 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return allocator_type(_M_get_Tp_allocator()); } 859623: 859623: 859623: _Vector_base() = default; 859623: 859623: 859623: 859623: 859623: 859623: _Vector_base(const allocator_type& __a) noexcept 859623: : _M_impl(__a) { } 859623: 859623: 859623: 859623: 859623: _Vector_base(size_t __n) 859623: : _M_impl() 859623: { _M_create_storage(__n); } 859623: 859623: 859623: 859623: _Vector_base(size_t __n, const allocator_type& __a) 859623: : _M_impl(__a) 859623: { _M_create_storage(__n); } 859623: 859623: 859623: _Vector_base(_Vector_base&&) = default; 859623: 859623: 859623: 859623: 859623: _Vector_base(_Tp_alloc_type&& __a) noexcept 859623: : _M_impl(std::move(__a)) { } 859623: 859623: 859623: _Vector_base(_Vector_base&& __x, const allocator_type& __a) 859623: : _M_impl(__a) 859623: { 859623: if (__x.get_allocator() == __a) 859623: this->_M_impl._M_swap_data(__x._M_impl); 859623: else 859623: { 859623: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 859623: _M_create_storage(__n); 859623: } 859623: } 859623: 859623: 859623: 859623: _Vector_base(const allocator_type& __a, _Vector_base&& __x) 859623: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) 859623: { } 859623: 859623: 859623: 859623: ~_Vector_base() noexcept 859623: { 859623: _M_deallocate(_M_impl._M_start, 859623: _M_impl._M_end_of_storage - _M_impl._M_start); 859623: } 859623: 859623: public: 859623: _Vector_impl _M_impl; 859623: 859623: 859623: pointer 859623: _M_allocate(size_t __n) 859623: { 859623: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 859623: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); 859623: } 859623: 859623: 859623: void 859623: _M_deallocate(pointer __p, size_t __n) 859623: { 859623: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 859623: if (__p) 859623: _Tr::deallocate(_M_impl, __p, __n); 859623: } 859623: 859623: protected: 859623: 859623: 859623: void 859623: _M_create_storage(size_t __n) 859623: { 859623: this->_M_impl._M_start = this->_M_allocate(__n); 859623: this->_M_impl._M_finish = this->_M_impl._M_start; 859623: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 859623: } 859623: # 432 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: }; 859623: # 457 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template > 859623: class vector : protected _Vector_base<_Tp, _Alloc> 859623: { 859623: # 470 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: static_assert(is_same::type, _Tp>::value, 859623: "std::vector must have a non-const, non-volatile value_type"); 859623: 859623: static_assert(is_same::value, 859623: "std::vector must have the same value_type as its allocator"); 859623: 859623: 859623: 859623: typedef _Vector_base<_Tp, _Alloc> _Base; 859623: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 859623: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 859623: 859623: public: 859623: typedef _Tp value_type; 859623: typedef typename _Base::pointer pointer; 859623: typedef typename _Alloc_traits::const_pointer const_pointer; 859623: typedef typename _Alloc_traits::reference reference; 859623: typedef typename _Alloc_traits::const_reference const_reference; 859623: typedef __gnu_cxx::__normal_iterator iterator; 859623: typedef __gnu_cxx::__normal_iterator 859623: const_iterator; 859623: typedef std::reverse_iterator const_reverse_iterator; 859623: typedef std::reverse_iterator reverse_iterator; 859623: typedef size_t size_type; 859623: typedef ptrdiff_t difference_type; 859623: typedef _Alloc allocator_type; 859623: 859623: private: 859623: 859623: static constexpr bool 859623: _S_nothrow_relocate(true_type) 859623: { 859623: return noexcept(std::__relocate_a(std::declval(), 859623: std::declval(), 859623: std::declval(), 859623: std::declval<_Tp_alloc_type&>())); 859623: } 859623: 859623: static constexpr bool 859623: _S_nothrow_relocate(false_type) 859623: { return false; } 859623: 859623: static constexpr bool 859623: _S_use_relocate() 859623: { 859623: 859623: 859623: 859623: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); 859623: } 859623: 859623: static pointer 859623: _S_do_relocate(pointer __first, pointer __last, pointer __result, 859623: _Tp_alloc_type& __alloc, true_type) noexcept 859623: { 859623: return std::__relocate_a(__first, __last, __result, __alloc); 859623: } 859623: 859623: static pointer 859623: _S_do_relocate(pointer, pointer, pointer __result, 859623: _Tp_alloc_type&, false_type) noexcept 859623: { return __result; } 859623: 859623: static pointer 859623: _S_relocate(pointer __first, pointer __last, pointer __result, 859623: _Tp_alloc_type& __alloc) noexcept 859623: { 859623: 859623: 859623: 859623: 859623: using __do_it = __bool_constant<_S_use_relocate()>; 859623: return _S_do_relocate(__first, __last, __result, __alloc, __do_it{}); 859623: 859623: } 859623: 859623: 859623: protected: 859623: using _Base::_M_allocate; 859623: using _Base::_M_deallocate; 859623: using _Base::_M_impl; 859623: using _Base::_M_get_Tp_allocator; 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: vector() = default; 859623: # 570 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: explicit 859623: 859623: vector(const allocator_type& __a) noexcept 859623: : _Base(__a) { } 859623: # 584 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: explicit 859623: 859623: vector(size_type __n, const allocator_type& __a = allocator_type()) 859623: : _Base(_S_check_init_len(__n, __a), __a) 859623: { _M_default_initialize(__n); } 859623: # 598 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: vector(size_type __n, const value_type& __value, 859623: const allocator_type& __a = allocator_type()) 859623: : _Base(_S_check_init_len(__n, __a), __a) 859623: { _M_fill_initialize(__n, __value); } 859623: # 630 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: vector(const vector& __x) 859623: : _Base(__x.size(), 859623: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 859623: { 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_copy_a(__x.begin(), __x.end(), 859623: this->_M_impl._M_start, 859623: _M_get_Tp_allocator()); 859623: } 859623: # 650 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: vector(vector&&) noexcept = default; 859623: 859623: 859623: 859623: vector(const vector& __x, const __type_identity_t& __a) 859623: : _Base(__x.size(), __a) 859623: { 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_copy_a(__x.begin(), __x.end(), 859623: this->_M_impl._M_start, 859623: _M_get_Tp_allocator()); 859623: } 859623: 859623: private: 859623: 859623: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept 859623: : _Base(__m, std::move(__rv)) 859623: { } 859623: 859623: 859623: vector(vector&& __rv, const allocator_type& __m, false_type) 859623: : _Base(__m) 859623: { 859623: if (__rv.get_allocator() == __m) 859623: this->_M_impl._M_swap_data(__rv._M_impl); 859623: else if (!__rv.empty()) 859623: { 859623: this->_M_create_storage(__rv.size()); 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_move_a(__rv.begin(), __rv.end(), 859623: this->_M_impl._M_start, 859623: _M_get_Tp_allocator()); 859623: __rv.clear(); 859623: } 859623: } 859623: 859623: public: 859623: 859623: 859623: vector(vector&& __rv, const __type_identity_t& __m) 859623: noexcept( noexcept( 859623: vector(std::declval(), std::declval(), 859623: std::declval())) ) 859623: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) 859623: { } 859623: # 707 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: vector(initializer_list __l, 859623: const allocator_type& __a = allocator_type()) 859623: : _Base(__a) 859623: { 859623: _M_range_initialize_n(__l.begin(), __l.end(), __l.size()); 859623: } 859623: # 733 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template> 859623: 859623: vector(_InputIterator __first, _InputIterator __last, 859623: const allocator_type& __a = allocator_type()) 859623: : _Base(__a) 859623: { 859623: # 751 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: _M_range_initialize(__first, __last, 859623: std::__iterator_category(__first)); 859623: } 859623: # 799 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: ~vector() noexcept 859623: { 859623: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: ; 859623: } 859623: # 816 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: vector& 859623: operator=(const vector& __x); 859623: # 831 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: vector& 859623: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 859623: { 859623: constexpr bool __move_storage = 859623: _Alloc_traits::_S_propagate_on_move_assign() 859623: || _Alloc_traits::_S_always_equal(); 859623: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 859623: return *this; 859623: } 859623: # 853 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: vector& 859623: operator=(initializer_list __l) 859623: { 859623: this->_M_assign_aux(__l.begin(), __l.end(), 859623: random_access_iterator_tag()); 859623: return *this; 859623: } 859623: # 873 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: assign(size_type __n, const value_type& __val) 859623: { _M_fill_assign(__n, __val); } 859623: # 891 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template> 859623: 859623: void 859623: assign(_InputIterator __first, _InputIterator __last) 859623: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 859623: # 920 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: assign(initializer_list __l) 859623: { 859623: this->_M_assign_aux(__l.begin(), __l.end(), 859623: random_access_iterator_tag()); 859623: } 859623: # 988 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: using _Base::get_allocator; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: iterator 859623: begin() noexcept 859623: { return iterator(this->_M_impl._M_start); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: begin() const noexcept 859623: { return const_iterator(this->_M_impl._M_start); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: iterator 859623: end() noexcept 859623: { return iterator(this->_M_impl._M_finish); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: end() const noexcept 859623: { return const_iterator(this->_M_impl._M_finish); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: rbegin() noexcept 859623: { return reverse_iterator(end()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: rbegin() const noexcept 859623: { return const_reverse_iterator(end()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: rend() noexcept 859623: { return reverse_iterator(begin()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: rend() const noexcept 859623: { return const_reverse_iterator(begin()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: cbegin() const noexcept 859623: { return const_iterator(this->_M_impl._M_start); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: cend() const noexcept 859623: { return const_iterator(this->_M_impl._M_finish); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: crbegin() const noexcept 859623: { return const_reverse_iterator(end()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: crend() const noexcept 859623: { return const_reverse_iterator(begin()); } 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: size() const noexcept 859623: { 859623: ptrdiff_t __dif = this->_M_impl._M_finish - this->_M_impl._M_start; 859623: if (__dif < 0) 859623: __builtin_unreachable (); 859623: return size_type(__dif); 859623: } 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: max_size() const noexcept 859623: { return _S_max_size(_M_get_Tp_allocator()); } 859623: # 1141 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: resize(size_type __new_size) 859623: { 859623: if (__new_size > size()) 859623: _M_default_append(__new_size - size()); 859623: else if (__new_size < size()) 859623: _M_erase_at_end(this->_M_impl._M_start + __new_size); 859623: } 859623: # 1162 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: resize(size_type __new_size, const value_type& __x) 859623: { 859623: if (__new_size > size()) 859623: _M_fill_insert(end(), __new_size - size(), __x); 859623: else if (__new_size < size()) 859623: _M_erase_at_end(this->_M_impl._M_start + __new_size); 859623: } 859623: # 1196 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: shrink_to_fit() 859623: { _M_shrink_to_fit(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: capacity() const noexcept 859623: { 859623: ptrdiff_t __dif = this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_start; 859623: if (__dif < 0) 859623: __builtin_unreachable (); 859623: return size_type(__dif); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: bool 859623: empty() const noexcept 859623: { return begin() == end(); } 859623: # 1243 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: reserve(size_type __n); 859623: # 1259 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: [[__nodiscard__]] 859623: reference 859623: operator[](size_type __n) noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 859623: return *(this->_M_impl._M_start + __n); 859623: } 859623: # 1278 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: [[__nodiscard__]] 859623: const_reference 859623: operator[](size_type __n) const noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 859623: return *(this->_M_impl._M_start + __n); 859623: } 859623: 859623: protected: 859623: 859623: 859623: void 859623: _M_range_check(size_type __n) const 859623: { 859623: if (__n >= this->size()) 859623: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 859623: 859623: , 859623: __n, this->size()); 859623: } 859623: 859623: public: 859623: # 1311 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: [[__nodiscard__]] 859623: reference 859623: at(size_type __n) 859623: { 859623: _M_range_check(__n); 859623: return (*this)[__n]; 859623: } 859623: # 1330 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: [[__nodiscard__]] 859623: const_reference 859623: at(size_type __n) const 859623: { 859623: _M_range_check(__n); 859623: return (*this)[__n]; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reference 859623: front() noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *begin(); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: front() const noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *begin(); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: reference 859623: back() noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *(end() - 1); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: back() const noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *(end() - 1); 859623: } 859623: # 1393 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: [[__nodiscard__]] 859623: _Tp* 859623: data() noexcept 859623: { return _M_data_ptr(this->_M_impl._M_start); } 859623: 859623: [[__nodiscard__]] 859623: const _Tp* 859623: data() const noexcept 859623: { return _M_data_ptr(this->_M_impl._M_start); } 859623: # 1414 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: push_back(const value_type& __x) 859623: { 859623: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 859623: { 859623: ; 859623: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 859623: __x); 859623: ++this->_M_impl._M_finish; 859623: ; 859623: } 859623: else 859623: _M_realloc_append(__x); 859623: } 859623: 859623: 859623: 859623: void 859623: push_back(value_type&& __x) 859623: { emplace_back(std::move(__x)); } 859623: 859623: template 859623: 859623: 859623: 859623: 859623: void 859623: 859623: emplace_back(_Args&&... __args); 859623: # 1455 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: pop_back() noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: --this->_M_impl._M_finish; 859623: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 859623: ; 859623: } 859623: # 1478 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template 859623: 859623: iterator 859623: emplace(const_iterator __position, _Args&&... __args) 859623: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } 859623: # 1495 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: iterator 859623: insert(const_iterator __position, const value_type& __x); 859623: # 1526 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: iterator 859623: insert(const_iterator __position, value_type&& __x) 859623: { return _M_insert_rval(__position, std::move(__x)); } 859623: # 1544 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: iterator 859623: insert(const_iterator __position, initializer_list __l) 859623: { 859623: auto __offset = __position - cbegin(); 859623: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), 859623: std::random_access_iterator_tag()); 859623: return begin() + __offset; 859623: } 859623: # 1570 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: iterator 859623: insert(const_iterator __position, size_type __n, const value_type& __x) 859623: { 859623: difference_type __offset = __position - cbegin(); 859623: _M_fill_insert(begin() + __offset, __n, __x); 859623: return begin() + __offset; 859623: } 859623: # 1613 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template> 859623: 859623: iterator 859623: insert(const_iterator __position, _InputIterator __first, 859623: _InputIterator __last) 859623: { 859623: difference_type __offset = __position - cbegin(); 859623: _M_range_insert(begin() + __offset, __first, __last, 859623: std::__iterator_category(__first)); 859623: return begin() + __offset; 859623: } 859623: # 1789 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: iterator 859623: 859623: erase(const_iterator __position) 859623: { return _M_erase(begin() + (__position - cbegin())); } 859623: # 1817 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: iterator 859623: 859623: erase(const_iterator __first, const_iterator __last) 859623: { 859623: const auto __beg = begin(); 859623: const auto __cbeg = cbegin(); 859623: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); 859623: } 859623: # 1842 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: void 859623: swap(vector& __x) noexcept 859623: { 859623: 859623: 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) 859623: ; 859623: 859623: this->_M_impl._M_swap_data(__x._M_impl); 859623: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 859623: __x._M_get_Tp_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: clear() noexcept 859623: { _M_erase_at_end(this->_M_impl._M_start); } 859623: 859623: private: 859623: 859623: struct _Guard_alloc 859623: { 859623: pointer _M_storage; 859623: size_type _M_len; 859623: _Base& _M_vect; 859623: 859623: 859623: _Guard_alloc(pointer __s, size_type __l, _Base& __vect) 859623: : _M_storage(__s), _M_len(__l), _M_vect(__vect) 859623: { } 859623: 859623: 859623: ~_Guard_alloc() 859623: { 859623: if (_M_storage) 859623: _M_vect._M_deallocate(_M_storage, _M_len); 859623: } 859623: 859623: 859623: pointer 859623: _M_release() 859623: { 859623: pointer __res = _M_storage; 859623: _M_storage = pointer(); 859623: return __res; 859623: } 859623: 859623: private: 859623: _Guard_alloc(const _Guard_alloc&); 859623: }; 859623: 859623: protected: 859623: 859623: 859623: 859623: 859623: template 859623: 859623: pointer 859623: _M_allocate_and_copy(size_type __n, 859623: _ForwardIterator __first, _ForwardIterator __last) 859623: { 859623: _Guard_alloc __guard(this->_M_allocate(__n), __n, *this); 859623: std::__uninitialized_copy_a 859623: (__first, __last, __guard._M_storage, _M_get_Tp_allocator()); 859623: return __guard._M_release(); 859623: } 859623: # 1948 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template 859623: 859623: void 859623: _M_range_initialize(_InputIterator __first, _InputIterator __last, 859623: std::input_iterator_tag) 859623: { 859623: if (true) { 859623: for (; __first != __last; ++__first) 859623: 859623: emplace_back(*__first); 859623: 859623: 859623: 859623: } if (false) { 859623: clear(); 859623: ; 859623: } 859623: } 859623: 859623: 859623: template 859623: 859623: void 859623: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, 859623: std::forward_iterator_tag) 859623: { 859623: _M_range_initialize_n(__first, __last, 859623: std::distance(__first, __last)); 859623: } 859623: 859623: template 859623: 859623: void 859623: _M_range_initialize_n(_Iterator __first, _Sentinel __last, 859623: size_type __n) 859623: { 859623: pointer __start = 859623: this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); 859623: this->_M_impl._M_start = this->_M_impl._M_finish = __start; 859623: this->_M_impl._M_end_of_storage = __start + __n; 859623: this->_M_impl._M_finish 859623: = std::__uninitialized_copy_a(std::move(__first), __last, 859623: __start, _M_get_Tp_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: void 859623: _M_fill_initialize(size_type __n, const value_type& __value) 859623: { 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 859623: _M_get_Tp_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: void 859623: _M_default_initialize(size_type __n) 859623: { 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 859623: _M_get_Tp_allocator()); 859623: } 859623: # 2023 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template 859623: 859623: void 859623: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 859623: { _M_fill_assign(__n, __val); } 859623: 859623: 859623: template 859623: 859623: void 859623: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 859623: __false_type) 859623: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 859623: 859623: 859623: template 859623: 859623: void 859623: _M_assign_aux(_InputIterator __first, _InputIterator __last, 859623: std::input_iterator_tag); 859623: 859623: 859623: template 859623: 859623: void 859623: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 859623: std::forward_iterator_tag); 859623: 859623: 859623: 859623: 859623: void 859623: _M_fill_assign(size_type __n, const value_type& __val); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: 859623: void 859623: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, 859623: __true_type) 859623: { _M_fill_insert(__pos, __n, __val); } 859623: 859623: 859623: template 859623: 859623: void 859623: _M_insert_dispatch(iterator __pos, _InputIterator __first, 859623: _InputIterator __last, __false_type) 859623: { 859623: _M_range_insert(__pos, __first, __last, 859623: std::__iterator_category(__first)); 859623: } 859623: 859623: 859623: template 859623: 859623: void 859623: _M_range_insert(iterator __pos, _InputIterator __first, 859623: _InputIterator __last, std::input_iterator_tag); 859623: 859623: 859623: template 859623: 859623: void 859623: _M_range_insert(iterator __pos, _ForwardIterator __first, 859623: _ForwardIterator __last, std::forward_iterator_tag); 859623: 859623: 859623: 859623: 859623: void 859623: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); 859623: 859623: 859623: 859623: 859623: void 859623: _M_default_append(size_type __n); 859623: 859623: 859623: bool 859623: _M_shrink_to_fit(); 859623: # 2125 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: struct _Temporary_value 859623: { 859623: template 859623: explicit 859623: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) 859623: { 859623: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), 859623: std::forward<_Args>(__args)...); 859623: } 859623: 859623: 859623: ~_Temporary_value() 859623: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } 859623: 859623: value_type& 859623: _M_val() noexcept { return _M_storage._M_val; } 859623: 859623: private: 859623: _Tp* 859623: _M_ptr() noexcept { return std::__addressof(_M_storage._M_val); } 859623: 859623: union _Storage 859623: { 859623: constexpr _Storage() : _M_byte() { } 859623: ~_Storage() { } 859623: _Storage& operator=(const _Storage&) = delete; 859623: unsigned char _M_byte; 859623: _Tp _M_val; 859623: }; 859623: 859623: vector* _M_this; 859623: _Storage _M_storage; 859623: }; 859623: 859623: 859623: 859623: template 859623: 859623: void 859623: _M_insert_aux(iterator __position, _Arg&& __arg); 859623: 859623: template 859623: 859623: void 859623: _M_realloc_insert(iterator __position, _Args&&... __args); 859623: 859623: template 859623: 859623: void 859623: _M_realloc_append(_Args&&... __args); 859623: 859623: 859623: 859623: iterator 859623: _M_insert_rval(const_iterator __position, value_type&& __v); 859623: 859623: 859623: template 859623: 859623: iterator 859623: _M_emplace_aux(const_iterator __position, _Args&&... __args); 859623: 859623: 859623: 859623: iterator 859623: _M_emplace_aux(const_iterator __position, value_type&& __v) 859623: { return _M_insert_rval(__position, std::move(__v)); } 859623: 859623: 859623: 859623: 859623: size_type 859623: _M_check_len(size_type __n, const char* __s) const 859623: { 859623: if (max_size() - size() < __n) 859623: __throw_length_error((__s)); 859623: 859623: const size_type __len = size() + (std::max)(size(), __n); 859623: return (__len < size() || __len > max_size()) ? max_size() : __len; 859623: } 859623: 859623: 859623: static size_type 859623: _S_check_init_len(size_type __n, const allocator_type& __a) 859623: { 859623: if (__n > _S_max_size(_Tp_alloc_type(__a))) 859623: __throw_length_error( 859623: ("cannot create std::vector larger than max_size()")); 859623: return __n; 859623: } 859623: 859623: static size_type 859623: _S_max_size(const _Tp_alloc_type& __a) noexcept 859623: { 859623: 859623: 859623: 859623: const size_t __diffmax 859623: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 859623: const size_t __allocmax = _Alloc_traits::max_size(__a); 859623: return (std::min)(__diffmax, __allocmax); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: _M_erase_at_end(pointer __pos) noexcept 859623: { 859623: if (size_type __n = this->_M_impl._M_finish - __pos) 859623: { 859623: std::_Destroy(__pos, this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: this->_M_impl._M_finish = __pos; 859623: ; 859623: } 859623: } 859623: 859623: 859623: iterator 859623: _M_erase(iterator __position); 859623: 859623: 859623: iterator 859623: _M_erase(iterator __first, iterator __last); 859623: 859623: 859623: private: 859623: 859623: 859623: 859623: 859623: void 859623: _M_move_assign(vector&& __x, true_type) noexcept 859623: { 859623: vector __tmp(get_allocator()); 859623: this->_M_impl._M_swap_data(__x._M_impl); 859623: __tmp._M_impl._M_swap_data(__x._M_impl); 859623: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); 859623: } 859623: 859623: 859623: 859623: 859623: void 859623: _M_move_assign(vector&& __x, false_type) 859623: { 859623: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) 859623: _M_move_assign(std::move(__x), true_type()); 859623: else 859623: { 859623: 859623: 859623: this->_M_assign_aux(std::make_move_iterator(__x.begin()), 859623: std::make_move_iterator(__x.end()), 859623: std::random_access_iterator_tag()); 859623: __x.clear(); 859623: } 859623: } 859623: 859623: 859623: template 859623: 859623: _Up* 859623: _M_data_ptr(_Up* __ptr) const noexcept 859623: { return __ptr; } 859623: 859623: 859623: template 859623: 859623: typename std::pointer_traits<_Ptr>::element_type* 859623: _M_data_ptr(_Ptr __ptr) const 859623: { return empty() ? nullptr : std::__to_address(__ptr); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: }; 859623: # 2335 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template 859623: [[__nodiscard__]] 859623: inline bool 859623: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 859623: { return (__x.size() == __y.size() 859623: && std::equal(__x.begin(), __x.end(), __y.begin())); } 859623: # 2375 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: template 859623: [[__nodiscard__]] inline bool 859623: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 859623: { return std::lexicographical_compare(__x.begin(), __x.end(), 859623: __y.begin(), __y.end()); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] inline bool 859623: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 859623: { return !(__x == __y); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] inline bool 859623: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 859623: { return __y < __x; } 859623: 859623: 859623: template 859623: [[__nodiscard__]] inline bool 859623: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 859623: { return !(__y < __x); } 859623: 859623: 859623: template 859623: [[__nodiscard__]] inline bool 859623: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 859623: { return !(__x < __y); } 859623: 859623: 859623: 859623: template 859623: 859623: inline void 859623: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) 859623: noexcept(noexcept(__x.swap(__y))) 859623: { __x.swap(__y); } 859623: 859623: 859623: # 2430 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_vector.h" 3 859623: 859623: } 859623: # 69 "/usr/arm-linux-gnueabi/include/c++/15/vector" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 1 3 859623: # 68 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: typedef unsigned long _Bit_type; 859623: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; 859623: 859623: __attribute__((__nonnull__)) 859623: 859623: void 859623: __fill_bvector_n(_Bit_type*, size_t, bool) noexcept; 859623: 859623: 859623: 859623: struct _Bit_reference 859623: { 859623: private: 859623: template friend class vector; 859623: friend struct _Bit_iterator; 859623: friend struct _Bit_const_iterator; 859623: 859623: 859623: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } 859623: 859623: _Bit_type * _M_p; 859623: _Bit_type _M_mask; 859623: 859623: 859623: _Bit_reference(_Bit_type * __x, _Bit_type __y) 859623: : _M_p(__x), _M_mask(__y) { } 859623: 859623: public: 859623: 859623: _Bit_reference(const _Bit_reference&) = default; 859623: 859623: 859623: [[__nodiscard__]] 859623: operator bool() const noexcept 859623: { return !!(*_M_p & _M_mask); } 859623: 859623: 859623: _Bit_reference& 859623: operator=(bool __x) noexcept 859623: { 859623: if (__x) 859623: *_M_p |= _M_mask; 859623: else 859623: *_M_p &= ~_M_mask; 859623: return *this; 859623: } 859623: # 131 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: 859623: _Bit_reference& 859623: operator=(const _Bit_reference& __x) noexcept 859623: { return *this = bool(__x); } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: operator==(const _Bit_reference& __x) const 859623: { return bool(*this) == bool(__x); } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: operator<(const _Bit_reference& __x) const 859623: { return !bool(*this) && bool(__x); } 859623: 859623: 859623: void 859623: flip() noexcept 859623: { *_M_p ^= _M_mask; } 859623: 859623: 859623: 859623: friend void 859623: swap(_Bit_reference __x, _Bit_reference __y) noexcept 859623: { 859623: bool __tmp = __x; 859623: __x = __y; 859623: __y = __tmp; 859623: } 859623: 859623: 859623: friend void 859623: swap(_Bit_reference __x, bool& __y) noexcept 859623: { 859623: bool __tmp = __x; 859623: __x = __y; 859623: __y = __tmp; 859623: } 859623: 859623: 859623: friend void 859623: swap(bool& __x, _Bit_reference __y) noexcept 859623: { 859623: bool __tmp = __x; 859623: __x = __y; 859623: __y = __tmp; 859623: } 859623: 859623: }; 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: struct _Bit_iterator_base 859623: : public std::iterator 859623: { 859623: _Bit_type * _M_p; 859623: unsigned int _M_offset; 859623: 859623: inline __attribute__((__always_inline__)) 859623: void 859623: _M_assume_normalized() const 859623: { 859623: 859623: unsigned int __ofst = _M_offset; 859623: __attribute__ ((__assume__ (__ofst < unsigned(_S_word_bit)))); 859623: 859623: } 859623: 859623: 859623: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) 859623: : _M_p(__x), _M_offset(__y) { } 859623: 859623: 859623: void 859623: _M_bump_up() 859623: { 859623: _M_assume_normalized(); 859623: if (_M_offset++ == int(_S_word_bit) - 1) 859623: { 859623: _M_offset = 0; 859623: ++_M_p; 859623: } 859623: } 859623: 859623: 859623: void 859623: _M_bump_down() 859623: { 859623: _M_assume_normalized(); 859623: if (_M_offset-- == 0) 859623: { 859623: _M_offset = int(_S_word_bit) - 1; 859623: --_M_p; 859623: } 859623: } 859623: 859623: 859623: void 859623: _M_incr(ptrdiff_t __i) 859623: { 859623: _M_assume_normalized(); 859623: difference_type __n = __i + _M_offset; 859623: _M_p += __n / int(_S_word_bit); 859623: __n = __n % int(_S_word_bit); 859623: if (__n < 0) 859623: { 859623: __n += int(_S_word_bit); 859623: --_M_p; 859623: } 859623: _M_offset = static_cast(__n); 859623: } 859623: 859623: [[__nodiscard__]] 859623: friend bool 859623: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 859623: { 859623: __x._M_assume_normalized(); 859623: __y._M_assume_normalized(); 859623: return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; 859623: } 859623: # 266 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: [[__nodiscard__]] 859623: friend bool 859623: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 859623: { 859623: __x._M_assume_normalized(); 859623: __y._M_assume_normalized(); 859623: return __x._M_p < __y._M_p 859623: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); 859623: } 859623: 859623: [[__nodiscard__]] 859623: friend bool 859623: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 859623: { return !(__x == __y); } 859623: 859623: [[__nodiscard__]] 859623: friend bool 859623: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 859623: { return __y < __x; } 859623: 859623: [[__nodiscard__]] 859623: friend bool 859623: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 859623: { return !(__y < __x); } 859623: 859623: [[__nodiscard__]] 859623: friend bool 859623: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 859623: { return !(__x < __y); } 859623: 859623: 859623: friend ptrdiff_t 859623: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 859623: { 859623: __x._M_assume_normalized(); 859623: __y._M_assume_normalized(); 859623: return (int(_S_word_bit) * (__x._M_p - __y._M_p) 859623: + __x._M_offset - __y._M_offset); 859623: } 859623: }; 859623: #pragma GCC diagnostic pop 859623: 859623: struct _Bit_iterator : public _Bit_iterator_base 859623: { 859623: typedef _Bit_reference reference; 859623: 859623: 859623: 859623: typedef _Bit_reference* pointer; 859623: 859623: typedef _Bit_iterator iterator; 859623: 859623: 859623: _Bit_iterator() : _Bit_iterator_base(0, 0) { } 859623: 859623: 859623: _Bit_iterator(_Bit_type * __x, unsigned int __y) 859623: : _Bit_iterator_base(__x, __y) { } 859623: 859623: 859623: iterator 859623: _M_const_cast() const 859623: { return *this; } 859623: 859623: [[__nodiscard__]] 859623: reference 859623: operator*() const 859623: { 859623: _M_assume_normalized(); 859623: return reference(_M_p, 1UL << _M_offset); 859623: } 859623: 859623: 859623: iterator& 859623: operator++() 859623: { 859623: _M_bump_up(); 859623: return *this; 859623: } 859623: 859623: 859623: iterator 859623: operator++(int) 859623: { 859623: iterator __tmp = *this; 859623: _M_bump_up(); 859623: return __tmp; 859623: } 859623: 859623: 859623: iterator& 859623: operator--() 859623: { 859623: _M_bump_down(); 859623: return *this; 859623: } 859623: 859623: 859623: iterator 859623: operator--(int) 859623: { 859623: iterator __tmp = *this; 859623: _M_bump_down(); 859623: return __tmp; 859623: } 859623: 859623: 859623: iterator& 859623: operator+=(difference_type __i) 859623: { 859623: _M_incr(__i); 859623: return *this; 859623: } 859623: 859623: 859623: iterator& 859623: operator-=(difference_type __i) 859623: { 859623: *this += -__i; 859623: return *this; 859623: } 859623: 859623: [[__nodiscard__]] 859623: reference 859623: operator[](difference_type __i) const 859623: { return *(*this + __i); } 859623: 859623: [[__nodiscard__]] 859623: friend iterator 859623: operator+(const iterator& __x, difference_type __n) 859623: { 859623: iterator __tmp = __x; 859623: __tmp += __n; 859623: return __tmp; 859623: } 859623: 859623: [[__nodiscard__]] 859623: friend iterator 859623: operator+(difference_type __n, const iterator& __x) 859623: { return __x + __n; } 859623: 859623: [[__nodiscard__]] 859623: friend iterator 859623: operator-(const iterator& __x, difference_type __n) 859623: { 859623: iterator __tmp = __x; 859623: __tmp -= __n; 859623: return __tmp; 859623: } 859623: }; 859623: 859623: struct _Bit_const_iterator : public _Bit_iterator_base 859623: { 859623: typedef bool reference; 859623: typedef bool const_reference; 859623: 859623: 859623: 859623: typedef const bool* pointer; 859623: 859623: typedef _Bit_const_iterator const_iterator; 859623: 859623: 859623: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } 859623: 859623: 859623: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) 859623: : _Bit_iterator_base(__x, __y) { } 859623: 859623: 859623: _Bit_const_iterator(const _Bit_iterator& __x) 859623: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } 859623: 859623: 859623: _Bit_iterator 859623: _M_const_cast() const 859623: { return _Bit_iterator(_M_p, _M_offset); } 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: operator*() const 859623: { 859623: _M_assume_normalized(); 859623: return _Bit_reference(_M_p, 1UL << _M_offset); 859623: } 859623: 859623: 859623: const_iterator& 859623: operator++() 859623: { 859623: _M_bump_up(); 859623: return *this; 859623: } 859623: 859623: 859623: const_iterator 859623: operator++(int) 859623: { 859623: const_iterator __tmp = *this; 859623: _M_bump_up(); 859623: return __tmp; 859623: } 859623: 859623: 859623: const_iterator& 859623: operator--() 859623: { 859623: _M_bump_down(); 859623: return *this; 859623: } 859623: 859623: 859623: const_iterator 859623: operator--(int) 859623: { 859623: const_iterator __tmp = *this; 859623: _M_bump_down(); 859623: return __tmp; 859623: } 859623: 859623: 859623: const_iterator& 859623: operator+=(difference_type __i) 859623: { 859623: _M_incr(__i); 859623: return *this; 859623: } 859623: 859623: 859623: const_iterator& 859623: operator-=(difference_type __i) 859623: { 859623: *this += -__i; 859623: return *this; 859623: } 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: operator[](difference_type __i) const 859623: { return *(*this + __i); } 859623: 859623: [[__nodiscard__]] 859623: friend const_iterator 859623: operator+(const const_iterator& __x, difference_type __n) 859623: { 859623: const_iterator __tmp = __x; 859623: __tmp += __n; 859623: return __tmp; 859623: } 859623: 859623: [[__nodiscard__]] 859623: friend const_iterator 859623: operator-(const const_iterator& __x, difference_type __n) 859623: { 859623: const_iterator __tmp = __x; 859623: __tmp -= __n; 859623: return __tmp; 859623: } 859623: 859623: [[__nodiscard__]] 859623: friend const_iterator 859623: operator+(difference_type __n, const const_iterator& __x) 859623: { return __x + __n; } 859623: }; 859623: 859623: template 859623: struct _Bvector_base 859623: { 859623: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 859623: rebind<_Bit_type>::other _Bit_alloc_type; 859623: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> 859623: _Bit_alloc_traits; 859623: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; 859623: 859623: struct _Bvector_impl_data 859623: { 859623: 859623: _Bit_iterator _M_start; 859623: # 553 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: _Bit_iterator _M_finish; 859623: _Bit_pointer _M_end_of_storage; 859623: 859623: 859623: _Bvector_impl_data() noexcept 859623: : _M_start(), _M_finish(), _M_end_of_storage() 859623: { } 859623: 859623: 859623: _Bvector_impl_data(const _Bvector_impl_data&) = default; 859623: 859623: _Bvector_impl_data& 859623: operator=(const _Bvector_impl_data&) = default; 859623: 859623: 859623: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept 859623: : _Bvector_impl_data(__x) 859623: { __x._M_reset(); } 859623: 859623: 859623: void 859623: _M_move_data(_Bvector_impl_data&& __x) noexcept 859623: { 859623: *this = __x; 859623: __x._M_reset(); 859623: } 859623: 859623: 859623: 859623: void 859623: _M_reset() noexcept 859623: { *this = _Bvector_impl_data(); } 859623: 859623: 859623: void 859623: _M_swap_data(_Bvector_impl_data& __x) noexcept 859623: { 859623: 859623: 859623: std::swap(*this, __x); 859623: } 859623: }; 859623: 859623: struct _Bvector_impl 859623: : public _Bit_alloc_type, public _Bvector_impl_data 859623: { 859623: 859623: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) 859623: 859623: 859623: 859623: 859623: : _Bit_alloc_type() 859623: { } 859623: 859623: 859623: _Bvector_impl(const _Bit_alloc_type& __a) noexcept 859623: : _Bit_alloc_type(__a) 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: _Bvector_impl(_Bvector_impl&& __x) noexcept 859623: : _Bit_alloc_type(std::move(__x)), _Bvector_impl_data(std::move(__x)) 859623: { } 859623: 859623: 859623: _Bvector_impl(_Bit_alloc_type&& __a, _Bvector_impl&& __x) noexcept 859623: : _Bit_alloc_type(std::move(__a)), _Bvector_impl_data(std::move(__x)) 859623: { } 859623: 859623: 859623: 859623: _Bit_type* 859623: _M_end_addr() const noexcept 859623: { 859623: if (this->_M_end_of_storage) 859623: return std::__addressof(this->_M_end_of_storage[-1]) + 1; 859623: return 0; 859623: } 859623: }; 859623: 859623: public: 859623: typedef _Alloc allocator_type; 859623: 859623: 859623: _Bit_alloc_type& 859623: _M_get_Bit_allocator() noexcept 859623: { return this->_M_impl; } 859623: 859623: 859623: const _Bit_alloc_type& 859623: _M_get_Bit_allocator() const noexcept 859623: { return this->_M_impl; } 859623: 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return allocator_type(_M_get_Bit_allocator()); } 859623: 859623: 859623: _Bvector_base() = default; 859623: 859623: 859623: 859623: 859623: 859623: _Bvector_base(const allocator_type& __a) 859623: : _M_impl(_Bit_alloc_type(__a)) { } 859623: 859623: 859623: _Bvector_base(_Bvector_base&&) = default; 859623: 859623: 859623: _Bvector_base(_Bvector_base&& __x, const allocator_type& __a) noexcept 859623: : _M_impl(_Bit_alloc_type(__a), std::move(__x._M_impl)) 859623: { } 859623: 859623: 859623: 859623: ~_Bvector_base() 859623: { this->_M_deallocate(); } 859623: 859623: protected: 859623: _Bvector_impl _M_impl; 859623: 859623: 859623: _Bit_pointer 859623: _M_allocate(size_t __n) 859623: { 859623: _Bit_pointer __p = _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); 859623: # 694 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: return __p; 859623: } 859623: 859623: 859623: void 859623: _M_deallocate() 859623: { 859623: if (_M_impl._M_start._M_p) 859623: { 859623: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; 859623: _Bit_alloc_traits::deallocate(_M_impl, 859623: _M_impl._M_end_of_storage - __n, 859623: __n); 859623: _M_impl._M_reset(); 859623: } 859623: } 859623: 859623: 859623: 859623: void 859623: _M_move_data(_Bvector_base&& __x) noexcept 859623: { _M_impl._M_move_data(std::move(__x._M_impl)); } 859623: 859623: 859623: constexpr 859623: static size_t 859623: _S_nword(size_t __n) 859623: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } 859623: }; 859623: # 745 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: template 859623: class vector : protected _Bvector_base<_Alloc> 859623: { 859623: typedef _Bvector_base<_Alloc> _Base; 859623: typedef typename _Base::_Bit_pointer _Bit_pointer; 859623: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; 859623: 859623: 859623: friend struct std::hash; 859623: 859623: 859623: 859623: 859623: 859623: 859623: public: 859623: typedef bool value_type; 859623: typedef size_t size_type; 859623: typedef ptrdiff_t difference_type; 859623: typedef _Bit_reference reference; 859623: typedef bool const_reference; 859623: typedef _Bit_reference* pointer; 859623: typedef const bool* const_pointer; 859623: typedef _Bit_iterator iterator; 859623: typedef _Bit_const_iterator const_iterator; 859623: typedef std::reverse_iterator const_reverse_iterator; 859623: typedef std::reverse_iterator reverse_iterator; 859623: typedef _Alloc allocator_type; 859623: 859623: 859623: allocator_type 859623: get_allocator() const 859623: { return _Base::get_allocator(); } 859623: 859623: protected: 859623: using _Base::_M_allocate; 859623: using _Base::_M_deallocate; 859623: using _Base::_S_nword; 859623: using _Base::_M_get_Bit_allocator; 859623: 859623: public: 859623: 859623: vector() = default; 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: vector(const allocator_type& __a) noexcept 859623: : _Base(__a) { } 859623: 859623: 859623: 859623: explicit 859623: vector(size_type __n, const allocator_type& __a = allocator_type()) 859623: : vector(__n, false, __a) 859623: { } 859623: 859623: 859623: vector(size_type __n, const bool& __value, 859623: const allocator_type& __a = allocator_type()) 859623: 859623: 859623: 859623: 859623: 859623: : _Base(__a) 859623: { 859623: _M_initialize(__n); 859623: _M_initialize_value(__value); 859623: } 859623: 859623: 859623: vector(const vector& __x) 859623: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) 859623: { 859623: const_iterator __xbegin = __x.begin(), __xend = __x.end(); 859623: _M_initialize(__x.size()); 859623: _M_copy_aligned(__xbegin, __xend, begin()); 859623: } 859623: 859623: 859623: vector(vector&&) = default; 859623: 859623: private: 859623: 859623: vector(vector&& __x, const allocator_type& __a, true_type) noexcept 859623: : _Base(std::move(__x), __a) 859623: { } 859623: 859623: 859623: vector(vector&& __x, const allocator_type& __a, false_type) 859623: : _Base(__a) 859623: { 859623: if (__x.get_allocator() == __a) 859623: this->_M_move_data(std::move(__x)); 859623: else 859623: { 859623: _M_initialize(__x.size()); 859623: _M_copy_aligned(__x.begin(), __x.end(), begin()); 859623: __x.clear(); 859623: } 859623: } 859623: 859623: public: 859623: 859623: vector(vector&& __x, const __type_identity_t& __a) 859623: noexcept(_Bit_alloc_traits::_S_always_equal()) 859623: : vector(std::move(__x), __a, 859623: typename _Bit_alloc_traits::is_always_equal{}) 859623: { } 859623: 859623: 859623: vector(const vector& __x, const __type_identity_t& __a) 859623: : _Base(__a) 859623: { 859623: _M_initialize(__x.size()); 859623: _M_copy_aligned(__x.begin(), __x.end(), begin()); 859623: } 859623: 859623: 859623: vector(initializer_list __l, 859623: const allocator_type& __a = allocator_type()) 859623: : _Base(__a) 859623: { 859623: _M_initialize_range(__l.begin(), __l.end(), 859623: random_access_iterator_tag()); 859623: } 859623: 859623: 859623: 859623: template> 859623: 859623: vector(_InputIterator __first, _InputIterator __last, 859623: const allocator_type& __a = allocator_type()) 859623: : _Base(__a) 859623: { 859623: _M_initialize_range(__first, __last, 859623: std::__iterator_category(__first)); 859623: } 859623: # 925 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: 859623: ~vector() noexcept { } 859623: 859623: 859623: vector& 859623: operator=(const vector& __x) 859623: { 859623: if (&__x == this) 859623: return *this; 859623: 859623: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) 859623: { 859623: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) 859623: { 859623: this->_M_deallocate(); 859623: std::__alloc_on_copy(_M_get_Bit_allocator(), 859623: __x._M_get_Bit_allocator()); 859623: _M_initialize(__x.size()); 859623: } 859623: else 859623: std::__alloc_on_copy(_M_get_Bit_allocator(), 859623: __x._M_get_Bit_allocator()); 859623: } 859623: 859623: if (__x.size() > capacity()) 859623: { 859623: this->_M_deallocate(); 859623: _M_initialize(__x.size()); 859623: } 859623: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 859623: begin()); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: vector& 859623: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) 859623: { 859623: if (_Bit_alloc_traits::_S_propagate_on_move_assign() 859623: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) 859623: { 859623: this->_M_deallocate(); 859623: this->_M_move_data(std::move(__x)); 859623: std::__alloc_on_move(_M_get_Bit_allocator(), 859623: __x._M_get_Bit_allocator()); 859623: } 859623: else 859623: { 859623: if (__x.size() > capacity()) 859623: { 859623: this->_M_deallocate(); 859623: _M_initialize(__x.size()); 859623: } 859623: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 859623: begin()); 859623: __x.clear(); 859623: } 859623: return *this; 859623: } 859623: 859623: 859623: vector& 859623: operator=(initializer_list __l) 859623: { 859623: this->assign(__l.begin(), __l.end()); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: assign(size_type __n, const bool& __x) 859623: { _M_fill_assign(__n, __x); } 859623: 859623: 859623: template> 859623: 859623: void 859623: assign(_InputIterator __first, _InputIterator __last) 859623: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 859623: # 1023 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: 859623: void 859623: assign(initializer_list __l) 859623: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } 859623: # 1063 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: [[__nodiscard__]] 859623: iterator 859623: begin() noexcept 859623: { return iterator(this->_M_impl._M_start._M_p, 0); } 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: begin() const noexcept 859623: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 859623: 859623: [[__nodiscard__]] 859623: iterator 859623: end() noexcept 859623: { return this->_M_impl._M_finish; } 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: end() const noexcept 859623: { return this->_M_impl._M_finish; } 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: rbegin() noexcept 859623: { return reverse_iterator(end()); } 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: rbegin() const noexcept 859623: { return const_reverse_iterator(end()); } 859623: 859623: [[__nodiscard__]] 859623: reverse_iterator 859623: rend() noexcept 859623: { return reverse_iterator(begin()); } 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: rend() const noexcept 859623: { return const_reverse_iterator(begin()); } 859623: 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: cbegin() const noexcept 859623: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 859623: 859623: [[__nodiscard__]] 859623: const_iterator 859623: cend() const noexcept 859623: { return this->_M_impl._M_finish; } 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: crbegin() const noexcept 859623: { return const_reverse_iterator(end()); } 859623: 859623: [[__nodiscard__]] 859623: const_reverse_iterator 859623: crend() const noexcept 859623: { return const_reverse_iterator(begin()); } 859623: 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: size() const noexcept 859623: { return size_type(end() - begin()); } 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: max_size() const noexcept 859623: { 859623: const size_type __isize = 859623: __gnu_cxx::__numeric_traits::__max 859623: - int(_S_word_bit) + 1; 859623: const size_type __asize 859623: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); 859623: return (__asize <= __isize / int(_S_word_bit) 859623: ? __asize * int(_S_word_bit) : __isize); 859623: } 859623: 859623: [[__nodiscard__]] 859623: size_type 859623: capacity() const noexcept 859623: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) 859623: - begin()); } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: empty() const noexcept 859623: { return begin() == end(); } 859623: 859623: [[__nodiscard__]] 859623: reference 859623: operator[](size_type __n) 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 859623: return _Bit_reference (this->_M_impl._M_start._M_p 859623: + __n / int(_S_word_bit), 859623: 1UL << __n % int(_S_word_bit)); 859623: } 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: operator[](size_type __n) const 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__n < this->size())) std::__glibcxx_assert_fail(); } while (false); 859623: return _Bit_reference (this->_M_impl._M_start._M_p 859623: + __n / int(_S_word_bit), 859623: 1UL << __n % int(_S_word_bit)); 859623: } 859623: 859623: protected: 859623: 859623: void 859623: _M_range_check(size_type __n) const 859623: { 859623: if (__n >= this->size()) 859623: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 859623: 859623: , 859623: __n, this->size()); 859623: } 859623: 859623: public: 859623: [[__nodiscard__]] 859623: reference 859623: at(size_type __n) 859623: { 859623: _M_range_check(__n); 859623: return (*this)[__n]; 859623: } 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: at(size_type __n) const 859623: { 859623: _M_range_check(__n); 859623: return (*this)[__n]; 859623: } 859623: 859623: 859623: void 859623: reserve(size_type __n) 859623: { 859623: if (__n > max_size()) 859623: __throw_length_error(("vector::reserve")); 859623: if (capacity() < __n) 859623: _M_reallocate(__n); 859623: } 859623: 859623: [[__nodiscard__]] 859623: reference 859623: front() 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *begin(); 859623: } 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: front() const 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *begin(); 859623: } 859623: 859623: [[__nodiscard__]] 859623: reference 859623: back() 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *(end() - 1); 859623: } 859623: 859623: [[__nodiscard__]] 859623: const_reference 859623: back() const 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); 859623: return *(end() - 1); 859623: } 859623: 859623: 859623: void 859623: push_back(bool __x) 859623: { 859623: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 859623: *this->_M_impl._M_finish++ = __x; 859623: else 859623: _M_insert_aux(end(), __x); 859623: } 859623: 859623: 859623: void 859623: swap(vector& __x) noexcept 859623: { 859623: 859623: 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) 859623: ; 859623: 859623: this->_M_impl._M_swap_data(__x._M_impl); 859623: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), 859623: __x._M_get_Bit_allocator()); 859623: } 859623: 859623: 859623: 859623: static void 859623: swap(reference __x, reference __y) noexcept 859623: { 859623: bool __tmp = __x; 859623: __x = __y; 859623: __y = __tmp; 859623: } 859623: 859623: 859623: iterator 859623: 859623: insert(const_iterator __position, const bool& __x) 859623: 859623: 859623: 859623: { 859623: const difference_type __n = __position - begin(); 859623: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() 859623: && __position == end()) 859623: *this->_M_impl._M_finish++ = __x; 859623: else 859623: _M_insert_aux(__position._M_const_cast(), __x); 859623: return begin() + __n; 859623: } 859623: 859623: 859623: __attribute__ ((__deprecated__ ("use '" "insert(position, false)" "' instead"))) 859623: iterator 859623: insert(const_iterator __position) 859623: { return this->insert(__position._M_const_cast(), false); } 859623: 859623: 859623: 859623: template> 859623: 859623: iterator 859623: insert(const_iterator __position, 859623: _InputIterator __first, _InputIterator __last) 859623: { 859623: difference_type __offset = __position - cbegin(); 859623: _M_insert_range(__position._M_const_cast(), 859623: __first, __last, 859623: std::__iterator_category(__first)); 859623: return begin() + __offset; 859623: } 859623: # 1329 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: 859623: iterator 859623: insert(const_iterator __position, size_type __n, const bool& __x) 859623: { 859623: difference_type __offset = __position - cbegin(); 859623: _M_fill_insert(__position._M_const_cast(), __n, __x); 859623: return begin() + __offset; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: insert(const_iterator __p, initializer_list __l) 859623: { return this->insert(__p, __l.begin(), __l.end()); } 859623: # 1463 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: 859623: void 859623: pop_back() 859623: { --this->_M_impl._M_finish; } 859623: 859623: 859623: iterator 859623: 859623: erase(const_iterator __position) 859623: 859623: 859623: 859623: { return _M_erase(__position._M_const_cast()); } 859623: 859623: 859623: iterator 859623: 859623: erase(const_iterator __first, const_iterator __last) 859623: 859623: 859623: 859623: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } 859623: 859623: 859623: void 859623: resize(size_type __new_size, bool __x = bool()) 859623: { 859623: if (__new_size < size()) 859623: _M_erase_at_end(begin() + difference_type(__new_size)); 859623: else 859623: insert(end(), __new_size - size(), __x); 859623: } 859623: 859623: 859623: 859623: void 859623: shrink_to_fit() 859623: { _M_shrink_to_fit(); } 859623: 859623: 859623: 859623: void 859623: flip() noexcept 859623: { 859623: _Bit_type * const __end = this->_M_impl._M_end_addr(); 859623: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) 859623: *__p = ~*__p; 859623: } 859623: 859623: 859623: void 859623: clear() noexcept 859623: { _M_erase_at_end(begin()); } 859623: 859623: 859623: template 859623: 859623: 859623: 859623: 859623: void 859623: 859623: emplace_back(_Args&&... __args) 859623: { 859623: push_back(bool(std::forward<_Args>(__args)...)); 859623: 859623: 859623: 859623: } 859623: 859623: template 859623: 859623: iterator 859623: emplace(const_iterator __pos, _Args&&... __args) 859623: { return insert(__pos, bool(std::forward<_Args>(__args)...)); } 859623: 859623: 859623: protected: 859623: 859623: 859623: iterator 859623: _M_copy_aligned(const_iterator __first, const_iterator __last, 859623: iterator __result) 859623: { 859623: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); 859623: return std::copy(const_iterator(__last._M_p, 0), __last, 859623: iterator(__q, 0)); 859623: } 859623: 859623: 859623: void 859623: _M_initialize(size_type __n) 859623: { 859623: if (__n) 859623: { 859623: _Bit_pointer __q = this->_M_allocate(__n); 859623: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 859623: iterator __start = iterator(std::__addressof(*__q), 0); 859623: this->_M_impl._M_start = __start; 859623: this->_M_impl._M_finish = __start + difference_type(__n); 859623: } 859623: } 859623: 859623: 859623: void 859623: _M_initialize_value(bool __x) noexcept 859623: { 859623: if (_Bit_type* __p = this->_M_impl._M_start._M_p) 859623: __fill_bvector_n(__p, this->_M_impl._M_end_addr() - __p, __x); 859623: } 859623: 859623: 859623: void 859623: _M_reallocate(size_type __n); 859623: 859623: 859623: 859623: bool 859623: _M_shrink_to_fit(); 859623: # 1603 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: template 859623: 859623: void 859623: _M_initialize_range(_InputIterator __first, _InputIterator __last, 859623: std::input_iterator_tag) 859623: { 859623: for (; __first != __last; ++__first) 859623: push_back(*__first); 859623: } 859623: 859623: template 859623: 859623: void 859623: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, 859623: std::forward_iterator_tag) 859623: { 859623: const size_type __n = std::distance(__first, __last); 859623: _M_initialize(__n); 859623: std::copy(__first, __last, begin()); 859623: } 859623: # 1639 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: 859623: void 859623: _M_fill_assign(size_t __n, bool __x) 859623: { 859623: if (__n > size()) 859623: { 859623: _M_initialize_value(__x); 859623: insert(end(), __n - size(), __x); 859623: } 859623: else 859623: { 859623: _M_erase_at_end(begin() + __n); 859623: _M_initialize_value(__x); 859623: } 859623: } 859623: 859623: template 859623: 859623: void 859623: _M_assign_aux(_InputIterator __first, _InputIterator __last, 859623: std::input_iterator_tag) 859623: { 859623: iterator __cur = begin(); 859623: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) 859623: *__cur = *__first; 859623: if (__first == __last) 859623: _M_erase_at_end(__cur); 859623: else 859623: insert(end(), __first, __last); 859623: } 859623: 859623: template 859623: 859623: void 859623: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 859623: std::forward_iterator_tag) 859623: { 859623: const size_type __len = std::distance(__first, __last); 859623: if (__len < size()) 859623: _M_erase_at_end(std::copy(__first, __last, begin())); 859623: else 859623: { 859623: _ForwardIterator __mid = __first; 859623: std::advance(__mid, size()); 859623: std::copy(__first, __mid, begin()); 859623: insert(end(), __mid, __last); 859623: } 859623: } 859623: # 1706 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: 859623: void 859623: _M_fill_insert(iterator __position, size_type __n, bool __x); 859623: 859623: template 859623: 859623: void 859623: _M_insert_range(iterator __pos, _InputIterator __first, 859623: _InputIterator __last, std::input_iterator_tag) 859623: { 859623: for (; __first != __last; ++__first) 859623: { 859623: __pos = insert(__pos, *__first); 859623: ++__pos; 859623: } 859623: } 859623: 859623: template 859623: 859623: void 859623: _M_insert_range(iterator __position, _ForwardIterator __first, 859623: _ForwardIterator __last, std::forward_iterator_tag); 859623: 859623: 859623: void 859623: _M_insert_aux(iterator __position, bool __x); 859623: 859623: 859623: size_type 859623: _M_check_len(size_type __n, const char* __s) const 859623: { 859623: if (max_size() - size() < __n) 859623: __throw_length_error((__s)); 859623: 859623: const size_type __len = size() + std::max(size(), __n); 859623: return (__len < size() || __len > max_size()) ? max_size() : __len; 859623: } 859623: 859623: 859623: void 859623: _M_erase_at_end(iterator __pos) 859623: { this->_M_impl._M_finish = __pos; } 859623: 859623: 859623: iterator 859623: _M_erase(iterator __pos); 859623: 859623: 859623: iterator 859623: _M_erase(iterator __first, iterator __last); 859623: 859623: protected: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void data() = delete; 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: inline void 859623: __fill_bvector(_Bit_type* __v, unsigned int __first, unsigned int __last, 859623: bool __x) noexcept 859623: { 859623: const _Bit_type __fmask = ~0ul << __first; 859623: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); 859623: const _Bit_type __mask = __fmask & __lmask; 859623: 859623: if (__x) 859623: *__v |= __mask; 859623: else 859623: *__v &= ~__mask; 859623: } 859623: 859623: 859623: __attribute__((__nonnull__)) 859623: 859623: inline void 859623: __fill_bvector_n(_Bit_type* __p, size_t __n, bool __x) noexcept 859623: { 859623: # 1802 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_bvector.h" 3 859623: __builtin_memset(__p, __x ? ~0 : 0, __n * sizeof(_Bit_type)); 859623: } 859623: 859623: 859623: 859623: inline void 859623: __fill_a1(std::_Bit_iterator __first, 859623: std::_Bit_iterator __last, const bool& __x) 859623: { 859623: if (__first._M_p != __last._M_p) 859623: { 859623: _Bit_type* __first_p = __first._M_p; 859623: if (__first._M_offset != 0) 859623: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); 859623: 859623: __fill_bvector_n(__first_p, __last._M_p - __first_p, __x); 859623: 859623: if (__last._M_offset != 0) 859623: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); 859623: } 859623: else if (__first._M_offset != __last._M_offset) 859623: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: struct hash> 859623: : public __hash_base> 859623: { 859623: size_t 859623: operator()(const std::vector&) const noexcept; 859623: }; 859623: 859623: 859623: 859623: } 859623: # 70 "/usr/arm-linux-gnueabi/include/c++/15/vector" 2 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/vector.tcc" 1 3 859623: # 59 "/usr/arm-linux-gnueabi/include/c++/15/bits/vector.tcc" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: reserve(size_type __n) 859623: { 859623: if (__n > this->max_size()) 859623: __throw_length_error(("vector::reserve")); 859623: if (this->capacity() < __n) 859623: { 859623: const size_type __old_size = size(); 859623: pointer __tmp; 859623: 859623: if (_S_use_relocate()) 859623: { 859623: __tmp = this->_M_allocate(__n); 859623: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 859623: __tmp, _M_get_Tp_allocator()); 859623: } 859623: else 859623: 859623: { 859623: __tmp = _M_allocate_and_copy(__n, 859623: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), 859623: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); 859623: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: } 859623: ; 859623: _M_deallocate(this->_M_impl._M_start, 859623: this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_start); 859623: this->_M_impl._M_start = __tmp; 859623: this->_M_impl._M_finish = __tmp + __old_size; 859623: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 859623: } 859623: } 859623: 859623: 859623: template 859623: template 859623: 859623: 859623: 859623: 859623: void 859623: 859623: vector<_Tp, _Alloc>:: 859623: emplace_back(_Args&&... __args) 859623: { 859623: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 859623: { 859623: ; 859623: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 859623: std::forward<_Args>(__args)...); 859623: ++this->_M_impl._M_finish; 859623: ; 859623: } 859623: else 859623: _M_realloc_append(std::forward<_Args>(__args)...); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: template 859623: 859623: typename vector<_Tp, _Alloc>::iterator 859623: vector<_Tp, _Alloc>:: 859623: 859623: insert(const_iterator __position, const value_type& __x) 859623: 859623: 859623: 859623: { 859623: const size_type __n = __position - begin(); 859623: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__position != const_iterator())) std::__glibcxx_assert_fail(); } while (false); 859623: if (!(__position != const_iterator())) 859623: __builtin_unreachable(); 859623: 859623: if (__position == end()) 859623: { 859623: ; 859623: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 859623: __x); 859623: ++this->_M_impl._M_finish; 859623: ; 859623: } 859623: else 859623: { 859623: 859623: const auto __pos = begin() + (__position - cbegin()); 859623: 859623: 859623: _Temporary_value __x_copy(this, __x); 859623: _M_insert_aux(__pos, std::move(__x_copy._M_val())); 859623: 859623: 859623: 859623: } 859623: } 859623: else 859623: 859623: _M_realloc_insert(begin() + (__position - cbegin()), __x); 859623: 859623: 859623: 859623: 859623: return iterator(this->_M_impl._M_start + __n); 859623: } 859623: 859623: template 859623: 859623: typename vector<_Tp, _Alloc>::iterator 859623: vector<_Tp, _Alloc>:: 859623: _M_erase(iterator __position) 859623: { 859623: if (__position + 1 != end()) 859623: std::move(__position + 1, end(), __position); 859623: --this->_M_impl._M_finish; 859623: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 859623: ; 859623: return __position; 859623: } 859623: 859623: template 859623: 859623: typename vector<_Tp, _Alloc>::iterator 859623: vector<_Tp, _Alloc>:: 859623: _M_erase(iterator __first, iterator __last) 859623: { 859623: if (__first != __last) 859623: { 859623: if (__last != end()) 859623: std::move(__last, end(), __first); 859623: _M_erase_at_end(__first.base() + (end() - __last)); 859623: } 859623: return __first; 859623: } 859623: 859623: template 859623: 859623: vector<_Tp, _Alloc>& 859623: vector<_Tp, _Alloc>:: 859623: operator=(const vector<_Tp, _Alloc>& __x) 859623: { 859623: if (std::__addressof(__x) != this) 859623: { 859623: ; 859623: 859623: if (_Alloc_traits::_S_propagate_on_copy_assign()) 859623: { 859623: if (!_Alloc_traits::_S_always_equal() 859623: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) 859623: { 859623: 859623: this->clear(); 859623: _M_deallocate(this->_M_impl._M_start, 859623: this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_start); 859623: this->_M_impl._M_start = nullptr; 859623: this->_M_impl._M_finish = nullptr; 859623: this->_M_impl._M_end_of_storage = nullptr; 859623: } 859623: std::__alloc_on_copy(_M_get_Tp_allocator(), 859623: __x._M_get_Tp_allocator()); 859623: } 859623: 859623: const size_type __xlen = __x.size(); 859623: if (__xlen > capacity()) 859623: { 859623: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), 859623: __x.end()); 859623: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: _M_deallocate(this->_M_impl._M_start, 859623: this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_start); 859623: this->_M_impl._M_start = __tmp; 859623: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; 859623: } 859623: else if (size() >= __xlen) 859623: { 859623: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), 859623: end(), _M_get_Tp_allocator()); 859623: } 859623: else 859623: { 859623: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), 859623: this->_M_impl._M_start); 859623: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), 859623: __x._M_impl._M_finish, 859623: this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: } 859623: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; 859623: } 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_fill_assign(size_t __n, const value_type& __val) 859623: { 859623: const size_type __sz = size(); 859623: if (__n > capacity()) 859623: { 859623: if (__n <= __sz) 859623: __builtin_unreachable(); 859623: vector __tmp(__n, __val, _M_get_Tp_allocator()); 859623: __tmp._M_impl._M_swap_data(this->_M_impl); 859623: } 859623: else if (__n > __sz) 859623: { 859623: std::fill(begin(), end(), __val); 859623: const size_type __add = __n - __sz; 859623: ; 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 859623: __add, __val, _M_get_Tp_allocator()); 859623: ; 859623: } 859623: else 859623: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); 859623: } 859623: 859623: template 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_assign_aux(_InputIterator __first, _InputIterator __last, 859623: std::input_iterator_tag) 859623: { 859623: pointer __cur(this->_M_impl._M_start); 859623: for (; __first != __last && __cur != this->_M_impl._M_finish; 859623: ++__cur, (void)++__first) 859623: *__cur = *__first; 859623: if (__first == __last) 859623: _M_erase_at_end(__cur); 859623: else 859623: _M_range_insert(end(), __first, __last, 859623: std::__iterator_category(__first)); 859623: } 859623: 859623: template 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 859623: std::forward_iterator_tag) 859623: { 859623: const size_type __sz = size(); 859623: const size_type __len = std::distance(__first, __last); 859623: 859623: if (__len > capacity()) 859623: { 859623: if (__len <= __sz) 859623: __builtin_unreachable(); 859623: 859623: _S_check_init_len(__len, _M_get_Tp_allocator()); 859623: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); 859623: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: ; 859623: _M_deallocate(this->_M_impl._M_start, 859623: this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_start); 859623: this->_M_impl._M_start = __tmp; 859623: this->_M_impl._M_finish = this->_M_impl._M_start + __len; 859623: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; 859623: } 859623: else if (__sz >= __len) 859623: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); 859623: else 859623: { 859623: _ForwardIterator __mid = __first; 859623: std::advance(__mid, __sz); 859623: std::copy(__first, __mid, this->_M_impl._M_start); 859623: const size_type __attribute__((__unused__)) __n = __len - __sz; 859623: ; 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_copy_a(__mid, __last, 859623: this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: ; 859623: } 859623: } 859623: 859623: 859623: template 859623: 859623: auto 859623: vector<_Tp, _Alloc>:: 859623: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator 859623: { 859623: const auto __n = __position - cbegin(); 859623: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 859623: if (__position == cend()) 859623: { 859623: ; 859623: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 859623: std::move(__v)); 859623: ++this->_M_impl._M_finish; 859623: ; 859623: } 859623: else 859623: _M_insert_aux(begin() + __n, std::move(__v)); 859623: else 859623: _M_realloc_insert(begin() + __n, std::move(__v)); 859623: 859623: return iterator(this->_M_impl._M_start + __n); 859623: } 859623: 859623: template 859623: template 859623: 859623: auto 859623: vector<_Tp, _Alloc>:: 859623: _M_emplace_aux(const_iterator __position, _Args&&... __args) 859623: -> iterator 859623: { 859623: const auto __n = __position - cbegin(); 859623: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 859623: if (__position == cend()) 859623: { 859623: ; 859623: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 859623: std::forward<_Args>(__args)...); 859623: ++this->_M_impl._M_finish; 859623: ; 859623: } 859623: else 859623: { 859623: 859623: 859623: 859623: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); 859623: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); 859623: } 859623: else 859623: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); 859623: 859623: return iterator(this->_M_impl._M_start + __n); 859623: } 859623: 859623: template 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_insert_aux(iterator __position, _Arg&& __arg) 859623: 859623: 859623: 859623: 859623: 859623: 859623: { 859623: ; 859623: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 859623: std::move(*(this->_M_impl._M_finish - 1))); 859623: ++this->_M_impl._M_finish; 859623: ; 859623: 859623: 859623: 859623: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) 859623: 859623: ; 859623: 859623: 859623: 859623: *__position = std::forward<_Arg>(__arg); 859623: 859623: } 859623: 859623: 859623: template 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_realloc_insert(iterator __position, _Args&&... __args) 859623: 859623: 859623: 859623: 859623: 859623: 859623: { 859623: const size_type __len = _M_check_len(1u, "vector::_M_realloc_insert"); 859623: if (__len <= 0) 859623: __builtin_unreachable (); 859623: pointer __old_start = this->_M_impl._M_start; 859623: pointer __old_finish = this->_M_impl._M_finish; 859623: const size_type __elems_before = __position - begin(); 859623: pointer __new_start(this->_M_allocate(__len)); 859623: pointer __new_finish(__new_start); 859623: 859623: { 859623: _Guard_alloc __guard(__new_start, __len, *this); 859623: # 481 "/usr/arm-linux-gnueabi/include/c++/15/bits/vector.tcc" 3 859623: _Alloc_traits::construct(this->_M_impl, 859623: std::__to_address(__new_start + __elems_before), 859623: std::forward<_Args>(__args)...); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: if (_S_use_relocate()) 859623: { 859623: 859623: __new_finish = _S_relocate(__old_start, __position.base(), 859623: __new_start, _M_get_Tp_allocator()); 859623: ++__new_finish; 859623: __new_finish = _S_relocate(__position.base(), __old_finish, 859623: __new_finish, _M_get_Tp_allocator()); 859623: } 859623: else 859623: 859623: { 859623: 859623: struct _Guard_elts 859623: { 859623: pointer _M_first, _M_last; 859623: _Tp_alloc_type& _M_alloc; 859623: 859623: 859623: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) 859623: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) 859623: { } 859623: 859623: 859623: ~_Guard_elts() 859623: { std::_Destroy(_M_first, _M_last, _M_alloc); } 859623: 859623: private: 859623: _Guard_elts(const _Guard_elts&); 859623: }; 859623: 859623: 859623: _Guard_elts __guard_elts(__new_start + __elems_before, _M_impl); 859623: 859623: __new_finish = std::__uninitialized_move_if_noexcept_a( 859623: __old_start, __position.base(), 859623: __new_start, _M_get_Tp_allocator()); 859623: 859623: ++__new_finish; 859623: 859623: __guard_elts._M_first = __new_start; 859623: 859623: __new_finish = std::__uninitialized_move_if_noexcept_a( 859623: __position.base(), __old_finish, 859623: __new_finish, _M_get_Tp_allocator()); 859623: 859623: 859623: __guard_elts._M_first = __old_start; 859623: __guard_elts._M_last = __old_finish; 859623: } 859623: __guard._M_storage = __old_start; 859623: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 859623: } 859623: 859623: 859623: 859623: this->_M_impl._M_start = __new_start; 859623: this->_M_impl._M_finish = __new_finish; 859623: this->_M_impl._M_end_of_storage = __new_start + __len; 859623: } 859623: 859623: 859623: template 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_realloc_append(_Args&&... __args) 859623: 859623: 859623: 859623: 859623: 859623: 859623: { 859623: const size_type __len = _M_check_len(1u, "vector::_M_realloc_append"); 859623: if (__len <= 0) 859623: __builtin_unreachable (); 859623: pointer __old_start = this->_M_impl._M_start; 859623: pointer __old_finish = this->_M_impl._M_finish; 859623: const size_type __elems = end() - begin(); 859623: pointer __new_start(this->_M_allocate(__len)); 859623: pointer __new_finish(__new_start); 859623: 859623: { 859623: _Guard_alloc __guard(__new_start, __len, *this); 859623: # 586 "/usr/arm-linux-gnueabi/include/c++/15/bits/vector.tcc" 3 859623: _Alloc_traits::construct(this->_M_impl, 859623: std::__to_address(__new_start + __elems), 859623: std::forward<_Args>(__args)...); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: if (_S_use_relocate()) 859623: { 859623: 859623: __new_finish = _S_relocate(__old_start, __old_finish, 859623: __new_start, _M_get_Tp_allocator()); 859623: ++__new_finish; 859623: } 859623: else 859623: 859623: { 859623: 859623: struct _Guard_elts 859623: { 859623: pointer _M_first, _M_last; 859623: _Tp_alloc_type& _M_alloc; 859623: 859623: 859623: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) 859623: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) 859623: { } 859623: 859623: 859623: ~_Guard_elts() 859623: { std::_Destroy(_M_first, _M_last, _M_alloc); } 859623: 859623: private: 859623: _Guard_elts(const _Guard_elts&); 859623: }; 859623: 859623: 859623: _Guard_elts __guard_elts(__new_start + __elems, _M_impl); 859623: 859623: __new_finish = std::__uninitialized_move_if_noexcept_a( 859623: __old_start, __old_finish, 859623: __new_start, _M_get_Tp_allocator()); 859623: 859623: ++__new_finish; 859623: 859623: 859623: __guard_elts._M_first = __old_start; 859623: __guard_elts._M_last = __old_finish; 859623: } 859623: __guard._M_storage = __old_start; 859623: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 859623: } 859623: 859623: 859623: 859623: this->_M_impl._M_start = __new_start; 859623: this->_M_impl._M_finish = __new_finish; 859623: this->_M_impl._M_end_of_storage = __new_start + __len; 859623: } 859623: 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) 859623: { 859623: if (__n != 0) 859623: { 859623: if (size_type(this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_finish) >= __n) 859623: { 859623: 859623: 859623: 859623: _Temporary_value __tmp(this, __x); 859623: value_type& __x_copy = __tmp._M_val(); 859623: 859623: const size_type __elems_after = end() - __position; 859623: pointer __old_finish(this->_M_impl._M_finish); 859623: if (__elems_after > __n) 859623: { 859623: ; 859623: std::__uninitialized_move_a(__old_finish - __n, 859623: __old_finish, 859623: __old_finish, 859623: _M_get_Tp_allocator()); 859623: this->_M_impl._M_finish += __n; 859623: ; 859623: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 859623: ; 859623: std::fill(__position.base(), __position.base() + __n, 859623: __x_copy); 859623: } 859623: else 859623: { 859623: ; 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_fill_n_a(__old_finish, 859623: __n - __elems_after, 859623: __x_copy, 859623: _M_get_Tp_allocator()); 859623: ; 859623: std::__uninitialized_move_a(__position.base(), __old_finish, 859623: this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: this->_M_impl._M_finish += __elems_after; 859623: ; 859623: std::fill(__position.base(), __old_finish, __x_copy); 859623: } 859623: } 859623: else 859623: { 859623: 859623: 859623: pointer __old_start = this->_M_impl._M_start; 859623: pointer __old_finish = this->_M_impl._M_finish; 859623: const pointer __pos = __position.base(); 859623: 859623: const size_type __len = 859623: _M_check_len(__n, "vector::_M_fill_insert"); 859623: const size_type __elems_before = __pos - __old_start; 859623: pointer __new_start(this->_M_allocate(__len)); 859623: pointer __new_finish(__new_start); 859623: if (true) 859623: { 859623: 859623: std::__uninitialized_fill_n_a(__new_start + __elems_before, 859623: __n, __x, 859623: _M_get_Tp_allocator()); 859623: __new_finish = pointer(); 859623: 859623: __new_finish 859623: = std::__uninitialized_move_if_noexcept_a 859623: (__old_start, __pos, __new_start, _M_get_Tp_allocator()); 859623: 859623: __new_finish += __n; 859623: 859623: __new_finish 859623: = std::__uninitialized_move_if_noexcept_a 859623: (__pos, __old_finish, __new_finish, _M_get_Tp_allocator()); 859623: } 859623: if (false) 859623: { 859623: if (!__new_finish) 859623: std::_Destroy(__new_start + __elems_before, 859623: __new_start + __elems_before + __n, 859623: _M_get_Tp_allocator()); 859623: else 859623: std::_Destroy(__new_start, __new_finish, 859623: _M_get_Tp_allocator()); 859623: _M_deallocate(__new_start, __len); 859623: ; 859623: } 859623: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); 859623: ; 859623: _M_deallocate(__old_start, 859623: this->_M_impl._M_end_of_storage - __old_start); 859623: this->_M_impl._M_start = __new_start; 859623: this->_M_impl._M_finish = __new_finish; 859623: this->_M_impl._M_end_of_storage = __new_start + __len; 859623: } 859623: } 859623: } 859623: 859623: 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_default_append(size_type __n) 859623: { 859623: if (__n != 0) 859623: { 859623: const size_type __size = size(); 859623: size_type __navail = size_type(this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_finish); 859623: 859623: if (__size > max_size() || __navail > max_size() - __size) 859623: __builtin_unreachable(); 859623: 859623: if (__navail >= __n) 859623: { 859623: if (!this->_M_impl._M_finish) 859623: __builtin_unreachable(); 859623: 859623: ; 859623: this->_M_impl._M_finish = 859623: std::__uninitialized_default_n_a(this->_M_impl._M_finish, 859623: __n, _M_get_Tp_allocator()); 859623: ; 859623: } 859623: else 859623: { 859623: 859623: 859623: pointer __old_start = this->_M_impl._M_start; 859623: pointer __old_finish = this->_M_impl._M_finish; 859623: 859623: const size_type __len = 859623: _M_check_len(__n, "vector::_M_default_append"); 859623: pointer __new_start(this->_M_allocate(__len)); 859623: 859623: { 859623: _Guard_alloc __guard(__new_start, __len, *this); 859623: 859623: std::__uninitialized_default_n_a(__new_start + __size, __n, 859623: _M_get_Tp_allocator()); 859623: 859623: if (_S_use_relocate()) 859623: { 859623: _S_relocate(__old_start, __old_finish, 859623: __new_start, _M_get_Tp_allocator()); 859623: } 859623: else 859623: { 859623: 859623: struct _Guard_elts 859623: { 859623: pointer _M_first, _M_last; 859623: _Tp_alloc_type& _M_alloc; 859623: 859623: 859623: _Guard_elts(pointer __first, size_type __n, 859623: _Tp_alloc_type& __a) 859623: : _M_first(__first), _M_last(__first + __n), _M_alloc(__a) 859623: { } 859623: 859623: 859623: ~_Guard_elts() 859623: { std::_Destroy(_M_first, _M_last, _M_alloc); } 859623: 859623: private: 859623: _Guard_elts(const _Guard_elts&); 859623: }; 859623: _Guard_elts __guard_elts(__new_start + __size, __n, _M_impl); 859623: 859623: std::__uninitialized_move_if_noexcept_a( 859623: __old_start, __old_finish, __new_start, 859623: _M_get_Tp_allocator()); 859623: 859623: __guard_elts._M_first = __old_start; 859623: __guard_elts._M_last = __old_finish; 859623: } 859623: ; 859623: __guard._M_storage = __old_start; 859623: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; 859623: } 859623: 859623: 859623: 859623: this->_M_impl._M_start = __new_start; 859623: this->_M_impl._M_finish = __new_start + __size + __n; 859623: this->_M_impl._M_end_of_storage = __new_start + __len; 859623: } 859623: } 859623: } 859623: 859623: template 859623: 859623: bool 859623: vector<_Tp, _Alloc>:: 859623: _M_shrink_to_fit() 859623: { 859623: if (capacity() == size()) 859623: return false; 859623: ; 859623: return std::__shrink_to_fit_aux::_S_do_it(*this); 859623: } 859623: 859623: 859623: template 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_range_insert(iterator __pos, _InputIterator __first, 859623: _InputIterator __last, std::input_iterator_tag) 859623: { 859623: if (__pos == end()) 859623: { 859623: for (; __first != __last; ++__first) 859623: insert(end(), *__first); 859623: } 859623: else if (__first != __last) 859623: { 859623: vector __tmp(__first, __last, _M_get_Tp_allocator()); 859623: insert(__pos, 859623: std::make_move_iterator(__tmp.begin()), 859623: std::make_move_iterator(__tmp.end())); 859623: } 859623: } 859623: 859623: template 859623: template 859623: 859623: void 859623: vector<_Tp, _Alloc>:: 859623: _M_range_insert(iterator __position, _ForwardIterator __first, 859623: _ForwardIterator __last, std::forward_iterator_tag) 859623: { 859623: if (__first != __last) 859623: { 859623: const size_type __n = std::distance(__first, __last); 859623: if (size_type(this->_M_impl._M_end_of_storage 859623: - this->_M_impl._M_finish) >= __n) 859623: { 859623: const size_type __elems_after = end() - __position; 859623: pointer __old_finish(this->_M_impl._M_finish); 859623: if (__elems_after > __n) 859623: { 859623: ; 859623: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 859623: this->_M_impl._M_finish, 859623: this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: this->_M_impl._M_finish += __n; 859623: ; 859623: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 859623: ; 859623: std::copy(__first, __last, __position); 859623: } 859623: else 859623: { 859623: _ForwardIterator __mid = __first; 859623: std::advance(__mid, __elems_after); 859623: ; 859623: std::__uninitialized_copy_a(__mid, __last, 859623: this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: this->_M_impl._M_finish += __n - __elems_after; 859623: ; 859623: std::__uninitialized_move_a(__position.base(), 859623: __old_finish, 859623: this->_M_impl._M_finish, 859623: _M_get_Tp_allocator()); 859623: this->_M_impl._M_finish += __elems_after; 859623: ; 859623: std::copy(__first, __mid, __position); 859623: } 859623: } 859623: else 859623: { 859623: 859623: 859623: 859623: pointer __old_start = this->_M_impl._M_start; 859623: pointer __old_finish = this->_M_impl._M_finish; 859623: 859623: const size_type __len = 859623: _M_check_len(__n, "vector::_M_range_insert"); 859623: 859623: 859623: 859623: 859623: 859623: pointer __new_start(this->_M_allocate(__len)); 859623: pointer __new_finish(__new_start); 859623: if (true) 859623: { 859623: __new_finish 859623: = std::__uninitialized_move_if_noexcept_a 859623: (__old_start, __position.base(), 859623: __new_start, _M_get_Tp_allocator()); 859623: __new_finish 859623: = std::__uninitialized_copy_a(__first, __last, 859623: __new_finish, 859623: _M_get_Tp_allocator()); 859623: __new_finish 859623: = std::__uninitialized_move_if_noexcept_a 859623: (__position.base(), __old_finish, 859623: __new_finish, _M_get_Tp_allocator()); 859623: } 859623: if (false) 859623: { 859623: std::_Destroy(__new_start, __new_finish, 859623: _M_get_Tp_allocator()); 859623: _M_deallocate(__new_start, __len); 859623: ; 859623: } 859623: std::_Destroy(__old_start, __old_finish, 859623: _M_get_Tp_allocator()); 859623: ; 859623: _M_deallocate(__old_start, 859623: this->_M_impl._M_end_of_storage - __old_start); 859623: this->_M_impl._M_start = __new_start; 859623: this->_M_impl._M_finish = __new_finish; 859623: this->_M_impl._M_end_of_storage = __new_start + __len; 859623: } 859623: } 859623: } 859623: # 1109 "/usr/arm-linux-gnueabi/include/c++/15/bits/vector.tcc" 3 859623: template 859623: 859623: void 859623: vector:: 859623: _M_reallocate(size_type __n) 859623: { 859623: const iterator __begin = begin(), __end = end(); 859623: if (size_type(__end - __begin) > __n) 859623: __builtin_unreachable(); 859623: _Bit_pointer __q = this->_M_allocate(__n); 859623: iterator __start(std::__addressof(*__q), 0); 859623: iterator __finish(_M_copy_aligned(__begin, __end, __start)); 859623: this->_M_deallocate(); 859623: this->_M_impl._M_start = __start; 859623: this->_M_impl._M_finish = __finish; 859623: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 859623: } 859623: 859623: template 859623: 859623: void 859623: vector:: 859623: _M_fill_insert(iterator __position, size_type __n, bool __x) 859623: { 859623: if (__n == 0) 859623: return; 859623: if (capacity() - size() >= __n) 859623: { 859623: std::copy_backward(__position, end(), 859623: this->_M_impl._M_finish + difference_type(__n)); 859623: std::fill(__position, __position + difference_type(__n), __x); 859623: this->_M_impl._M_finish += difference_type(__n); 859623: } 859623: else 859623: { 859623: const size_type __len = 859623: _M_check_len(__n, "vector::_M_fill_insert"); 859623: iterator __begin = begin(), __end = end(); 859623: _Bit_pointer __q = this->_M_allocate(__len); 859623: iterator __start(std::__addressof(*__q), 0); 859623: iterator __i = _M_copy_aligned(__begin, __position, __start); 859623: std::fill(__i, __i + difference_type(__n), __x); 859623: iterator __finish = std::copy(__position, __end, 859623: __i + difference_type(__n)); 859623: this->_M_deallocate(); 859623: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 859623: this->_M_impl._M_start = __start; 859623: this->_M_impl._M_finish = __finish; 859623: } 859623: } 859623: 859623: template 859623: template 859623: 859623: void 859623: vector:: 859623: _M_insert_range(iterator __position, _ForwardIterator __first, 859623: _ForwardIterator __last, std::forward_iterator_tag) 859623: { 859623: if (__first != __last) 859623: { 859623: size_type __n = std::distance(__first, __last); 859623: if (capacity() - size() >= __n) 859623: { 859623: std::copy_backward(__position, end(), 859623: this->_M_impl._M_finish 859623: + difference_type(__n)); 859623: std::copy(__first, __last, __position); 859623: this->_M_impl._M_finish += difference_type(__n); 859623: } 859623: else 859623: { 859623: const size_type __len = 859623: _M_check_len(__n, "vector::_M_insert_range"); 859623: const iterator __begin = begin(), __end = end(); 859623: _Bit_pointer __q = this->_M_allocate(__len); 859623: iterator __start(std::__addressof(*__q), 0); 859623: iterator __i = _M_copy_aligned(__begin, __position, __start); 859623: __i = std::copy(__first, __last, __i); 859623: iterator __finish = std::copy(__position, __end, __i); 859623: this->_M_deallocate(); 859623: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 859623: this->_M_impl._M_start = __start; 859623: this->_M_impl._M_finish = __finish; 859623: } 859623: } 859623: } 859623: 859623: template 859623: 859623: void 859623: vector:: 859623: _M_insert_aux(iterator __position, bool __x) 859623: { 859623: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 859623: { 859623: std::copy_backward(__position, this->_M_impl._M_finish, 859623: this->_M_impl._M_finish + 1); 859623: *__position = __x; 859623: ++this->_M_impl._M_finish; 859623: } 859623: else 859623: { 859623: const size_type __len = 859623: _M_check_len(size_type(1), "vector::_M_insert_aux"); 859623: _Bit_pointer __q = this->_M_allocate(__len); 859623: iterator __start(std::__addressof(*__q), 0); 859623: iterator __i = _M_copy_aligned(begin(), __position, __start); 859623: *__i++ = __x; 859623: iterator __finish = std::copy(__position, end(), __i); 859623: this->_M_deallocate(); 859623: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 859623: this->_M_impl._M_start = __start; 859623: this->_M_impl._M_finish = __finish; 859623: } 859623: } 859623: 859623: template 859623: 859623: typename vector::iterator 859623: vector:: 859623: _M_erase(iterator __position) 859623: { 859623: if (__position + 1 != end()) 859623: std::copy(__position + 1, end(), __position); 859623: --this->_M_impl._M_finish; 859623: return __position; 859623: } 859623: 859623: template 859623: 859623: typename vector::iterator 859623: vector:: 859623: _M_erase(iterator __first, iterator __last) 859623: { 859623: if (__first != __last) 859623: _M_erase_at_end(std::copy(__last, end(), __first)); 859623: return __first; 859623: } 859623: 859623: 859623: template 859623: 859623: bool 859623: vector:: 859623: _M_shrink_to_fit() 859623: { 859623: if (capacity() - size() < int(_S_word_bit)) 859623: return false; 859623: if (true) 859623: { 859623: if (size_type __n = size()) 859623: _M_reallocate(__n); 859623: else 859623: { 859623: this->_M_deallocate(); 859623: this->_M_impl._M_reset(); 859623: } 859623: return true; 859623: } 859623: if (false) 859623: { return false; } 859623: } 859623: 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: template 859623: size_t 859623: hash>:: 859623: operator()(const std::vector& __b) const noexcept 859623: { 859623: size_t __hash = 0; 859623: const size_t __words = __b.size() / _S_word_bit; 859623: if (__words) 859623: { 859623: const size_t __clength = __words * sizeof(_Bit_type); 859623: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); 859623: } 859623: 859623: const size_t __extrabits = __b.size() % _S_word_bit; 859623: if (__extrabits) 859623: { 859623: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; 859623: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); 859623: 859623: const size_t __clength 859623: = (__extrabits + 8 - 1) / 8; 859623: if (__words) 859623: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); 859623: else 859623: __hash = std::_Hash_impl::hash(&__hiword, __clength); 859623: } 859623: 859623: return __hash; 859623: } 859623: 859623: 859623: } 859623: # 75 "/usr/arm-linux-gnueabi/include/c++/15/vector" 2 3 859623: # 88 "/usr/arm-linux-gnueabi/include/c++/15/vector" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 89 "/usr/arm-linux-gnueabi/include/c++/15/vector" 2 3 859623: # 23 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/utility" 1 3 859623: # 70 "/usr/arm-linux-gnueabi/include/c++/15/utility" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_relops.h" 1 3 859623: # 62 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_relops.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: namespace rel_ops 859623: { 859623: # 86 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_relops.h" 3 859623: template 859623: inline bool 859623: operator!=(const _Tp& __x, const _Tp& __y) 859623: { return !(__x == __y); } 859623: # 99 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_relops.h" 3 859623: template 859623: inline bool 859623: operator>(const _Tp& __x, const _Tp& __y) 859623: { return __y < __x; } 859623: # 112 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_relops.h" 3 859623: template 859623: inline bool 859623: operator<=(const _Tp& __x, const _Tp& __y) 859623: { return !(__y < __x); } 859623: # 125 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_relops.h" 3 859623: template 859623: inline bool 859623: operator>=(const _Tp& __x, const _Tp& __y) 859623: { return !(__x < __y); } 859623: } 859623: 859623: 859623: } 859623: # 71 "/usr/arm-linux-gnueabi/include/c++/15/utility" 2 3 859623: # 103 "/usr/arm-linux-gnueabi/include/c++/15/utility" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 104 "/usr/arm-linux-gnueabi/include/c++/15/utility" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 237 "/usr/arm-linux-gnueabi/include/c++/15/utility" 3 859623: 859623: } 859623: # 24 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/functional" 1 3 859623: # 55 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 1 3 859623: # 41 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/uses_allocator.h" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/uses_allocator.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: struct __erased_type { }; 859623: 859623: 859623: 859623: 859623: template 859623: using __is_erased_or_convertible 859623: = __or_, is_same<_Tp, __erased_type>>; 859623: 859623: 859623: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 859623: 859623: constexpr allocator_arg_t allocator_arg = 859623: allocator_arg_t(); 859623: 859623: template> 859623: struct __uses_allocator_helper 859623: : false_type { }; 859623: 859623: template 859623: struct __uses_allocator_helper<_Tp, _Alloc, 859623: __void_t> 859623: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 859623: { }; 859623: 859623: 859623: template 859623: struct uses_allocator 859623: : __uses_allocator_helper<_Tp, _Alloc>::type 859623: { }; 859623: 859623: struct __uses_alloc_base { }; 859623: 859623: struct __uses_alloc0 : __uses_alloc_base 859623: { 859623: struct _Sink { void operator=(const void*) { } } _M_a; 859623: }; 859623: 859623: template 859623: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 859623: 859623: template 859623: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 859623: 859623: template 859623: struct __uses_alloc; 859623: 859623: template 859623: struct __uses_alloc 859623: : __conditional_t< 859623: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, 859623: __uses_alloc1<_Alloc>, 859623: __uses_alloc2<_Alloc>> 859623: { 859623: 859623: 859623: static_assert(__or_< 859623: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, 859623: is_constructible<_Tp, _Args..., const _Alloc&>>::value, 859623: "construction with an allocator must be possible" 859623: " if uses_allocator is true"); 859623: }; 859623: 859623: template 859623: struct __uses_alloc 859623: : __uses_alloc0 { }; 859623: 859623: template 859623: using __uses_alloc_t = 859623: __uses_alloc::value, _Tp, _Alloc, _Args...>; 859623: 859623: template 859623: 859623: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 859623: __use_alloc(const _Alloc& __a) 859623: { 859623: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 859623: __ret._M_a = std::__addressof(__a); 859623: return __ret; 859623: } 859623: 859623: template 859623: void 859623: __use_alloc(const _Alloc&&) = delete; 859623: # 142 "/usr/arm-linux-gnueabi/include/c++/15/bits/uses_allocator.h" 3 859623: template class _Predicate, 859623: typename _Tp, typename _Alloc, typename... _Args> 859623: struct __is_uses_allocator_predicate 859623: : __conditional_t::value, 859623: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 859623: _Predicate<_Tp, _Args..., _Alloc>>, 859623: _Predicate<_Tp, _Args...>> { }; 859623: 859623: template 859623: struct __is_uses_allocator_constructible 859623: : __is_uses_allocator_predicate 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_nothrow_uses_allocator_constructible 859623: : __is_uses_allocator_predicate 859623: { }; 859623: # 175 "/usr/arm-linux-gnueabi/include/c++/15/bits/uses_allocator.h" 3 859623: template 859623: void __uses_allocator_construct_impl(__uses_alloc0, _Tp* __ptr, 859623: _Args&&... __args) 859623: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 859623: 859623: template 859623: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 859623: _Args&&... __args) 859623: { 859623: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 859623: std::forward<_Args>(__args)...); 859623: } 859623: 859623: template 859623: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 859623: _Args&&... __args) 859623: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 859623: 859623: template 859623: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 859623: _Args&&... __args) 859623: { 859623: std::__uses_allocator_construct_impl( 859623: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, 859623: std::forward<_Args>(__args)...); 859623: } 859623: 859623: 859623: 859623: } 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 2 3 859623: # 57 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 58 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class tuple; 859623: 859623: 859623: template 859623: struct __is_empty_non_tuple : is_empty<_Tp> { }; 859623: 859623: 859623: template 859623: struct __is_empty_non_tuple> : false_type { }; 859623: 859623: 859623: template 859623: using __empty_not_final 859623: = __conditional_t<__is_final(_Tp), false_type, 859623: __is_empty_non_tuple<_Tp>>; 859623: 859623: template::value> 859623: struct _Head_base; 859623: 859623: 859623: template 859623: struct _Head_base<_Idx, _Head, true> 859623: { 859623: constexpr _Head_base() 859623: : _M_head_impl() { } 859623: 859623: constexpr _Head_base(const _Head& __h) 859623: : _M_head_impl(__h) { } 859623: 859623: constexpr _Head_base(const _Head_base&) = default; 859623: constexpr _Head_base(_Head_base&&) = default; 859623: 859623: template 859623: constexpr _Head_base(_UHead&& __h) 859623: : _M_head_impl(std::forward<_UHead>(__h)) { } 859623: 859623: 859623: _Head_base(allocator_arg_t, __uses_alloc0) 859623: : _M_head_impl() { } 859623: 859623: template 859623: 859623: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 859623: : _M_head_impl(allocator_arg, *__a._M_a) { } 859623: 859623: template 859623: 859623: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 859623: : _M_head_impl(*__a._M_a) { } 859623: 859623: template 859623: 859623: _Head_base(__uses_alloc0, _UHead&& __uhead) 859623: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 859623: 859623: template 859623: 859623: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 859623: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 859623: { } 859623: 859623: template 859623: 859623: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 859623: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 859623: 859623: static constexpr _Head& 859623: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 859623: 859623: static constexpr const _Head& 859623: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 859623: 859623: [[__no_unique_address__]] _Head _M_head_impl; 859623: }; 859623: # 199 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: struct _Head_base<_Idx, _Head, false> 859623: { 859623: constexpr _Head_base() 859623: : _M_head_impl() { } 859623: 859623: constexpr _Head_base(const _Head& __h) 859623: : _M_head_impl(__h) { } 859623: 859623: constexpr _Head_base(const _Head_base&) = default; 859623: constexpr _Head_base(_Head_base&&) = default; 859623: 859623: template 859623: constexpr _Head_base(_UHead&& __h) 859623: : _M_head_impl(std::forward<_UHead>(__h)) { } 859623: 859623: 859623: _Head_base(allocator_arg_t, __uses_alloc0) 859623: : _M_head_impl() { } 859623: 859623: template 859623: 859623: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 859623: : _M_head_impl(allocator_arg, *__a._M_a) { } 859623: 859623: template 859623: 859623: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 859623: : _M_head_impl(*__a._M_a) { } 859623: 859623: template 859623: 859623: _Head_base(__uses_alloc0, _UHead&& __uhead) 859623: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 859623: 859623: template 859623: 859623: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 859623: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 859623: { } 859623: 859623: template 859623: 859623: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 859623: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 859623: 859623: static constexpr _Head& 859623: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 859623: 859623: static constexpr const _Head& 859623: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 859623: 859623: _Head _M_head_impl; 859623: }; 859623: # 272 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: struct _Tuple_impl; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Tuple_impl<_Idx, _Head, _Tail...> 859623: : public _Tuple_impl<_Idx + 1, _Tail...>, 859623: private _Head_base<_Idx, _Head> 859623: { 859623: template friend struct _Tuple_impl; 859623: 859623: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 859623: typedef _Head_base<_Idx, _Head> _Base; 859623: 859623: static constexpr _Head& 859623: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 859623: 859623: static constexpr const _Head& 859623: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 859623: 859623: static constexpr _Inherited& 859623: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 859623: 859623: static constexpr const _Inherited& 859623: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 859623: 859623: constexpr _Tuple_impl() 859623: : _Inherited(), _Base() { } 859623: 859623: explicit constexpr 859623: _Tuple_impl(const _Head& __head, const _Tail&... __tail) 859623: : _Inherited(__tail...), _Base(__head) 859623: { } 859623: 859623: template> 859623: explicit constexpr 859623: _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 859623: : _Inherited(std::forward<_UTail>(__tail)...), 859623: _Base(std::forward<_UHead>(__head)) 859623: { } 859623: 859623: constexpr _Tuple_impl(const _Tuple_impl&) = default; 859623: 859623: 859623: 859623: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 859623: 859623: _Tuple_impl(_Tuple_impl&&) = default; 859623: 859623: template 859623: constexpr 859623: _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 859623: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 859623: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) 859623: { } 859623: 859623: template 859623: constexpr 859623: _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 859623: : _Inherited(std::move 859623: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 859623: _Base(std::forward<_UHead> 859623: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 859623: { } 859623: # 368 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 859623: : _Inherited(__tag, __a), 859623: _Base(__tag, __use_alloc<_Head>(__a)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 859623: const _Head& __head, const _Tail&... __tail) 859623: : _Inherited(__tag, __a, __tail...), 859623: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) 859623: { } 859623: 859623: template> 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 859623: _UHead&& __head, _UTail&&... __tail) 859623: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 859623: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 859623: std::forward<_UHead>(__head)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 859623: const _Tuple_impl& __in) 859623: : _Inherited(__tag, __a, _M_tail(__in)), 859623: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 859623: _Tuple_impl&& __in) 859623: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 859623: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 859623: std::forward<_Head>(_M_head(__in))) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 859623: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) 859623: : _Inherited(__tag, __a, 859623: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), 859623: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 859623: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 859623: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 859623: : _Inherited(__tag, __a, std::move 859623: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 859623: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 859623: std::forward<_UHead> 859623: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 859623: { } 859623: # 463 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: 859623: void 859623: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) 859623: { 859623: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 859623: _M_tail(*this)._M_assign( 859623: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); 859623: } 859623: 859623: template 859623: 859623: void 859623: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 859623: { 859623: _M_head(*this) = std::forward<_UHead> 859623: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 859623: _M_tail(*this)._M_assign( 859623: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); 859623: } 859623: # 523 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: protected: 859623: 859623: void 859623: _M_swap(_Tuple_impl& __in) 859623: { 859623: using std::swap; 859623: swap(_M_head(*this), _M_head(__in)); 859623: _Inherited::_M_swap(_M_tail(__in)); 859623: } 859623: # 542 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: }; 859623: 859623: 859623: template 859623: struct _Tuple_impl<_Idx, _Head> 859623: : private _Head_base<_Idx, _Head> 859623: { 859623: template friend struct _Tuple_impl; 859623: 859623: typedef _Head_base<_Idx, _Head> _Base; 859623: 859623: static constexpr _Head& 859623: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 859623: 859623: static constexpr const _Head& 859623: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 859623: 859623: constexpr 859623: _Tuple_impl() 859623: : _Base() { } 859623: 859623: explicit constexpr 859623: _Tuple_impl(const _Head& __head) 859623: : _Base(__head) 859623: { } 859623: 859623: template 859623: explicit constexpr 859623: _Tuple_impl(_UHead&& __head) 859623: : _Base(std::forward<_UHead>(__head)) 859623: { } 859623: 859623: constexpr _Tuple_impl(const _Tuple_impl&) = default; 859623: 859623: 859623: 859623: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 859623: 859623: 859623: 859623: 859623: constexpr 859623: _Tuple_impl(_Tuple_impl&& __in) 859623: noexcept(is_nothrow_move_constructible<_Head>::value) 859623: : _Base(static_cast<_Base&&>(__in)) 859623: { } 859623: 859623: 859623: template 859623: constexpr 859623: _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 859623: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) 859623: { } 859623: 859623: template 859623: constexpr 859623: _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 859623: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 859623: { } 859623: # 624 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 859623: : _Base(__tag, __use_alloc<_Head>(__a)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 859623: const _Head& __head) 859623: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), __head) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 859623: _UHead&& __head) 859623: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 859623: std::forward<_UHead>(__head)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 859623: const _Tuple_impl& __in) 859623: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), _M_head(__in)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 859623: _Tuple_impl&& __in) 859623: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 859623: std::forward<_Head>(_M_head(__in))) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 859623: const _Tuple_impl<_Idx, _UHead>& __in) 859623: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 859623: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) 859623: { } 859623: 859623: template 859623: 859623: _Tuple_impl(allocator_arg_t, const _Alloc& __a, 859623: _Tuple_impl<_Idx, _UHead>&& __in) 859623: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 859623: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 859623: { } 859623: # 703 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: 859623: void 859623: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) 859623: { 859623: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 859623: } 859623: 859623: template 859623: 859623: void 859623: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) 859623: { 859623: _M_head(*this) 859623: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 859623: } 859623: # 749 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: protected: 859623: 859623: void 859623: _M_swap(_Tuple_impl& __in) 859623: { 859623: using std::swap; 859623: swap(_M_head(*this), _M_head(__in)); 859623: } 859623: # 766 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: }; 859623: 859623: 859623: 859623: template 859623: struct _TupleConstraints 859623: { 859623: template 859623: using __constructible = __and_...>; 859623: 859623: template 859623: using __convertible = __and_...>; 859623: 859623: 859623: 859623: 859623: template 859623: static constexpr bool __is_implicitly_constructible() 859623: { 859623: return __and_<__constructible<_UTypes...>, 859623: __convertible<_UTypes...> 859623: >::value; 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: static constexpr bool __is_explicitly_constructible() 859623: { 859623: return __and_<__constructible<_UTypes...>, 859623: __not_<__convertible<_UTypes...>> 859623: >::value; 859623: } 859623: 859623: static constexpr bool __is_implicitly_default_constructible() 859623: { 859623: return __and_... 859623: >::value; 859623: } 859623: 859623: static constexpr bool __is_explicitly_default_constructible() 859623: { 859623: return __and_..., 859623: __not_<__and_< 859623: std::__is_implicitly_default_constructible<_Types>...> 859623: >>::value; 859623: } 859623: }; 859623: 859623: 859623: 859623: template 859623: struct _TupleConstraints 859623: { 859623: template 859623: static constexpr bool __is_implicitly_constructible() 859623: { return false; } 859623: 859623: template 859623: static constexpr bool __is_explicitly_constructible() 859623: { return false; } 859623: }; 859623: 859623: 859623: 859623: template 859623: class tuple : public _Tuple_impl<0, _Elements...> 859623: { 859623: using _Inherited = _Tuple_impl<0, _Elements...>; 859623: # 1352 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: using _TCC = _TupleConstraints<_Cond, _Elements...>; 859623: 859623: 859623: template 859623: using _ImplicitDefaultCtor = __enable_if_t< 859623: _TCC<_Dummy>::__is_implicitly_default_constructible(), 859623: bool>; 859623: 859623: 859623: template 859623: using _ExplicitDefaultCtor = __enable_if_t< 859623: _TCC<_Dummy>::__is_explicitly_default_constructible(), 859623: bool>; 859623: 859623: 859623: template 859623: using _ImplicitCtor = __enable_if_t< 859623: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), 859623: bool>; 859623: 859623: 859623: template 859623: using _ExplicitCtor = __enable_if_t< 859623: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), 859623: bool>; 859623: 859623: 859623: template 859623: static constexpr bool __nothrow_constructible() 859623: { 859623: return 859623: __and_...>::value; 859623: } 859623: 859623: 859623: template 859623: static constexpr bool __valid_args() 859623: { 859623: return sizeof...(_Elements) == 1 859623: && !is_same>::value; 859623: } 859623: 859623: 859623: template 859623: static constexpr bool __valid_args() 859623: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } 859623: # 1409 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template> 859623: struct _UseOtherCtor 859623: : false_type 859623: { }; 859623: 859623: 859623: template 859623: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> 859623: : __or_, is_constructible<_Tp, _Tuple>>::type 859623: { }; 859623: 859623: 859623: template 859623: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> 859623: : true_type 859623: { }; 859623: 859623: 859623: 859623: 859623: template 859623: static constexpr bool __use_other_ctor() 859623: { return _UseOtherCtor<_Tuple>::value; } 859623: # 1455 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: public: 859623: template::value> = true> 859623: constexpr 859623: tuple() 859623: noexcept(__and_...>::value) 859623: : _Inherited() { } 859623: 859623: template::value> = false> 859623: explicit constexpr 859623: tuple() 859623: noexcept(__and_...>::value) 859623: : _Inherited() { } 859623: 859623: template= 1), 859623: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 859623: constexpr 859623: tuple(const _Elements&... __elements) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(__elements...) { } 859623: 859623: template= 1), 859623: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 859623: explicit constexpr 859623: tuple(const _Elements&... __elements) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(__elements...) { } 859623: 859623: template(), 859623: _ImplicitCtor<_Valid, _UElements...> = true> 859623: constexpr 859623: tuple(_UElements&&... __elements) 859623: noexcept(__nothrow_constructible<_UElements...>()) 859623: : _Inherited(std::forward<_UElements>(__elements)...) 859623: { ; } 859623: 859623: template(), 859623: _ExplicitCtor<_Valid, _UElements...> = false> 859623: explicit constexpr 859623: tuple(_UElements&&... __elements) 859623: noexcept(__nothrow_constructible<_UElements...>()) 859623: : _Inherited(std::forward<_UElements>(__elements)...) 859623: { ; } 859623: 859623: constexpr tuple(const tuple&) = default; 859623: 859623: constexpr tuple(tuple&&) = default; 859623: 859623: template&>(), 859623: _ImplicitCtor<_Valid, const _UElements&...> = true> 859623: constexpr 859623: tuple(const tuple<_UElements...>& __in) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(static_cast&>(__in)) 859623: { ; } 859623: 859623: template&>(), 859623: _ExplicitCtor<_Valid, const _UElements&...> = false> 859623: explicit constexpr 859623: tuple(const tuple<_UElements...>& __in) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(static_cast&>(__in)) 859623: { ; } 859623: 859623: template&&>(), 859623: _ImplicitCtor<_Valid, _UElements...> = true> 859623: constexpr 859623: tuple(tuple<_UElements...>&& __in) 859623: noexcept(__nothrow_constructible<_UElements...>()) 859623: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 859623: { ; } 859623: 859623: template&&>(), 859623: _ExplicitCtor<_Valid, _UElements...> = false> 859623: explicit constexpr 859623: tuple(tuple<_UElements...>&& __in) 859623: noexcept(__nothrow_constructible<_UElements...>()) 859623: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 859623: { ; } 859623: 859623: 859623: 859623: template::value> = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a) 859623: : _Inherited(__tag, __a) { } 859623: 859623: template::value> = false> 859623: 859623: explicit 859623: tuple(allocator_arg_t __tag, const _Alloc& __a) 859623: : _Inherited(__tag, __a) { } 859623: 859623: template= 1), 859623: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const _Elements&... __elements) 859623: : _Inherited(__tag, __a, __elements...) { } 859623: 859623: template= 1), 859623: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 859623: 859623: explicit 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const _Elements&... __elements) 859623: : _Inherited(__tag, __a, __elements...) { } 859623: 859623: template(), 859623: _ImplicitCtor<_Valid, _UElements...> = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: _UElements&&... __elements) 859623: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 859623: { ; } 859623: 859623: template(), 859623: _ExplicitCtor<_Valid, _UElements...> = false> 859623: 859623: explicit 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: _UElements&&... __elements) 859623: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 859623: { ; } 859623: 859623: template 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 859623: : _Inherited(__tag, __a, static_cast(__in)) { } 859623: 859623: template 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 859623: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 859623: 859623: template&>(), 859623: _ImplicitCtor<_Valid, const _UElements&...> = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const tuple<_UElements...>& __in) 859623: : _Inherited(__tag, __a, 859623: static_cast&>(__in)) 859623: { ; } 859623: 859623: template&>(), 859623: _ExplicitCtor<_Valid, const _UElements&...> = false> 859623: 859623: explicit 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const tuple<_UElements...>& __in) 859623: : _Inherited(__tag, __a, 859623: static_cast&>(__in)) 859623: { ; } 859623: 859623: template&&>(), 859623: _ImplicitCtor<_Valid, _UElements...> = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: tuple<_UElements...>&& __in) 859623: : _Inherited(__tag, __a, 859623: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 859623: { ; } 859623: 859623: template&&>(), 859623: _ExplicitCtor<_Valid, _UElements...> = false> 859623: 859623: explicit 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: tuple<_UElements...>&& __in) 859623: : _Inherited(__tag, __a, 859623: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 859623: { ; } 859623: # 1887 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: private: 859623: template 859623: static constexpr 859623: __enable_if_t 859623: __assignable() 859623: { return __and_...>::value; } 859623: 859623: 859623: template 859623: static constexpr bool __nothrow_assignable() 859623: { 859623: return 859623: __and_...>::value; 859623: } 859623: 859623: public: 859623: 859623: 859623: tuple& 859623: operator=(__conditional_t<__assignable(), 859623: const tuple&, 859623: const __nonesuch&> __in) 859623: noexcept(__nothrow_assignable()) 859623: { 859623: this->_M_assign(__in); 859623: return *this; 859623: } 859623: 859623: 859623: tuple& 859623: operator=(__conditional_t<__assignable<_Elements...>(), 859623: tuple&&, 859623: __nonesuch&&> __in) 859623: noexcept(__nothrow_assignable<_Elements...>()) 859623: { 859623: this->_M_assign(std::move(__in)); 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: __enable_if_t<__assignable(), tuple&> 859623: operator=(const tuple<_UElements...>& __in) 859623: noexcept(__nothrow_assignable()) 859623: { 859623: this->_M_assign(__in); 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: __enable_if_t<__assignable<_UElements...>(), tuple&> 859623: operator=(tuple<_UElements...>&& __in) 859623: noexcept(__nothrow_assignable<_UElements...>()) 859623: { 859623: this->_M_assign(std::move(__in)); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: 859623: void 859623: swap(tuple& __in) 859623: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 859623: { _Inherited::_M_swap(__in); } 859623: # 1967 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: }; 859623: # 1983 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template<> 859623: class tuple<> 859623: { 859623: public: 859623: 859623: void swap(tuple&) noexcept { } 859623: 859623: 859623: 859623: 859623: 859623: tuple() = default; 859623: 859623: template 859623: 859623: tuple(allocator_arg_t, const _Alloc&) noexcept { } 859623: template 859623: 859623: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 859623: { 859623: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 859623: 859623: 859623: template 859623: using _ImplicitDefaultCtor = __enable_if_t< 859623: _TupleConstraints<_Dummy, _U1, _U2>:: 859623: __is_implicitly_default_constructible(), 859623: bool>; 859623: 859623: 859623: template 859623: using _ExplicitDefaultCtor = __enable_if_t< 859623: _TupleConstraints<_Dummy, _U1, _U2>:: 859623: __is_explicitly_default_constructible(), 859623: bool>; 859623: 859623: template 859623: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; 859623: 859623: 859623: template 859623: using _ImplicitCtor = __enable_if_t< 859623: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), 859623: bool>; 859623: 859623: 859623: template 859623: using _ExplicitCtor = __enable_if_t< 859623: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), 859623: bool>; 859623: 859623: template 859623: static constexpr bool __assignable() 859623: { 859623: return __and_, 859623: is_assignable<_T2&, _U2>>::value; 859623: } 859623: 859623: template 859623: static constexpr bool __nothrow_assignable() 859623: { 859623: return __and_, 859623: is_nothrow_assignable<_T2&, _U2>>::value; 859623: } 859623: 859623: template 859623: static constexpr bool __nothrow_constructible() 859623: { 859623: return __and_, 859623: is_nothrow_constructible<_T2, _U2>>::value; 859623: } 859623: 859623: static constexpr bool __nothrow_default_constructible() 859623: { 859623: return __and_, 859623: is_nothrow_default_constructible<_T2>>::value; 859623: } 859623: 859623: template 859623: static constexpr bool __is_alloc_arg() 859623: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } 859623: # 2086 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: public: 859623: template = true> 859623: constexpr 859623: tuple() 859623: noexcept(__nothrow_default_constructible()) 859623: : _Inherited() { } 859623: 859623: template = false> 859623: explicit constexpr 859623: tuple() 859623: noexcept(__nothrow_default_constructible()) 859623: : _Inherited() { } 859623: 859623: template = true> 859623: constexpr 859623: tuple(const _T1& __a1, const _T2& __a2) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(__a1, __a2) { } 859623: 859623: template = false> 859623: explicit constexpr 859623: tuple(const _T1& __a1, const _T2& __a2) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(__a1, __a2) { } 859623: 859623: template(), _U1, _U2> = true> 859623: constexpr 859623: tuple(_U1&& __a1, _U2&& __a2) 859623: noexcept(__nothrow_constructible<_U1, _U2>()) 859623: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) 859623: { ; } 859623: 859623: template(), _U1, _U2> = false> 859623: explicit constexpr 859623: tuple(_U1&& __a1, _U2&& __a2) 859623: noexcept(__nothrow_constructible<_U1, _U2>()) 859623: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) 859623: { ; } 859623: 859623: constexpr tuple(const tuple&) = default; 859623: 859623: constexpr tuple(tuple&&) = default; 859623: 859623: template = true> 859623: constexpr 859623: tuple(const tuple<_U1, _U2>& __in) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(static_cast&>(__in)) 859623: { ; } 859623: 859623: template = false> 859623: explicit constexpr 859623: tuple(const tuple<_U1, _U2>& __in) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(static_cast&>(__in)) 859623: { ; } 859623: 859623: template = true> 859623: constexpr 859623: tuple(tuple<_U1, _U2>&& __in) 859623: noexcept(__nothrow_constructible<_U1, _U2>()) 859623: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 859623: { ; } 859623: 859623: template = false> 859623: explicit constexpr 859623: tuple(tuple<_U1, _U2>&& __in) 859623: noexcept(__nothrow_constructible<_U1, _U2>()) 859623: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 859623: { ; } 859623: 859623: template = true> 859623: constexpr 859623: tuple(const pair<_U1, _U2>& __in) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(__in.first, __in.second) 859623: { ; } 859623: 859623: template = false> 859623: explicit constexpr 859623: tuple(const pair<_U1, _U2>& __in) 859623: noexcept(__nothrow_constructible()) 859623: : _Inherited(__in.first, __in.second) 859623: { ; } 859623: 859623: template = true> 859623: constexpr 859623: tuple(pair<_U1, _U2>&& __in) 859623: noexcept(__nothrow_constructible<_U1, _U2>()) 859623: : _Inherited(std::forward<_U1>(__in.first), 859623: std::forward<_U2>(__in.second)) 859623: { ; } 859623: 859623: template = false> 859623: explicit constexpr 859623: tuple(pair<_U1, _U2>&& __in) 859623: noexcept(__nothrow_constructible<_U1, _U2>()) 859623: : _Inherited(std::forward<_U1>(__in.first), 859623: std::forward<_U2>(__in.second)) 859623: { ; } 859623: 859623: 859623: 859623: template::value, _T1, _T2> = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a) 859623: : _Inherited(__tag, __a) { } 859623: 859623: template::value, _T1, _T2> = false> 859623: 859623: explicit 859623: tuple(allocator_arg_t __tag, const _Alloc& __a) 859623: : _Inherited(__tag, __a) { } 859623: 859623: template = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const _T1& __a1, const _T2& __a2) 859623: : _Inherited(__tag, __a, __a1, __a2) { } 859623: 859623: template = false> 859623: explicit 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const _T1& __a1, const _T2& __a2) 859623: : _Inherited(__tag, __a, __a1, __a2) { } 859623: 859623: template = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 859623: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 859623: std::forward<_U2>(__a2)) 859623: { ; } 859623: 859623: template = false> 859623: explicit 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: _U1&& __a1, _U2&& __a2) 859623: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 859623: std::forward<_U2>(__a2)) 859623: { ; } 859623: 859623: template 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 859623: : _Inherited(__tag, __a, static_cast(__in)) { } 859623: 859623: template 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 859623: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 859623: 859623: template = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const tuple<_U1, _U2>& __in) 859623: : _Inherited(__tag, __a, 859623: static_cast&>(__in)) 859623: { ; } 859623: 859623: template = false> 859623: explicit 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const tuple<_U1, _U2>& __in) 859623: : _Inherited(__tag, __a, 859623: static_cast&>(__in)) 859623: { ; } 859623: 859623: template = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 859623: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 859623: { ; } 859623: 859623: template = false> 859623: explicit 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 859623: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 859623: { ; } 859623: 859623: template = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const pair<_U1, _U2>& __in) 859623: : _Inherited(__tag, __a, __in.first, __in.second) 859623: { ; } 859623: 859623: template = false> 859623: explicit 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, 859623: const pair<_U1, _U2>& __in) 859623: : _Inherited(__tag, __a, __in.first, __in.second) 859623: { ; } 859623: 859623: template = true> 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 859623: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 859623: std::forward<_U2>(__in.second)) 859623: { ; } 859623: 859623: template = false> 859623: explicit 859623: 859623: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 859623: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 859623: std::forward<_U2>(__in.second)) 859623: { ; } 859623: 859623: 859623: 859623: 859623: tuple& 859623: operator=(__conditional_t<__assignable(), 859623: const tuple&, 859623: const __nonesuch&> __in) 859623: noexcept(__nothrow_assignable()) 859623: { 859623: this->_M_assign(__in); 859623: return *this; 859623: } 859623: 859623: 859623: tuple& 859623: operator=(__conditional_t<__assignable<_T1, _T2>(), 859623: tuple&&, 859623: __nonesuch&&> __in) 859623: noexcept(__nothrow_assignable<_T1, _T2>()) 859623: { 859623: this->_M_assign(std::move(__in)); 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: __enable_if_t<__assignable(), tuple&> 859623: operator=(const tuple<_U1, _U2>& __in) 859623: noexcept(__nothrow_assignable()) 859623: { 859623: this->_M_assign(__in); 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 859623: operator=(tuple<_U1, _U2>&& __in) 859623: noexcept(__nothrow_assignable<_U1, _U2>()) 859623: { 859623: this->_M_assign(std::move(__in)); 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: __enable_if_t<__assignable(), tuple&> 859623: operator=(const pair<_U1, _U2>& __in) 859623: noexcept(__nothrow_assignable()) 859623: { 859623: this->_M_head(*this) = __in.first; 859623: this->_M_tail(*this)._M_head(*this) = __in.second; 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 859623: operator=(pair<_U1, _U2>&& __in) 859623: noexcept(__nothrow_assignable<_U1, _U2>()) 859623: { 859623: this->_M_head(*this) = std::forward<_U1>(__in.first); 859623: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 859623: return *this; 859623: } 859623: 859623: 859623: void 859623: swap(tuple& __in) 859623: noexcept(__and_<__is_nothrow_swappable<_T1>, 859623: __is_nothrow_swappable<_T2>>::value) 859623: { _Inherited::_M_swap(__in); } 859623: }; 859623: 859623: 859623: 859623: template 859623: struct tuple_size> 859623: : public integral_constant { }; 859623: # 2418 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: struct tuple_element<__i, tuple<_Types...>> 859623: { 859623: static_assert(__i < sizeof...(_Types), "tuple index must be in range"); 859623: 859623: using type = typename _Nth_type<__i, _Types...>::type; 859623: }; 859623: 859623: template 859623: constexpr _Head& 859623: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 859623: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 859623: 859623: template 859623: constexpr const _Head& 859623: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 859623: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 859623: 859623: 859623: template 859623: __enable_if_t<(__i >= sizeof...(_Types))> 859623: __get_helper(const tuple<_Types...>&) = delete; 859623: 859623: 859623: template 859623: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 859623: get(tuple<_Elements...>& __t) noexcept 859623: { return std::__get_helper<__i>(__t); } 859623: 859623: 859623: template 859623: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 859623: get(const tuple<_Elements...>& __t) noexcept 859623: { return std::__get_helper<__i>(__t); } 859623: 859623: 859623: template 859623: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 859623: get(tuple<_Elements...>&& __t) noexcept 859623: { 859623: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 859623: return std::forward<__element_type>(std::__get_helper<__i>(__t)); 859623: } 859623: 859623: 859623: template 859623: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 859623: get(const tuple<_Elements...>&& __t) noexcept 859623: { 859623: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 859623: return std::forward(std::__get_helper<__i>(__t)); 859623: } 859623: 859623: 859623: 859623: template 859623: constexpr __enable_if_t<(__i >= sizeof...(_Elements))> 859623: get(const tuple<_Elements...>&) = delete; 859623: # 2578 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: struct __tuple_compare 859623: { 859623: static constexpr bool 859623: __eq(const _Tp& __t, const _Up& __u) 859623: { 859623: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 859623: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 859623: } 859623: 859623: static constexpr bool 859623: __less(const _Tp& __t, const _Up& __u) 859623: { 859623: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 859623: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 859623: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 859623: } 859623: }; 859623: 859623: template 859623: struct __tuple_compare<_Tp, _Up, __size, __size> 859623: { 859623: static constexpr bool 859623: __eq(const _Tp&, const _Up&) { return true; } 859623: 859623: static constexpr bool 859623: __less(const _Tp&, const _Up&) { return false; } 859623: }; 859623: 859623: template 859623: [[__nodiscard__]] 859623: constexpr bool 859623: operator==(const tuple<_TElements...>& __t, 859623: const tuple<_UElements...>& __u) 859623: { 859623: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 859623: "tuple objects can only be compared if they have equal sizes."); 859623: using __compare = __tuple_compare, 859623: tuple<_UElements...>, 859623: 0, sizeof...(_TElements)>; 859623: return __compare::__eq(__t, __u); 859623: } 859623: 859623: template 859623: [[__nodiscard__]] 859623: constexpr bool 859623: operator<(const tuple<_TElements...>& __t, 859623: const tuple<_UElements...>& __u) 859623: { 859623: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 859623: "tuple objects can only be compared if they have equal sizes."); 859623: using __compare = __tuple_compare, 859623: tuple<_UElements...>, 859623: 0, sizeof...(_TElements)>; 859623: return __compare::__less(__t, __u); 859623: } 859623: 859623: template 859623: [[__nodiscard__]] 859623: constexpr bool 859623: operator!=(const tuple<_TElements...>& __t, 859623: const tuple<_UElements...>& __u) 859623: { return !(__t == __u); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: constexpr bool 859623: operator>(const tuple<_TElements...>& __t, 859623: const tuple<_UElements...>& __u) 859623: { return __u < __t; } 859623: 859623: template 859623: [[__nodiscard__]] 859623: constexpr bool 859623: operator<=(const tuple<_TElements...>& __t, 859623: const tuple<_UElements...>& __u) 859623: { return !(__u < __t); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: constexpr bool 859623: operator>=(const tuple<_TElements...>& __t, 859623: const tuple<_UElements...>& __u) 859623: { return !(__t < __u); } 859623: 859623: 859623: 859623: 859623: template 859623: constexpr tuple::__type...> 859623: make_tuple(_Elements&&... __args) 859623: { 859623: typedef tuple::__type...> 859623: __result_type; 859623: return __result_type(std::forward<_Elements>(__args)...); 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: constexpr tuple<_Elements&&...> 859623: forward_as_tuple(_Elements&&... __args) noexcept 859623: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 859623: 859623: 859623: template 859623: struct __make_tuple_impl; 859623: 859623: template 859623: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 859623: : __make_tuple_impl<_Idx + 1, 859623: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 859623: _Tuple, _Nm> 859623: { }; 859623: 859623: template 859623: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 859623: { 859623: typedef tuple<_Tp...> __type; 859623: }; 859623: 859623: template 859623: struct __do_make_tuple 859623: : __make_tuple_impl<0, tuple<>, _Tuple, tuple_size<_Tuple>::value> 859623: { }; 859623: 859623: 859623: template 859623: struct __make_tuple 859623: : public __do_make_tuple<__remove_cvref_t<_Tuple>> 859623: { }; 859623: 859623: 859623: template 859623: struct __combine_tuples; 859623: 859623: template<> 859623: struct __combine_tuples<> 859623: { 859623: typedef tuple<> __type; 859623: }; 859623: 859623: template 859623: struct __combine_tuples> 859623: { 859623: typedef tuple<_Ts...> __type; 859623: }; 859623: 859623: template 859623: struct __combine_tuples, tuple<_T2s...>, _Rem...> 859623: { 859623: typedef typename __combine_tuples, 859623: _Rem...>::__type __type; 859623: }; 859623: 859623: 859623: template 859623: struct __tuple_cat_result 859623: { 859623: typedef typename __combine_tuples 859623: ::__type...>::__type __type; 859623: }; 859623: 859623: 859623: 859623: template 859623: struct __make_1st_indices; 859623: 859623: template<> 859623: struct __make_1st_indices<> 859623: { 859623: typedef _Index_tuple<> __type; 859623: }; 859623: 859623: template 859623: struct __make_1st_indices<_Tp, _Tpls...> 859623: { 859623: typedef typename _Build_index_tuple::type>::value>::__type __type; 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct __tuple_concater; 859623: 859623: template 859623: struct __tuple_concater<_Ret, _Index_tuple<_Is...>, _Tp, _Tpls...> 859623: { 859623: template 859623: static constexpr _Ret 859623: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 859623: { 859623: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 859623: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 859623: return __next::_S_do(std::forward<_Tpls>(__tps)..., 859623: std::forward<_Us>(__us)..., 859623: std::get<_Is>(std::forward<_Tp>(__tp))...); 859623: } 859623: }; 859623: 859623: template 859623: struct __tuple_concater<_Ret, _Index_tuple<>> 859623: { 859623: template 859623: static constexpr _Ret 859623: _S_do(_Us&&... __us) 859623: { 859623: return _Ret(std::forward<_Us>(__us)...); 859623: } 859623: }; 859623: 859623: template 859623: struct __is_tuple_like_impl> : true_type 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template...>::value>::type> 859623: 859623: constexpr auto 859623: tuple_cat(_Tpls&&... __tpls) 859623: -> typename __tuple_cat_result<_Tpls...>::__type 859623: { 859623: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 859623: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 859623: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 859623: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 859623: } 859623: 859623: 859623: 859623: 859623: template 859623: constexpr tuple<_Elements&...> 859623: tie(_Elements&... __args) noexcept 859623: { return tuple<_Elements&...>(__args...); } 859623: 859623: 859623: template 859623: 859623: inline 859623: 859623: 859623: 859623: 859623: 859623: void 859623: 859623: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 859623: noexcept(noexcept(__x.swap(__y))) 859623: { __x.swap(__y); } 859623: # 2855 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: struct uses_allocator, _Alloc> : true_type { }; 859623: # 2867 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: template 859623: template 859623: 859623: inline 859623: pair<_T1, _T2>:: 859623: pair(piecewise_construct_t, 859623: tuple<_Args1...> __first, tuple<_Args2...> __second) 859623: : pair(__first, __second, 859623: typename _Build_index_tuple::__type(), 859623: typename _Build_index_tuple::__type()) 859623: { } 859623: 859623: template 859623: template 859623: inline 859623: pair<_T1, _T2>:: 859623: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 859623: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 859623: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 859623: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 859623: { } 859623: # 3029 "/usr/arm-linux-gnueabi/include/c++/15/tuple" 3 859623: 859623: } 859623: # 56 "/usr/arm-linux-gnueabi/include/c++/15/functional" 2 3 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/typeinfo" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/typeinfo" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/typeinfo" 2 3 859623: 859623: #pragma GCC visibility push(default) 859623: 859623: extern "C++" { 859623: 859623: namespace __cxxabiv1 859623: { 859623: class __class_type_info; 859623: } 859623: # 85 "/usr/arm-linux-gnueabi/include/c++/15/typeinfo" 3 859623: namespace std 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: class type_info 859623: { 859623: public: 859623: 859623: 859623: 859623: 859623: virtual ~type_info(); 859623: 859623: 859623: 859623: const char* name() const noexcept 859623: { return __name[0] == '*' ? __name + 1 : __name; } 859623: 859623: 859623: 859623: bool before(const type_info& __arg) const noexcept; 859623: 859623: 859623: bool operator==(const type_info& __arg) const noexcept; 859623: 859623: 859623: bool operator!=(const type_info& __arg) const noexcept 859623: { return !operator==(__arg); } 859623: 859623: 859623: 859623: size_t hash_code() const noexcept 859623: { 859623: 859623: return _Hash_bytes(name(), __builtin_strlen(name()), 859623: static_cast(0xc70f6907UL)); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: virtual bool __is_pointer_p() const; 859623: 859623: 859623: virtual bool __is_function_p() const; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 859623: unsigned __outer) const; 859623: 859623: 859623: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 859623: void **__obj_ptr) const; 859623: 859623: protected: 859623: const char *__name; 859623: 859623: explicit type_info(const char *__n): __name(__n) { } 859623: 859623: private: 859623: 859623: 859623: type_info& operator=(const type_info&) = delete; 859623: type_info(const type_info&) = delete; 859623: 859623: 859623: 859623: 859623: 859623: 859623: bool __equal(const type_info&) const noexcept; 859623: 859623: }; 859623: # 224 "/usr/arm-linux-gnueabi/include/c++/15/typeinfo" 3 859623: class bad_cast : public exception 859623: { 859623: public: 859623: bad_cast() noexcept { } 859623: 859623: 859623: 859623: virtual ~bad_cast() noexcept; 859623: 859623: 859623: virtual const char* what() const noexcept; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: class bad_typeid : public exception 859623: { 859623: public: 859623: bad_typeid () noexcept { } 859623: 859623: 859623: 859623: virtual ~bad_typeid() noexcept; 859623: 859623: 859623: virtual const char* what() const noexcept; 859623: }; 859623: } 859623: 859623: } 859623: 859623: #pragma GCC visibility pop 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 2 3 859623: 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: class bad_function_call : public std::exception 859623: { 859623: public: 859623: virtual ~bad_function_call() noexcept; 859623: 859623: const char* what() const noexcept; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_location_invariant 859623: : is_trivially_copyable<_Tp>::type 859623: { }; 859623: 859623: class _Undefined_class; 859623: 859623: union _Nocopy_types 859623: { 859623: void* _M_object; 859623: const void* _M_const_object; 859623: void (*_M_function_pointer)(); 859623: void (_Undefined_class::*_M_member_pointer)(); 859623: }; 859623: 859623: union [[gnu::may_alias]] _Any_data 859623: { 859623: void* _M_access() noexcept { return &_M_pod_data[0]; } 859623: const void* _M_access() const noexcept { return &_M_pod_data[0]; } 859623: 859623: template 859623: _Tp& 859623: _M_access() noexcept 859623: { return *static_cast<_Tp*>(_M_access()); } 859623: 859623: template 859623: const _Tp& 859623: _M_access() const noexcept 859623: { return *static_cast(_M_access()); } 859623: 859623: _Nocopy_types _M_unused; 859623: char _M_pod_data[sizeof(_Nocopy_types)]; 859623: }; 859623: 859623: enum _Manager_operation 859623: { 859623: __get_type_info, 859623: __get_functor_ptr, 859623: __clone_functor, 859623: __destroy_functor 859623: }; 859623: 859623: template 859623: class function; 859623: 859623: 859623: class _Function_base 859623: { 859623: public: 859623: static const size_t _M_max_size = sizeof(_Nocopy_types); 859623: static const size_t _M_max_align = __alignof__(_Nocopy_types); 859623: 859623: template 859623: class _Base_manager 859623: { 859623: protected: 859623: static const bool __stored_locally = 859623: (__is_location_invariant<_Functor>::value 859623: && sizeof(_Functor) <= _M_max_size 859623: && __alignof__(_Functor) <= _M_max_align 859623: && (_M_max_align % __alignof__(_Functor) == 0)); 859623: 859623: using _Local_storage = integral_constant; 859623: 859623: 859623: static _Functor* 859623: _M_get_pointer(const _Any_data& __source) noexcept 859623: { 859623: if (__stored_locally) 859623: { 859623: const _Functor& __f = __source._M_access<_Functor>(); 859623: return const_cast<_Functor*>(std::__addressof(__f)); 859623: } 859623: else 859623: return __source._M_access<_Functor*>(); 859623: } 859623: 859623: private: 859623: 859623: 859623: template 859623: static void 859623: _M_create(_Any_data& __dest, _Fn&& __f, true_type) 859623: { 859623: ::new (__dest._M_access()) _Functor(std::forward<_Fn>(__f)); 859623: } 859623: 859623: 859623: template 859623: static void 859623: _M_create(_Any_data& __dest, _Fn&& __f, false_type) 859623: { 859623: __dest._M_access<_Functor*>() 859623: = new _Functor(std::forward<_Fn>(__f)); 859623: } 859623: 859623: 859623: static void 859623: _M_destroy(_Any_data& __victim, true_type) 859623: { 859623: __victim._M_access<_Functor>().~_Functor(); 859623: } 859623: 859623: 859623: static void 859623: _M_destroy(_Any_data& __victim, false_type) 859623: { 859623: delete __victim._M_access<_Functor*>(); 859623: } 859623: 859623: public: 859623: static bool 859623: _M_manager(_Any_data& __dest, const _Any_data& __source, 859623: _Manager_operation __op) 859623: { 859623: switch (__op) 859623: { 859623: case __get_type_info: 859623: 859623: __dest._M_access() = &typeid(_Functor); 859623: 859623: 859623: 859623: break; 859623: 859623: case __get_functor_ptr: 859623: __dest._M_access<_Functor*>() = _M_get_pointer(__source); 859623: break; 859623: 859623: case __clone_functor: 859623: _M_init_functor(__dest, 859623: *const_cast(_M_get_pointer(__source))); 859623: break; 859623: 859623: case __destroy_functor: 859623: _M_destroy(__dest, _Local_storage()); 859623: break; 859623: } 859623: return false; 859623: } 859623: 859623: template 859623: static void 859623: _M_init_functor(_Any_data& __functor, _Fn&& __f) 859623: noexcept(__and_<_Local_storage, 859623: is_nothrow_constructible<_Functor, _Fn>>::value) 859623: { 859623: _M_create(__functor, std::forward<_Fn>(__f), _Local_storage()); 859623: } 859623: 859623: template 859623: static bool 859623: _M_not_empty_function(const function<_Signature>& __f) noexcept 859623: { return static_cast(__f); } 859623: 859623: template 859623: static bool 859623: _M_not_empty_function(_Tp* __fp) noexcept 859623: { return __fp != nullptr; } 859623: 859623: template 859623: static bool 859623: _M_not_empty_function(_Tp _Class::* __mp) noexcept 859623: { return __mp != nullptr; } 859623: 859623: template 859623: static bool 859623: _M_not_empty_function(const _Tp&) noexcept 859623: { return true; } 859623: }; 859623: 859623: _Function_base() = default; 859623: 859623: ~_Function_base() 859623: { 859623: if (_M_manager) 859623: _M_manager(_M_functor, _M_functor, __destroy_functor); 859623: } 859623: 859623: bool _M_empty() const { return !_M_manager; } 859623: 859623: using _Manager_type 859623: = bool (*)(_Any_data&, const _Any_data&, _Manager_operation); 859623: 859623: _Any_data _M_functor{}; 859623: _Manager_type _M_manager{}; 859623: }; 859623: 859623: template 859623: class _Function_handler; 859623: 859623: template 859623: class _Function_handler<_Res(_ArgTypes...), _Functor> 859623: : public _Function_base::_Base_manager<_Functor> 859623: { 859623: using _Base = _Function_base::_Base_manager<_Functor>; 859623: 859623: public: 859623: static bool 859623: _M_manager(_Any_data& __dest, const _Any_data& __source, 859623: _Manager_operation __op) 859623: { 859623: switch (__op) 859623: { 859623: 859623: case __get_type_info: 859623: __dest._M_access() = &typeid(_Functor); 859623: break; 859623: 859623: case __get_functor_ptr: 859623: __dest._M_access<_Functor*>() = _Base::_M_get_pointer(__source); 859623: break; 859623: 859623: default: 859623: _Base::_M_manager(__dest, __source, __op); 859623: } 859623: return false; 859623: } 859623: 859623: static _Res 859623: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) 859623: { 859623: return std::__invoke_r<_Res>(*_Base::_M_get_pointer(__functor), 859623: std::forward<_ArgTypes>(__args)...); 859623: } 859623: 859623: template 859623: static constexpr bool 859623: _S_nothrow_init() noexcept 859623: { 859623: return __and_>::value; 859623: } 859623: }; 859623: 859623: 859623: template<> 859623: class _Function_handler 859623: { 859623: public: 859623: static bool 859623: _M_manager(_Any_data&, const _Any_data&, _Manager_operation) 859623: { return false; } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: template::value> 859623: struct _Target_handler 859623: : _Function_handler<_Signature, typename remove_cv<_Functor>::type> 859623: { }; 859623: 859623: template 859623: struct _Target_handler<_Signature, _Functor, false> 859623: : _Function_handler 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class function<_Res(_ArgTypes...)> 859623: : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, 859623: private _Function_base 859623: { 859623: 859623: 859623: template, function>::value> 859623: using _Decay_t 859623: = typename __enable_if_t>::type; 859623: 859623: template, 859623: typename _Res2 = __invoke_result<_DFunc&, _ArgTypes...>> 859623: struct _Callable 859623: : __is_invocable_impl<_Res2, _Res>::type 859623: { }; 859623: 859623: template 859623: using _Requires = __enable_if_t<_Cond::value, _Tp>; 859623: 859623: template 859623: using _Handler 859623: = _Function_handler<_Res(_ArgTypes...), __decay_t<_Functor>>; 859623: 859623: public: 859623: typedef _Res result_type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: function() noexcept 859623: : _Function_base() { } 859623: 859623: 859623: 859623: 859623: 859623: function(nullptr_t) noexcept 859623: : _Function_base() { } 859623: # 388 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: function(const function& __x) 859623: : _Function_base() 859623: { 859623: if (static_cast(__x)) 859623: { 859623: __x._M_manager(_M_functor, __x._M_functor, __clone_functor); 859623: _M_invoker = __x._M_invoker; 859623: _M_manager = __x._M_manager; 859623: } 859623: } 859623: # 406 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: function(function&& __x) noexcept 859623: : _Function_base(), _M_invoker(__x._M_invoker) 859623: { 859623: if (static_cast(__x)) 859623: { 859623: _M_functor = __x._M_functor; 859623: _M_manager = __x._M_manager; 859623: __x._M_manager = nullptr; 859623: __x._M_invoker = nullptr; 859623: } 859623: } 859623: # 435 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: template>> 859623: function(_Functor&& __f) 859623: noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>()) 859623: : _Function_base() 859623: { 859623: static_assert(is_copy_constructible<__decay_t<_Functor>>::value, 859623: "std::function target must be copy-constructible"); 859623: static_assert(is_constructible<__decay_t<_Functor>, _Functor>::value, 859623: "std::function target must be constructible from the " 859623: "constructor argument"); 859623: 859623: using _My_handler = _Handler<_Functor>; 859623: 859623: if (_My_handler::_M_not_empty_function(__f)) 859623: { 859623: _My_handler::_M_init_functor(_M_functor, 859623: std::forward<_Functor>(__f)); 859623: _M_invoker = &_My_handler::_M_invoke; 859623: _M_manager = &_My_handler::_M_manager; 859623: } 859623: } 859623: # 470 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: function& 859623: operator=(const function& __x) 859623: { 859623: function(__x).swap(*this); 859623: return *this; 859623: } 859623: # 488 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: function& 859623: operator=(function&& __x) noexcept 859623: { 859623: function(std::move(__x)).swap(*this); 859623: return *this; 859623: } 859623: # 502 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: function& 859623: operator=(nullptr_t) noexcept 859623: { 859623: if (_M_manager) 859623: { 859623: _M_manager(_M_functor, _M_functor, __destroy_functor); 859623: _M_manager = nullptr; 859623: _M_invoker = nullptr; 859623: } 859623: return *this; 859623: } 859623: # 531 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: template 859623: _Requires<_Callable<_Functor>, function&> 859623: operator=(_Functor&& __f) 859623: noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>()) 859623: { 859623: function(std::forward<_Functor>(__f)).swap(*this); 859623: return *this; 859623: } 859623: 859623: 859623: template 859623: function& 859623: operator=(reference_wrapper<_Functor> __f) noexcept 859623: { 859623: function(__f).swap(*this); 859623: return *this; 859623: } 859623: # 558 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: void swap(function& __x) noexcept 859623: { 859623: std::swap(_M_functor, __x._M_functor); 859623: std::swap(_M_manager, __x._M_manager); 859623: std::swap(_M_invoker, __x._M_invoker); 859623: } 859623: # 575 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: explicit operator bool() const noexcept 859623: { return !_M_empty(); } 859623: # 588 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: _Res 859623: operator()(_ArgTypes... __args) const 859623: { 859623: if (_M_empty()) 859623: __throw_bad_function_call(); 859623: return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...); 859623: } 859623: # 607 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: const type_info& 859623: target_type() const noexcept 859623: { 859623: if (_M_manager) 859623: { 859623: _Any_data __typeinfo_result; 859623: _M_manager(__typeinfo_result, _M_functor, __get_type_info); 859623: if (auto __ti = __typeinfo_result._M_access()) 859623: return *__ti; 859623: } 859623: return typeid(void); 859623: } 859623: # 632 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: template 859623: _Functor* 859623: target() noexcept 859623: { 859623: const function* __const_this = this; 859623: const _Functor* __func = __const_this->template target<_Functor>(); 859623: 859623: 859623: return *const_cast<_Functor**>(&__func); 859623: } 859623: 859623: template 859623: const _Functor* 859623: target() const noexcept 859623: { 859623: if (is_object<_Functor>::value) 859623: { 859623: 859623: 859623: using _Handler = _Target_handler<_Res(_ArgTypes...), _Functor>; 859623: 859623: if (_M_manager == &_Handler::_M_manager 859623: 859623: || (_M_manager && typeid(_Functor) == target_type()) 859623: 859623: ) 859623: { 859623: _Any_data __ptr; 859623: _M_manager(__ptr, _M_functor, __get_functor_ptr); 859623: return __ptr._M_access(); 859623: } 859623: } 859623: return nullptr; 859623: } 859623: 859623: 859623: private: 859623: using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...); 859623: _Invoker_type _M_invoker = nullptr; 859623: }; 859623: # 745 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: template 859623: inline bool 859623: operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept 859623: { return !static_cast(__f); } 859623: 859623: 859623: 859623: template 859623: inline bool 859623: operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept 859623: { return !static_cast(__f); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: inline bool 859623: operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept 859623: { return static_cast(__f); } 859623: 859623: 859623: template 859623: inline bool 859623: operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept 859623: { return static_cast(__f); } 859623: # 784 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: template 859623: inline void 859623: swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) noexcept 859623: { __x.swap(__y); } 859623: # 803 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_function.h" 3 859623: 859623: } 859623: # 62 "/usr/arm-linux-gnueabi/include/c++/15/functional" 2 3 859623: # 90 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 91 "/usr/arm-linux-gnueabi/include/c++/15/functional" 2 3 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: template struct _Placeholder { }; 859623: # 150 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: template::value> 859623: class _Mem_fn_base 859623: : public _Mem_fn_traits<_MemFunPtr>::__maybe_type 859623: { 859623: using _Traits = _Mem_fn_traits<_MemFunPtr>; 859623: 859623: using _Arity = typename _Traits::__arity; 859623: using _Varargs = typename _Traits::__vararg; 859623: 859623: template 859623: friend struct _Bind_check_arity; 859623: 859623: _MemFunPtr _M_pmf; 859623: 859623: public: 859623: 859623: using result_type = typename _Traits::__result_type; 859623: 859623: explicit constexpr 859623: _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { } 859623: 859623: template 859623: 859623: auto 859623: operator()(_Args&&... __args) const 859623: noexcept(noexcept( 859623: std::__invoke(_M_pmf, std::forward<_Args>(__args)...))) 859623: -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...)) 859623: { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); } 859623: }; 859623: 859623: 859623: template 859623: class _Mem_fn_base<_MemObjPtr, false> 859623: { 859623: using _Arity = integral_constant; 859623: using _Varargs = false_type; 859623: 859623: template 859623: friend struct _Bind_check_arity; 859623: 859623: _MemObjPtr _M_pm; 859623: 859623: public: 859623: explicit constexpr 859623: _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { } 859623: 859623: template 859623: 859623: auto 859623: operator()(_Tp&& __obj) const 859623: noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))) 859623: -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj))) 859623: { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); } 859623: }; 859623: 859623: template 859623: struct _Mem_fn; 859623: 859623: template 859623: struct _Mem_fn<_Res _Class::*> 859623: : _Mem_fn_base<_Res _Class::*> 859623: { 859623: using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base; 859623: }; 859623: # 243 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: template 859623: 859623: inline _Mem_fn<_Tp _Class::*> 859623: mem_fn(_Tp _Class::* __pm) noexcept 859623: { 859623: return _Mem_fn<_Tp _Class::*>(__pm); 859623: } 859623: # 262 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: template 859623: struct is_bind_expression 859623: : public false_type { }; 859623: # 274 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: template 859623: struct is_placeholder 859623: : public integral_constant 859623: { }; 859623: # 291 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: namespace placeholders 859623: { 859623: # 303 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: extern const _Placeholder<1> _1; 859623: extern const _Placeholder<2> _2; 859623: extern const _Placeholder<3> _3; 859623: extern const _Placeholder<4> _4; 859623: extern const _Placeholder<5> _5; 859623: extern const _Placeholder<6> _6; 859623: extern const _Placeholder<7> _7; 859623: extern const _Placeholder<8> _8; 859623: extern const _Placeholder<9> _9; 859623: extern const _Placeholder<10> _10; 859623: extern const _Placeholder<11> _11; 859623: extern const _Placeholder<12> _12; 859623: extern const _Placeholder<13> _13; 859623: extern const _Placeholder<14> _14; 859623: extern const _Placeholder<15> _15; 859623: extern const _Placeholder<16> _16; 859623: extern const _Placeholder<17> _17; 859623: extern const _Placeholder<18> _18; 859623: extern const _Placeholder<19> _19; 859623: extern const _Placeholder<20> _20; 859623: extern const _Placeholder<21> _21; 859623: extern const _Placeholder<22> _22; 859623: extern const _Placeholder<23> _23; 859623: extern const _Placeholder<24> _24; 859623: extern const _Placeholder<25> _25; 859623: extern const _Placeholder<26> _26; 859623: extern const _Placeholder<27> _27; 859623: extern const _Placeholder<28> _28; 859623: extern const _Placeholder<29> _29; 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_placeholder<_Placeholder<_Num> > 859623: : public integral_constant 859623: { }; 859623: 859623: template 859623: struct is_placeholder > 859623: : public integral_constant 859623: { }; 859623: 859623: 859623: 859623: 859623: template 859623: using _Safe_tuple_element_t 859623: = typename enable_if<(__i < tuple_size<_Tuple>::value), 859623: tuple_element<__i, _Tuple>>::type::type; 859623: # 371 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: template::value, 859623: bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> 859623: class _Mu; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class _Mu, false, false> 859623: { 859623: public: 859623: 859623: 859623: 859623: 859623: template 859623: 859623: _Tp& 859623: operator()(_CVRef& __arg, _Tuple&) const volatile 859623: { return __arg.get(); } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class _Mu<_Arg, true, false> 859623: { 859623: public: 859623: template 859623: 859623: auto 859623: operator()(_CVArg& __arg, 859623: tuple<_Args...>& __tuple) const volatile 859623: -> decltype(__arg(declval<_Args>()...)) 859623: { 859623: 859623: typedef typename _Build_index_tuple::__type 859623: _Indexes; 859623: return this->__call(__arg, __tuple, _Indexes()); 859623: } 859623: 859623: private: 859623: 859623: 859623: template 859623: 859623: auto 859623: __call(_CVArg& __arg, tuple<_Args...>& __tuple, 859623: const _Index_tuple<_Indexes...>&) const volatile 859623: -> decltype(__arg(declval<_Args>()...)) 859623: { 859623: return __arg(std::get<_Indexes>(std::move(__tuple))...); 859623: } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class _Mu<_Arg, false, true> 859623: { 859623: public: 859623: template 859623: 859623: _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&& 859623: operator()(const volatile _Arg&, _Tuple& __tuple) const volatile 859623: { 859623: return 859623: ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple)); 859623: } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class _Mu<_Arg, false, false> 859623: { 859623: public: 859623: template 859623: 859623: _CVArg&& 859623: operator()(_CVArg&& __arg, _Tuple&) const volatile 859623: { return std::forward<_CVArg>(__arg); } 859623: }; 859623: 859623: 859623: template 859623: inline auto 859623: __volget(volatile tuple<_Tp...>& __tuple) 859623: -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile& 859623: { return std::get<_Ind>(const_cast&>(__tuple)); } 859623: 859623: 859623: template 859623: inline auto 859623: __volget(const volatile tuple<_Tp...>& __tuple) 859623: -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile& 859623: { return std::get<_Ind>(const_cast&>(__tuple)); } 859623: # 496 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: template 859623: class _Bind; 859623: 859623: template 859623: class _Bind<_Functor(_Bound_args...)> 859623: : public _Weak_result_type<_Functor> 859623: { 859623: typedef typename _Build_index_tuple::__type 859623: _Bound_indexes; 859623: 859623: _Functor _M_f; 859623: tuple<_Bound_args...> _M_bound_args; 859623: 859623: 859623: template 859623: 859623: _Result 859623: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 859623: { 859623: return std::__invoke(_M_f, 859623: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... 859623: ); 859623: } 859623: 859623: 859623: template 859623: 859623: _Result 859623: __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 859623: { 859623: return std::__invoke(_M_f, 859623: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... 859623: ); 859623: } 859623: 859623: 859623: 859623: template 859623: _Result 859623: __call_v(tuple<_Args...>&& __args, 859623: _Index_tuple<_Indexes...>) volatile 859623: { 859623: return std::__invoke(_M_f, 859623: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... 859623: ); 859623: } 859623: 859623: 859623: template 859623: _Result 859623: __call_c_v(tuple<_Args...>&& __args, 859623: _Index_tuple<_Indexes...>) const volatile 859623: { 859623: return std::__invoke(_M_f, 859623: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... 859623: ); 859623: } 859623: 859623: 859623: template 859623: using _Mu_type = decltype( 859623: _Mu::type>()( 859623: std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) ); 859623: 859623: template 859623: using _Res_type_impl 859623: = __invoke_result_t<_Fn&, _Mu_type<_BArgs, _CallArgs>&&...>; 859623: 859623: template 859623: using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>; 859623: 859623: template 859623: using __dependent = typename 859623: enable_if::value+1), _Functor>::type; 859623: 859623: template class __cv_quals> 859623: using _Res_type_cv = _Res_type_impl< 859623: typename __cv_quals<__dependent<_CallArgs>>::type, 859623: _CallArgs, 859623: typename __cv_quals<_Bound_args>::type...>; 859623: 859623: public: 859623: template 859623: explicit 859623: _Bind(const _Functor& __f, _Args&&... __args) 859623: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) 859623: { } 859623: 859623: template 859623: explicit 859623: _Bind(_Functor&& __f, _Args&&... __args) 859623: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) 859623: { } 859623: 859623: _Bind(const _Bind&) = default; 859623: _Bind(_Bind&&) = default; 859623: 859623: 859623: template>> 859623: 859623: _Result 859623: operator()(_Args&&... __args) 859623: { 859623: return this->__call<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: 859623: template, add_const>> 859623: 859623: _Result 859623: operator()(_Args&&... __args) const 859623: { 859623: return this->__call_c<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: 859623: 859623: template, add_volatile>> 859623: 859623: _Result 859623: operator()(_Args&&... __args) volatile 859623: { 859623: return this->__call_v<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: 859623: template, add_cv>> 859623: 859623: _Result 859623: operator()(_Args&&... __args) const volatile 859623: { 859623: return this->__call_c_v<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: }; 859623: 859623: 859623: template 859623: class _Bind_result; 859623: 859623: template 859623: class _Bind_result<_Result, _Functor(_Bound_args...)> 859623: { 859623: typedef typename _Build_index_tuple::__type 859623: _Bound_indexes; 859623: 859623: _Functor _M_f; 859623: tuple<_Bound_args...> _M_bound_args; 859623: 859623: 859623: template 859623: 859623: _Res 859623: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) 859623: { 859623: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() 859623: (std::get<_Indexes>(_M_bound_args), __args)...); 859623: } 859623: 859623: 859623: template 859623: 859623: _Res 859623: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const 859623: { 859623: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() 859623: (std::get<_Indexes>(_M_bound_args), __args)...); 859623: } 859623: 859623: 859623: 859623: template 859623: _Res 859623: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile 859623: { 859623: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() 859623: (__volget<_Indexes>(_M_bound_args), __args)...); 859623: } 859623: 859623: 859623: template 859623: _Res 859623: __call(tuple<_Args...>&& __args, 859623: _Index_tuple<_Indexes...>) const volatile 859623: { 859623: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() 859623: (__volget<_Indexes>(_M_bound_args), __args)...); 859623: } 859623: 859623: 859623: public: 859623: typedef _Result result_type; 859623: 859623: template 859623: explicit 859623: _Bind_result(const _Functor& __f, _Args&&... __args) 859623: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) 859623: { } 859623: 859623: template 859623: explicit 859623: _Bind_result(_Functor&& __f, _Args&&... __args) 859623: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) 859623: { } 859623: 859623: _Bind_result(const _Bind_result&) = default; 859623: _Bind_result(_Bind_result&&) = default; 859623: 859623: 859623: template 859623: 859623: result_type 859623: operator()(_Args&&... __args) 859623: { 859623: return this->__call<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: 859623: template 859623: 859623: result_type 859623: operator()(_Args&&... __args) const 859623: { 859623: return this->__call<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: 859623: 859623: template 859623: 859623: result_type 859623: operator()(_Args&&... __args) volatile 859623: { 859623: return this->__call<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: 859623: template 859623: 859623: result_type 859623: operator()(_Args&&... __args) const volatile 859623: { 859623: return this->__call<_Result>( 859623: std::forward_as_tuple(std::forward<_Args>(__args)...), 859623: _Bound_indexes()); 859623: } 859623: 859623: 859623: 859623: 859623: }; 859623: # 773 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: template 859623: struct is_bind_expression<_Bind<_Signature> > 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_bind_expression > 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_bind_expression > 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_bind_expression> 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_bind_expression<_Bind_result<_Result, _Signature>> 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_bind_expression> 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_bind_expression> 859623: : public true_type { }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct is_bind_expression> 859623: : public true_type { }; 859623: 859623: template 859623: struct _Bind_check_arity { }; 859623: 859623: template 859623: struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...> 859623: { 859623: static_assert(sizeof...(_BoundArgs) == sizeof...(_Args), 859623: "Wrong number of arguments for function"); 859623: }; 859623: 859623: template 859623: struct _Bind_check_arity<_Ret (*)(_Args..., ...), _BoundArgs...> 859623: { 859623: static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args), 859623: "Wrong number of arguments for function"); 859623: }; 859623: 859623: template 859623: struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...> 859623: { 859623: using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity; 859623: using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs; 859623: static_assert(_Varargs::value 859623: ? sizeof...(_BoundArgs) >= _Arity::value + 1 859623: : sizeof...(_BoundArgs) == _Arity::value + 1, 859623: "Wrong number of arguments for pointer-to-member"); 859623: }; 859623: 859623: 859623: 859623: 859623: template::type> 859623: using __is_socketlike = __or_, is_enum<_Tp2>>; 859623: 859623: template 859623: struct _Bind_helper 859623: : _Bind_check_arity::type, _BoundArgs...> 859623: { 859623: typedef typename decay<_Func>::type __func_type; 859623: typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct _Bind_helper 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: inline typename 859623: _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type 859623: bind(_Func&& __f, _BoundArgs&&... __args) 859623: { 859623: typedef _Bind_helper __helper_type; 859623: return typename __helper_type::type(std::forward<_Func>(__f), 859623: std::forward<_BoundArgs>(__args)...); 859623: } 859623: 859623: template 859623: struct _Bindres_helper 859623: : _Bind_check_arity::type, _BoundArgs...> 859623: { 859623: typedef typename decay<_Func>::type __functor_type; 859623: typedef _Bind_result<_Result, 859623: __functor_type(typename decay<_BoundArgs>::type...)> 859623: type; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: inline 859623: typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type 859623: bind(_Func&& __f, _BoundArgs&&... __args) 859623: { 859623: typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; 859623: return typename __helper_type::type(std::forward<_Func>(__f), 859623: std::forward<_BoundArgs>(__args)...); 859623: } 859623: # 1504 "/usr/arm-linux-gnueabi/include/c++/15/functional" 3 859623: 859623: } 859623: # 25 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/usr/include/openssl/ssl.h" 1 3 4 859623: # 19 "/usr/include/openssl/ssl.h" 3 4 859623: 859623: 859623: # 1 "/usr/include/openssl/macros.h" 1 3 4 859623: # 12 "/usr/include/openssl/macros.h" 3 4 859623: 859623: 859623: # 1 "/usr/include/arm-linux-gnueabi/openssl/opensslconf.h" 1 3 4 859623: # 12 "/usr/include/arm-linux-gnueabi/openssl/opensslconf.h" 3 4 859623: 859623: 859623: # 1 "/usr/include/arm-linux-gnueabi/openssl/configuration.h" 1 3 4 859623: # 16 "/usr/include/arm-linux-gnueabi/openssl/configuration.h" 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: # 176 "/usr/include/arm-linux-gnueabi/openssl/configuration.h" 3 4 859623: } 859623: # 15 "/usr/include/arm-linux-gnueabi/openssl/opensslconf.h" 2 3 4 859623: # 15 "/usr/include/openssl/macros.h" 2 3 4 859623: # 1 "/usr/include/openssl/opensslv.h" 1 3 4 859623: # 15 "/usr/include/openssl/opensslv.h" 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: # 101 "/usr/include/openssl/opensslv.h" 3 4 859623: } 859623: # 16 "/usr/include/openssl/macros.h" 2 3 4 859623: # 22 "/usr/include/openssl/ssl.h" 2 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/e_os2.h" 1 3 4 859623: # 12 "/usr/include/openssl/e_os2.h" 3 4 859623: 859623: # 22 "/usr/include/openssl/e_os2.h" 3 4 859623: extern "C" { 859623: # 257 "/usr/include/openssl/e_os2.h" 3 4 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stdint.h" 1 3 4 859623: # 9 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stdint.h" 3 4 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wpedantic" 859623: # 1 "/usr/arm-linux-gnueabi/include/stdint.h" 1 3 4 859623: # 26 "/usr/arm-linux-gnueabi/include/stdint.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 1 3 4 859623: # 27 "/usr/arm-linux-gnueabi/include/stdint.h" 2 3 4 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 4 859623: # 30 "/usr/arm-linux-gnueabi/include/stdint.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdint-uintn.h" 1 3 4 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/stdint-uintn.h" 3 4 859623: typedef __uint8_t uint8_t; 859623: typedef __uint16_t uint16_t; 859623: typedef __uint32_t uint32_t; 859623: typedef __uint64_t uint64_t; 859623: # 38 "/usr/arm-linux-gnueabi/include/stdint.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/stdint-least.h" 1 3 4 859623: # 25 "/usr/arm-linux-gnueabi/include/bits/stdint-least.h" 3 4 859623: typedef __int_least8_t int_least8_t; 859623: typedef __int_least16_t int_least16_t; 859623: typedef __int_least32_t int_least32_t; 859623: typedef __int_least64_t int_least64_t; 859623: 859623: 859623: typedef __uint_least8_t uint_least8_t; 859623: typedef __uint_least16_t uint_least16_t; 859623: typedef __uint_least32_t uint_least32_t; 859623: typedef __uint_least64_t uint_least64_t; 859623: # 42 "/usr/arm-linux-gnueabi/include/stdint.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: typedef signed char int_fast8_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef int int_fast16_t; 859623: typedef int int_fast32_t; 859623: __extension__ 859623: typedef long long int int_fast64_t; 859623: 859623: 859623: 859623: typedef unsigned char uint_fast8_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef unsigned int uint_fast16_t; 859623: typedef unsigned int uint_fast32_t; 859623: __extension__ 859623: typedef unsigned long long int uint_fast64_t; 859623: # 82 "/usr/arm-linux-gnueabi/include/stdint.h" 3 4 859623: typedef int intptr_t; 859623: 859623: 859623: typedef unsigned int uintptr_t; 859623: 859623: 859623: 859623: 859623: typedef __intmax_t intmax_t; 859623: typedef __uintmax_t uintmax_t; 859623: # 12 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stdint.h" 2 3 4 859623: #pragma GCC diagnostic pop 859623: # 258 "/usr/include/openssl/e_os2.h" 2 3 4 859623: # 266 "/usr/include/openssl/e_os2.h" 3 4 859623: typedef int64_t ossl_intmax_t; 859623: typedef uint64_t ossl_uintmax_t; 859623: # 308 "/usr/include/openssl/e_os2.h" 3 4 859623: } 859623: # 27 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/e_ostime.h" 1 3 4 859623: # 12 "/usr/include/openssl/e_ostime.h" 3 4 859623: 859623: # 35 "/usr/include/openssl/e_ostime.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/time.h" 1 3 4 859623: # 34 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: extern "C" { 859623: # 52 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: struct timezone 859623: { 859623: int tz_minuteswest; 859623: int tz_dsttime; 859623: }; 859623: # 71 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: extern int gettimeofday (struct timeval *__restrict __tv, void *__restrict __tz) noexcept (true) __asm__ ("" "__gettimeofday64") 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: # 98 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: extern int settimeofday (const struct timeval *__tv, const struct timezone *__tz) noexcept (true) __asm__ ("" "__settimeofday64") 859623: 859623: ; 859623: 859623: extern int adjtime (const struct timeval *__delta, struct timeval *__olddelta) noexcept (true) __asm__ ("" "__adjtime64") 859623: 859623: ; 859623: # 114 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: enum __itimer_which 859623: { 859623: 859623: ITIMER_REAL = 0, 859623: 859623: 859623: ITIMER_VIRTUAL = 1, 859623: 859623: 859623: 859623: ITIMER_PROF = 2 859623: 859623: }; 859623: 859623: 859623: 859623: struct itimerval 859623: { 859623: 859623: struct timeval it_interval; 859623: 859623: struct timeval it_value; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef int __itimer_which_t; 859623: # 167 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: extern int getitimer (__itimer_which_t __which, struct itimerval *__value) noexcept (true) __asm__ ("" "__getitimer64") 859623: 859623: ; 859623: 859623: extern int setitimer (__itimer_which_t __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) noexcept (true) __asm__ ("" "__setitimer64") 859623: 859623: 859623: ; 859623: 859623: extern int utimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__utimes64") 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: # 196 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: extern int lutimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__lutimes64") 859623: 859623: __attribute__ ((__nonnull__ (1))); 859623: 859623: extern int futimes (int __fd, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimes64") 859623: ; 859623: # 218 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: extern int futimesat (int __fd, const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimesat64") 859623: 859623: ; 859623: # 258 "/usr/arm-linux-gnueabi/include/sys/time.h" 3 4 859623: } 859623: # 36 "/usr/include/openssl/e_ostime.h" 2 3 4 859623: # 28 "/usr/include/openssl/ssl.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/comp.h" 1 3 4 859623: # 14 "/usr/include/openssl/comp.h" 3 4 859623: 859623: # 23 "/usr/include/openssl/comp.h" 3 4 859623: # 1 "/usr/include/openssl/crypto.h" 1 3 4 859623: # 18 "/usr/include/openssl/crypto.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 1 3 4 859623: # 38 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 3 4 859623: using std::abort; 859623: using std::atexit; 859623: using std::exit; 859623: 859623: 859623: using std::at_quick_exit; 859623: 859623: 859623: using std::quick_exit; 859623: 859623: 859623: using std::_Exit; 859623: 859623: 859623: 859623: 859623: using std::div_t; 859623: using std::ldiv_t; 859623: 859623: using std::abs; 859623: using std::atof; 859623: using std::atoi; 859623: using std::atol; 859623: using std::bsearch; 859623: using std::calloc; 859623: using std::div; 859623: using std::free; 859623: using std::getenv; 859623: using std::labs; 859623: using std::ldiv; 859623: using std::malloc; 859623: 859623: using std::mblen; 859623: using std::mbstowcs; 859623: using std::mbtowc; 859623: 859623: using std::qsort; 859623: using std::rand; 859623: using std::realloc; 859623: using std::srand; 859623: using std::strtod; 859623: using std::strtol; 859623: using std::strtoul; 859623: using std::system; 859623: 859623: using std::wcstombs; 859623: using std::wctomb; 859623: # 26 "/usr/include/openssl/crypto.h" 2 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/time.h" 1 3 4 859623: # 29 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 30 "/usr/arm-linux-gnueabi/include/time.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/time.h" 1 3 4 859623: # 73 "/usr/arm-linux-gnueabi/include/bits/time.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/timex.h" 1 3 4 859623: # 26 "/usr/arm-linux-gnueabi/include/bits/timex.h" 3 4 859623: struct timex 859623: { 859623: 859623: unsigned int modes; 859623: int :32; 859623: long long offset; 859623: long long freq; 859623: long long maxerror; 859623: long long esterror; 859623: int status; 859623: int :32; 859623: long long constant; 859623: long long precision; 859623: long long tolerance; 859623: struct timeval time; 859623: long long tick; 859623: long long ppsfreq; 859623: long long jitter; 859623: int shift; 859623: int :32; 859623: long long stabil; 859623: long long jitcnt; 859623: long long calcnt; 859623: long long errcnt; 859623: long long stbcnt; 859623: 859623: int tai; 859623: 859623: int :32; int :32; int :32; int :32; 859623: int :32; int :32; int :32; int :32; 859623: int :32; int :32; int :32; 859623: # 85 "/usr/arm-linux-gnueabi/include/bits/timex.h" 3 4 859623: }; 859623: # 74 "/usr/arm-linux-gnueabi/include/bits/time.h" 2 3 4 859623: 859623: extern "C" { 859623: 859623: 859623: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __asm__ ("" "__clock_adjtime64") 859623: 859623: __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 34 "/usr/arm-linux-gnueabi/include/time.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_tm.h" 1 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct tm 859623: { 859623: int tm_sec; 859623: int tm_min; 859623: int tm_hour; 859623: int tm_mday; 859623: int tm_mon; 859623: int tm_year; 859623: int tm_wday; 859623: int tm_yday; 859623: int tm_isdst; 859623: 859623: 859623: long int tm_gmtoff; 859623: const char *tm_zone; 859623: 859623: 859623: 859623: 859623: }; 859623: # 40 "/usr/arm-linux-gnueabi/include/time.h" 2 3 4 859623: # 48 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_itimerspec.h" 1 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct itimerspec 859623: { 859623: struct timespec it_interval; 859623: struct timespec it_value; 859623: }; 859623: # 49 "/usr/arm-linux-gnueabi/include/time.h" 2 3 4 859623: struct sigevent; 859623: # 68 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern "C" { 859623: 859623: 859623: 859623: extern clock_t clock (void) noexcept (true); 859623: # 85 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern time_t time (time_t *__timer) noexcept (true) __asm__ ("" "__time64"); 859623: extern double difftime (time_t __time1, time_t __time0) noexcept (true) __asm__ ("" "__difftime64") 859623: ; 859623: extern time_t mktime (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); 859623: # 99 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern size_t strftime (char *__restrict __s, size_t __maxsize, 859623: const char *__restrict __format, 859623: const struct tm *__restrict __tp) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3, 4))); 859623: 859623: 859623: 859623: 859623: extern char *strptime (const char *__restrict __s, 859623: const char *__restrict __fmt, struct tm *__tp) 859623: noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 859623: const char *__restrict __format, 859623: const struct tm *__restrict __tp, 859623: locale_t __loc) noexcept (true); 859623: 859623: 859623: 859623: extern char *strptime_l (const char *__restrict __s, 859623: const char *__restrict __fmt, struct tm *__tp, 859623: locale_t __loc) noexcept (true); 859623: # 140 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern struct tm*gmtime (const time_t *__timer) noexcept (true) __asm__ ("" "__gmtime64"); 859623: extern struct tm *localtime (const time_t *__timer) noexcept (true) __asm__ ("" "__localtime64") 859623: ; 859623: # 163 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern struct tm*gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__gmtime64_r") 859623: 859623: ; 859623: 859623: extern struct tm*localtime_r (const time_t *__restrict __t, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__localtime64_r") 859623: 859623: ; 859623: # 179 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern char *asctime (const struct tm *__tp) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern char *ctime (const time_t *__timer) noexcept (true) __asm__ ("" "__ctime64"); 859623: # 197 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern char *asctime_r (const struct tm *__restrict __tp, 859623: char *__restrict __buf) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) noexcept (true) __asm__ ("" "__ctime64_r") 859623: ; 859623: # 217 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern char *__tzname[2]; 859623: extern int __daylight; 859623: extern long int __timezone; 859623: 859623: 859623: 859623: 859623: extern char *tzname[2]; 859623: 859623: 859623: 859623: extern void tzset (void) noexcept (true); 859623: 859623: 859623: 859623: extern int daylight; 859623: extern long int timezone; 859623: # 249 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern time_t timegm (struct tm *__tp) noexcept (true) __asm__ ("" "__timegm64"); 859623: # 266 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern time_t timelocal (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); 859623: 859623: 859623: 859623: 859623: extern int dysize (int __year) noexcept (true) __attribute__ ((__const__)); 859623: # 296 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern int nanosleep (const struct timespec *__requested_time, struct timespec *__remaining) __asm__ ("" "__nanosleep64") 859623: 859623: ; 859623: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) noexcept (true) __asm__ ("" "__clock_getres64") 859623: 859623: ; 859623: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_gettime64") 859623: 859623: __attribute__ ((__nonnull__ (2))); 859623: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_settime64") 859623: 859623: __attribute__ ((__nonnull__ (2))); 859623: # 328 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern int clock_nanosleep (clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem) __asm__ ("" "__clock_nanosleep_time64") 859623: 859623: 859623: ; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern int timer_create (clockid_t __clock_id, 859623: struct sigevent *__restrict __evp, 859623: timer_t *__restrict __timerid) noexcept (true); 859623: 859623: 859623: extern int timer_delete (timer_t __timerid) noexcept (true); 859623: # 361 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern int timer_settime (timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) noexcept (true) __asm__ ("" "__timer_settime64") 859623: 859623: 859623: ; 859623: 859623: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) noexcept (true) __asm__ ("" "__timer_gettime64") 859623: 859623: ; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int timer_getoverrun (timer_t __timerid) noexcept (true); 859623: # 387 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern int timespec_get (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_get64") 859623: __attribute__ ((__nonnull__ (1))); 859623: # 403 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern int timespec_getres (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_getres64") 859623: 859623: ; 859623: # 425 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern int getdate_err; 859623: # 434 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern struct tm *getdate (const char *__string); 859623: # 448 "/usr/arm-linux-gnueabi/include/time.h" 3 4 859623: extern int getdate_r (const char *__restrict __string, 859623: struct tm *__restrict __resbufp); 859623: 859623: 859623: } 859623: # 27 "/usr/include/openssl/crypto.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/safestack.h" 1 3 4 859623: # 17 "/usr/include/openssl/safestack.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/stack.h" 1 3 4 859623: # 12 "/usr/include/openssl/stack.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: typedef struct stack_st OPENSSL_STACK; 859623: 859623: typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); 859623: typedef void (*OPENSSL_sk_freefunc)(void *); 859623: typedef void *(*OPENSSL_sk_copyfunc)(const void *); 859623: 859623: int OPENSSL_sk_num(const OPENSSL_STACK *); 859623: void *OPENSSL_sk_value(const OPENSSL_STACK *, int); 859623: 859623: void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); 859623: 859623: OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); 859623: OPENSSL_STACK *OPENSSL_sk_new_null(void); 859623: OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); 859623: int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); 859623: void OPENSSL_sk_free(OPENSSL_STACK *); 859623: void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); 859623: OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, 859623: OPENSSL_sk_copyfunc c, 859623: OPENSSL_sk_freefunc f); 859623: int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); 859623: void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); 859623: void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); 859623: int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); 859623: int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); 859623: int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum); 859623: int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); 859623: int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); 859623: void *OPENSSL_sk_shift(OPENSSL_STACK *st); 859623: void *OPENSSL_sk_pop(OPENSSL_STACK *st); 859623: void OPENSSL_sk_zero(OPENSSL_STACK *st); 859623: OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, 859623: OPENSSL_sk_compfunc cmp); 859623: OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); 859623: void OPENSSL_sk_sort(OPENSSL_STACK *st); 859623: int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); 859623: # 87 "/usr/include/openssl/stack.h" 3 4 859623: } 859623: # 25 "/usr/include/openssl/safestack.h" 2 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: # 195 "/usr/include/openssl/safestack.h" 3 4 859623: typedef char *OPENSSL_STRING; 859623: typedef const char *OPENSSL_CSTRING; 859623: # 205 "/usr/include/openssl/safestack.h" 3 4 859623: struct stack_st_OPENSSL_STRING; typedef int (*sk_OPENSSL_STRING_compfunc)(const char * const *a, const char *const *b); typedef void (*sk_OPENSSL_STRING_freefunc)(char *a); typedef char * (*sk_OPENSSL_STRING_copyfunc)(const char *a); static __attribute__((unused)) inline char *ossl_check_OPENSSL_STRING_type(char *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_OPENSSL_STRING_sk_type(const struct stack_st_OPENSSL_STRING *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_OPENSSL_STRING_sk_type(struct stack_st_OPENSSL_STRING *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_OPENSSL_STRING_compfunc_type(sk_OPENSSL_STRING_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_OPENSSL_STRING_copyfunc_type(sk_OPENSSL_STRING_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_OPENSSL_STRING_freefunc_type(sk_OPENSSL_STRING_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 231 "/usr/include/openssl/safestack.h" 3 4 859623: struct stack_st_OPENSSL_CSTRING; typedef int (*sk_OPENSSL_CSTRING_compfunc)(const char * const *a, const char *const *b); typedef void (*sk_OPENSSL_CSTRING_freefunc)(char *a); typedef char * (*sk_OPENSSL_CSTRING_copyfunc)(const char *a); static __attribute__((unused)) inline const char *ossl_check_OPENSSL_CSTRING_type(const char *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_OPENSSL_CSTRING_sk_type(const struct stack_st_OPENSSL_CSTRING *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_OPENSSL_CSTRING_sk_type(struct stack_st_OPENSSL_CSTRING *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_OPENSSL_CSTRING_compfunc_type(sk_OPENSSL_CSTRING_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_OPENSSL_CSTRING_copyfunc_type(sk_OPENSSL_CSTRING_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_OPENSSL_CSTRING_freefunc_type(sk_OPENSSL_CSTRING_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 264 "/usr/include/openssl/safestack.h" 3 4 859623: typedef void *OPENSSL_BLOCK; 859623: struct stack_st_OPENSSL_BLOCK; typedef int (*sk_OPENSSL_BLOCK_compfunc)(const void * const *a, const void *const *b); typedef void (*sk_OPENSSL_BLOCK_freefunc)(void *a); typedef void * (*sk_OPENSSL_BLOCK_copyfunc)(const void *a); static __attribute__((unused)) inline void *ossl_check_OPENSSL_BLOCK_type(void *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_OPENSSL_BLOCK_sk_type(const struct stack_st_OPENSSL_BLOCK *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_OPENSSL_BLOCK_sk_type(struct stack_st_OPENSSL_BLOCK *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_OPENSSL_BLOCK_compfunc_type(sk_OPENSSL_BLOCK_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_OPENSSL_BLOCK_copyfunc_type(sk_OPENSSL_BLOCK_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_OPENSSL_BLOCK_freefunc_type(sk_OPENSSL_BLOCK_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 295 "/usr/include/openssl/safestack.h" 3 4 859623: } 859623: # 35 "/usr/include/openssl/crypto.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 26 "/usr/include/openssl/types.h" 3 4 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/limits.h" 1 3 4 859623: # 34 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/limits.h" 3 4 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/syslimits.h" 1 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wpedantic" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/limits.h" 1 3 4 859623: # 210 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/limits.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/limits.h" 1 3 4 859623: # 26 "/usr/arm-linux-gnueabi/include/limits.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/libc-header-start.h" 1 3 4 859623: # 27 "/usr/arm-linux-gnueabi/include/limits.h" 2 3 4 859623: # 195 "/usr/arm-linux-gnueabi/include/limits.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/posix1_lim.h" 1 3 4 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/posix1_lim.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 4 859623: # 28 "/usr/arm-linux-gnueabi/include/bits/posix1_lim.h" 2 3 4 859623: # 161 "/usr/arm-linux-gnueabi/include/bits/posix1_lim.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/local_lim.h" 1 3 4 859623: # 38 "/usr/arm-linux-gnueabi/include/bits/local_lim.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/linux/limits.h" 1 3 4 859623: # 39 "/usr/arm-linux-gnueabi/include/bits/local_lim.h" 2 3 4 859623: # 81 "/usr/arm-linux-gnueabi/include/bits/local_lim.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/pthread_stack_min-dynamic.h" 1 3 4 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/pthread_stack_min-dynamic.h" 3 4 859623: extern "C" { 859623: extern long int __sysconf (int __name) noexcept (true); 859623: } 859623: # 82 "/usr/arm-linux-gnueabi/include/bits/local_lim.h" 2 3 4 859623: # 162 "/usr/arm-linux-gnueabi/include/bits/posix1_lim.h" 2 3 4 859623: # 196 "/usr/arm-linux-gnueabi/include/limits.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/posix2_lim.h" 1 3 4 859623: # 200 "/usr/arm-linux-gnueabi/include/limits.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/xopen_lim.h" 1 3 4 859623: # 64 "/usr/arm-linux-gnueabi/include/bits/xopen_lim.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/uio_lim.h" 1 3 4 859623: # 65 "/usr/arm-linux-gnueabi/include/bits/xopen_lim.h" 2 3 4 859623: # 204 "/usr/arm-linux-gnueabi/include/limits.h" 2 3 4 859623: # 211 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/limits.h" 2 3 4 859623: # 10 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/syslimits.h" 2 3 4 859623: 859623: # 10 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/syslimits.h" 3 4 859623: #pragma GCC diagnostic pop 859623: # 35 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/limits.h" 2 3 4 859623: # 27 "/usr/include/openssl/types.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: # 42 "/usr/include/openssl/types.h" 3 4 859623: typedef struct ossl_provider_st OSSL_PROVIDER; 859623: # 63 "/usr/include/openssl/types.h" 3 4 859623: typedef struct asn1_string_st ASN1_INTEGER; 859623: typedef struct asn1_string_st ASN1_ENUMERATED; 859623: typedef struct asn1_string_st ASN1_BIT_STRING; 859623: typedef struct asn1_string_st ASN1_OCTET_STRING; 859623: typedef struct asn1_string_st ASN1_PRINTABLESTRING; 859623: typedef struct asn1_string_st ASN1_T61STRING; 859623: typedef struct asn1_string_st ASN1_IA5STRING; 859623: typedef struct asn1_string_st ASN1_GENERALSTRING; 859623: typedef struct asn1_string_st ASN1_UNIVERSALSTRING; 859623: typedef struct asn1_string_st ASN1_BMPSTRING; 859623: typedef struct asn1_string_st ASN1_UTCTIME; 859623: typedef struct asn1_string_st ASN1_TIME; 859623: typedef struct asn1_string_st ASN1_GENERALIZEDTIME; 859623: typedef struct asn1_string_st ASN1_VISIBLESTRING; 859623: typedef struct asn1_string_st ASN1_UTF8STRING; 859623: typedef struct asn1_string_st ASN1_STRING; 859623: typedef int ASN1_BOOLEAN; 859623: typedef int ASN1_NULL; 859623: 859623: 859623: typedef struct asn1_type_st ASN1_TYPE; 859623: typedef struct asn1_object_st ASN1_OBJECT; 859623: typedef struct asn1_string_table_st ASN1_STRING_TABLE; 859623: 859623: typedef struct ASN1_ITEM_st ASN1_ITEM; 859623: typedef struct asn1_pctx_st ASN1_PCTX; 859623: typedef struct asn1_sctx_st ASN1_SCTX; 859623: 859623: 859623: 859623: 859623: 859623: typedef struct bio_st BIO; 859623: typedef struct bignum_st BIGNUM; 859623: typedef struct bignum_ctx BN_CTX; 859623: typedef struct bn_blinding_st BN_BLINDING; 859623: typedef struct bn_mont_ctx_st BN_MONT_CTX; 859623: typedef struct bn_recp_ctx_st BN_RECP_CTX; 859623: typedef struct bn_gencb_st BN_GENCB; 859623: 859623: typedef struct buf_mem_st BUF_MEM; 859623: 859623: struct stack_st_BIGNUM; 859623: struct stack_st_BIGNUM_const; 859623: 859623: typedef struct err_state_st ERR_STATE; 859623: 859623: typedef struct evp_cipher_st EVP_CIPHER; 859623: typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; 859623: typedef struct evp_md_st EVP_MD; 859623: typedef struct evp_md_ctx_st EVP_MD_CTX; 859623: typedef struct evp_mac_st EVP_MAC; 859623: typedef struct evp_mac_ctx_st EVP_MAC_CTX; 859623: typedef struct evp_pkey_st EVP_PKEY; 859623: typedef struct evp_skey_st EVP_SKEY; 859623: 859623: typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; 859623: 859623: typedef struct evp_pkey_method_st EVP_PKEY_METHOD; 859623: typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; 859623: 859623: typedef struct evp_keymgmt_st EVP_KEYMGMT; 859623: 859623: typedef struct evp_kdf_st EVP_KDF; 859623: typedef struct evp_kdf_ctx_st EVP_KDF_CTX; 859623: 859623: typedef struct evp_rand_st EVP_RAND; 859623: typedef struct evp_rand_ctx_st EVP_RAND_CTX; 859623: 859623: typedef struct evp_keyexch_st EVP_KEYEXCH; 859623: 859623: typedef struct evp_signature_st EVP_SIGNATURE; 859623: 859623: typedef struct evp_skeymgmt_st EVP_SKEYMGMT; 859623: 859623: typedef struct evp_asym_cipher_st EVP_ASYM_CIPHER; 859623: 859623: typedef struct evp_kem_st EVP_KEM; 859623: 859623: typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; 859623: 859623: typedef struct hmac_ctx_st HMAC_CTX; 859623: 859623: typedef struct dh_st DH; 859623: typedef struct dh_method DH_METHOD; 859623: 859623: 859623: typedef struct dsa_st DSA; 859623: typedef struct dsa_method DSA_METHOD; 859623: 859623: 859623: 859623: typedef struct rsa_st RSA; 859623: typedef struct rsa_meth_st RSA_METHOD; 859623: 859623: typedef struct rsa_pss_params_st RSA_PSS_PARAMS; 859623: 859623: 859623: typedef struct ec_key_st EC_KEY; 859623: typedef struct ec_key_method_st EC_KEY_METHOD; 859623: 859623: 859623: typedef struct rand_meth_st RAND_METHOD; 859623: typedef struct rand_drbg_st RAND_DRBG; 859623: 859623: typedef struct ssl_dane_st SSL_DANE; 859623: typedef struct x509_st X509; 859623: typedef struct X509_algor_st X509_ALGOR; 859623: typedef struct X509_crl_st X509_CRL; 859623: typedef struct x509_crl_method_st X509_CRL_METHOD; 859623: typedef struct x509_revoked_st X509_REVOKED; 859623: typedef struct X509_name_st X509_NAME; 859623: typedef struct X509_pubkey_st X509_PUBKEY; 859623: typedef struct x509_store_st X509_STORE; 859623: typedef struct x509_store_ctx_st X509_STORE_CTX; 859623: 859623: typedef struct x509_object_st X509_OBJECT; 859623: typedef struct x509_lookup_st X509_LOOKUP; 859623: typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; 859623: typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; 859623: 859623: typedef struct x509_sig_info_st X509_SIG_INFO; 859623: 859623: typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; 859623: 859623: typedef struct v3_ext_ctx X509V3_CTX; 859623: typedef struct conf_st CONF; 859623: typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; 859623: 859623: typedef struct ui_st UI; 859623: typedef struct ui_method_st UI_METHOD; 859623: 859623: typedef struct engine_st ENGINE; 859623: typedef struct ssl_st SSL; 859623: typedef struct ssl_ctx_st SSL_CTX; 859623: 859623: typedef struct comp_ctx_st COMP_CTX; 859623: typedef struct comp_method_st COMP_METHOD; 859623: 859623: typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; 859623: typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; 859623: typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; 859623: typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; 859623: 859623: typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; 859623: typedef struct DIST_POINT_st DIST_POINT; 859623: typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; 859623: typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; 859623: 859623: typedef struct crypto_ex_data_st CRYPTO_EX_DATA; 859623: 859623: typedef struct ossl_http_req_ctx_st OSSL_HTTP_REQ_CTX; 859623: typedef struct ocsp_response_st OCSP_RESPONSE; 859623: typedef struct ocsp_responder_id_st OCSP_RESPID; 859623: 859623: typedef struct sct_st SCT; 859623: typedef struct sct_ctx_st SCT_CTX; 859623: typedef struct ctlog_st CTLOG; 859623: typedef struct ctlog_store_st CTLOG_STORE; 859623: typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; 859623: 859623: typedef struct ossl_store_info_st OSSL_STORE_INFO; 859623: typedef struct ossl_store_search_st OSSL_STORE_SEARCH; 859623: 859623: typedef struct ossl_lib_ctx_st OSSL_LIB_CTX; 859623: 859623: typedef struct ossl_dispatch_st OSSL_DISPATCH; 859623: typedef struct ossl_item_st OSSL_ITEM; 859623: typedef struct ossl_algorithm_st OSSL_ALGORITHM; 859623: typedef struct ossl_param_st OSSL_PARAM; 859623: typedef struct ossl_param_bld_st OSSL_PARAM_BLD; 859623: 859623: typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); 859623: 859623: typedef struct ossl_encoder_st OSSL_ENCODER; 859623: typedef struct ossl_encoder_ctx_st OSSL_ENCODER_CTX; 859623: typedef struct ossl_decoder_st OSSL_DECODER; 859623: typedef struct ossl_decoder_ctx_st OSSL_DECODER_CTX; 859623: 859623: typedef struct ossl_self_test_st OSSL_SELF_TEST; 859623: 859623: 859623: } 859623: # 37 "/usr/include/openssl/crypto.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/cryptoerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/cryptoerr.h" 3 4 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/symhacks.h" 1 3 4 859623: # 12 "/usr/include/openssl/symhacks.h" 3 4 859623: 859623: # 17 "/usr/include/openssl/cryptoerr.h" 2 3 4 859623: # 1 "/usr/include/openssl/cryptoerr_legacy.h" 1 3 4 859623: # 19 "/usr/include/openssl/cryptoerr_legacy.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_ASN1_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_ASYNC_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_BIO_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_BN_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_BUF_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_CMS_strings(void); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_COMP_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_CONF_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_CRYPTO_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_CT_strings(void); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_DH_strings(void); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_DSA_strings(void); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_EC_strings(void); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_ENGINE_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_ERR_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_EVP_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_KDF_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_OBJ_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_OCSP_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_PEM_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_PKCS12_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_PKCS7_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_RAND_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_RSA_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_OSSL_STORE_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_TS_strings(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_UI_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_X509_strings(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_X509V3_strings(void); 859623: # 1464 "/usr/include/openssl/cryptoerr_legacy.h" 3 4 859623: } 859623: # 18 "/usr/include/openssl/cryptoerr.h" 2 3 4 859623: # 39 "/usr/include/openssl/crypto.h" 2 3 4 859623: # 1 "/usr/include/openssl/core.h" 1 3 4 859623: # 12 "/usr/include/openssl/core.h" 3 4 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 160 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 3 4 859623: typedef int ptrdiff_t; 859623: # 440 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 3 4 859623: typedef struct { 859623: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 859623: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 859623: # 451 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 3 4 859623: } max_align_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef decltype(nullptr) nullptr_t; 859623: # 15 "/usr/include/openssl/core.h" 2 3 4 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 16 "/usr/include/openssl/core.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: # 30 "/usr/include/openssl/core.h" 3 4 859623: typedef struct ossl_core_handle_st OSSL_CORE_HANDLE; 859623: typedef struct openssl_core_ctx_st OPENSSL_CORE_CTX; 859623: typedef struct ossl_core_bio_st OSSL_CORE_BIO; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct ossl_dispatch_st { 859623: int function_id; 859623: void (*function)(void); 859623: }; 859623: # 61 "/usr/include/openssl/core.h" 3 4 859623: struct ossl_item_st { 859623: unsigned int id; 859623: void *ptr; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct ossl_algorithm_st { 859623: const char *algorithm_names; 859623: const char *property_definition; 859623: const OSSL_DISPATCH *implementation; 859623: const char *algorithm_description; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct ossl_param_st { 859623: const char *key; 859623: unsigned int data_type; 859623: void *data; 859623: size_t data_size; 859623: size_t return_size; 859623: }; 859623: # 172 "/usr/include/openssl/core.h" 3 4 859623: typedef void (*OSSL_thread_stop_handler_fn)(void *arg); 859623: # 193 "/usr/include/openssl/core.h" 3 4 859623: typedef int (OSSL_provider_init_fn)(const OSSL_CORE_HANDLE *handle, 859623: const OSSL_DISPATCH *in, 859623: const OSSL_DISPATCH **out, 859623: void **provctx); 859623: 859623: 859623: 859623: 859623: extern OSSL_provider_init_fn OSSL_provider_init; 859623: # 219 "/usr/include/openssl/core.h" 3 4 859623: typedef int (OSSL_CALLBACK)(const OSSL_PARAM params[], void *arg); 859623: typedef int (OSSL_INOUT_CALLBACK)(const OSSL_PARAM in_params[], 859623: OSSL_PARAM out_params[], void *arg); 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_PASSPHRASE_CALLBACK)(char *pass, size_t pass_size, 859623: size_t *pass_len, 859623: const OSSL_PARAM params[], void *arg); 859623: 859623: 859623: } 859623: # 40 "/usr/include/openssl/crypto.h" 2 3 4 859623: # 56 "/usr/include/openssl/crypto.h" 3 4 859623: extern "C" { 859623: # 73 "/usr/include/openssl/crypto.h" 3 4 859623: typedef struct { 859623: int dummy; 859623: } CRYPTO_dynlock; 859623: 859623: 859623: 859623: typedef void CRYPTO_RWLOCK; 859623: 859623: CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); 859623: int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); 859623: int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); 859623: int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); 859623: void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); 859623: 859623: int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); 859623: int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, 859623: CRYPTO_RWLOCK *lock); 859623: int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, 859623: CRYPTO_RWLOCK *lock); 859623: int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, 859623: CRYPTO_RWLOCK *lock); 859623: int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); 859623: int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); 859623: int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); 859623: # 133 "/usr/include/openssl/crypto.h" 3 4 859623: size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); 859623: size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); 859623: size_t OPENSSL_strnlen(const char *str, size_t maxlen); 859623: int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); 859623: int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, 859623: const unsigned char *buf, size_t buflen, 859623: const char sep); 859623: char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen); 859623: int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen, 859623: const char *str, const char sep); 859623: unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen); 859623: int OPENSSL_hexchar2int(unsigned char c); 859623: int OPENSSL_strcasecmp(const char *s1, const char *s2); 859623: int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n); 859623: # 155 "/usr/include/openssl/crypto.h" 3 4 859623: unsigned int OPENSSL_version_major(void); 859623: unsigned int OPENSSL_version_minor(void); 859623: unsigned int OPENSSL_version_patch(void); 859623: const char *OPENSSL_version_pre_release(void); 859623: const char *OPENSSL_version_build_metadata(void); 859623: 859623: unsigned long OpenSSL_version_num(void); 859623: const char *OpenSSL_version(int type); 859623: # 175 "/usr/include/openssl/crypto.h" 3 4 859623: const char *OPENSSL_info(int type); 859623: # 190 "/usr/include/openssl/crypto.h" 3 4 859623: int OPENSSL_issetugid(void); 859623: 859623: struct crypto_ex_data_st { 859623: OSSL_LIB_CTX *ctx; 859623: struct stack_st_void *sk; 859623: }; 859623: 859623: struct stack_st_void; typedef int (*sk_void_compfunc)(const void * const *a, const void *const *b); typedef void (*sk_void_freefunc)(void *a); typedef void * (*sk_void_copyfunc)(const void *a); static __attribute__((unused)) inline void *ossl_check_void_type(void *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_void_sk_type(const struct stack_st_void *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_void_sk_type(struct stack_st_void *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_void_compfunc_type(sk_void_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_void_copyfunc_type(sk_void_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_void_freefunc_type(sk_void_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 250 "/usr/include/openssl/crypto.h" 3 4 859623: typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, 859623: int idx, long argl, void *argp); 859623: typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, 859623: int idx, long argl, void *argp); 859623: typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, 859623: void **from_d, int idx, long argl, void *argp); 859623: int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, 859623: CRYPTO_EX_new *new_func, 859623: CRYPTO_EX_dup *dup_func, 859623: CRYPTO_EX_free *free_func); 859623: 859623: int CRYPTO_free_ex_index(int class_index, int idx); 859623: 859623: 859623: 859623: 859623: 859623: int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); 859623: int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, 859623: const CRYPTO_EX_DATA *from); 859623: 859623: void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); 859623: 859623: 859623: int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, 859623: int idx); 859623: 859623: 859623: 859623: 859623: 859623: int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); 859623: void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); 859623: # 318 "/usr/include/openssl/crypto.h" 3 4 859623: typedef struct crypto_threadid_st { 859623: int dummy; 859623: } CRYPTO_THREADID; 859623: # 345 "/usr/include/openssl/crypto.h" 3 4 859623: typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line); 859623: typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, 859623: int line); 859623: typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line); 859623: int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn, 859623: CRYPTO_realloc_fn realloc_fn, 859623: CRYPTO_free_fn free_fn); 859623: void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, 859623: CRYPTO_realloc_fn *realloc_fn, 859623: CRYPTO_free_fn *free_fn); 859623: 859623: __attribute__((__malloc__)) void *CRYPTO_malloc(size_t num, const char *file, int line); 859623: __attribute__((__malloc__)) void *CRYPTO_zalloc(size_t num, const char *file, int line); 859623: __attribute__((__malloc__)) void *CRYPTO_aligned_alloc(size_t num, size_t align, 859623: void **freeptr, const char *file, 859623: int line); 859623: void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); 859623: char *CRYPTO_strdup(const char *str, const char *file, int line); 859623: char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); 859623: void CRYPTO_free(void *ptr, const char *file, int line); 859623: void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); 859623: void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); 859623: void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, 859623: const char *file, int line); 859623: 859623: int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); 859623: int CRYPTO_secure_malloc_done(void); 859623: __attribute__((__malloc__)) void *CRYPTO_secure_malloc(size_t num, const char *file, int line); 859623: __attribute__((__malloc__)) void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); 859623: void CRYPTO_secure_free(void *ptr, const char *file, int line); 859623: void CRYPTO_secure_clear_free(void *ptr, size_t num, 859623: const char *file, int line); 859623: int CRYPTO_secure_allocated(const void *ptr); 859623: int CRYPTO_secure_malloc_initialized(void); 859623: size_t CRYPTO_secure_actual_size(void *ptr); 859623: size_t CRYPTO_secure_used(void); 859623: 859623: void OPENSSL_cleanse(void *ptr, size_t len); 859623: # 433 "/usr/include/openssl/crypto.h" 3 4 859623: __attribute__((noreturn)) void OPENSSL_die(const char *assertion, const char *file, int line); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int OPENSSL_isservice(void); 859623: 859623: void OPENSSL_init(void); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void OPENSSL_fork_prepare(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void OPENSSL_fork_parent(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void OPENSSL_fork_child(void); 859623: 859623: 859623: 859623: struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); 859623: int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); 859623: int OPENSSL_gmtime_diff(int *pday, int *psec, 859623: const struct tm *from, const struct tm *to); 859623: # 463 "/usr/include/openssl/crypto.h" 3 4 859623: int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len); 859623: # 502 "/usr/include/openssl/crypto.h" 3 4 859623: void OPENSSL_cleanup(void); 859623: int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); 859623: int OPENSSL_atexit(void (*handler)(void)); 859623: void OPENSSL_thread_stop(void); 859623: void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx); 859623: 859623: 859623: OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); 859623: 859623: int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, 859623: const char *config_filename); 859623: void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, 859623: unsigned long flags); 859623: int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, 859623: const char *config_appname); 859623: 859623: void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); 859623: # 536 "/usr/include/openssl/crypto.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/pthread.h" 1 3 4 859623: # 22 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/sched.h" 1 3 4 859623: # 29 "/usr/arm-linux-gnueabi/include/sched.h" 3 4 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 30 "/usr/arm-linux-gnueabi/include/sched.h" 2 3 4 859623: # 43 "/usr/arm-linux-gnueabi/include/sched.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/sched.h" 1 3 4 859623: # 63 "/usr/arm-linux-gnueabi/include/bits/sched.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/linux/sched/types.h" 1 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/linux/types.h" 1 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm/types.h" 1 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm-generic/int-ll64.h" 1 3 4 859623: # 12 "/usr/arm-linux-gnueabi/include/asm-generic/int-ll64.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/asm/bitsperlong.h" 1 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/asm-generic/bitsperlong.h" 1 3 4 859623: # 2 "/usr/arm-linux-gnueabi/include/asm/bitsperlong.h" 2 3 4 859623: # 13 "/usr/arm-linux-gnueabi/include/asm-generic/int-ll64.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef __signed__ char __s8; 859623: typedef unsigned char __u8; 859623: 859623: typedef __signed__ short __s16; 859623: typedef unsigned short __u16; 859623: 859623: typedef __signed__ int __s32; 859623: typedef unsigned int __u32; 859623: 859623: 859623: __extension__ typedef __signed__ long long __s64; 859623: __extension__ typedef unsigned long long __u64; 859623: # 6 "/usr/arm-linux-gnueabi/include/asm/types.h" 2 3 4 859623: # 6 "/usr/arm-linux-gnueabi/include/linux/types.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/linux/posix_types.h" 1 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/linux/stddef.h" 1 3 4 859623: # 6 "/usr/arm-linux-gnueabi/include/linux/posix_types.h" 2 3 4 859623: # 25 "/usr/arm-linux-gnueabi/include/linux/posix_types.h" 3 4 859623: typedef struct { 859623: unsigned long fds_bits[1024 / (8 * sizeof(long))]; 859623: } __kernel_fd_set; 859623: 859623: 859623: typedef void (*__kernel_sighandler_t)(int); 859623: 859623: 859623: typedef int __kernel_key_t; 859623: typedef int __kernel_mqd_t; 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm/posix_types.h" 1 3 4 859623: # 23 "/usr/arm-linux-gnueabi/include/asm/posix_types.h" 3 4 859623: typedef unsigned short __kernel_mode_t; 859623: 859623: 859623: typedef unsigned short __kernel_ipc_pid_t; 859623: 859623: 859623: typedef unsigned short __kernel_uid_t; 859623: typedef unsigned short __kernel_gid_t; 859623: 859623: 859623: typedef unsigned short __kernel_old_dev_t; 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm-generic/posix_types.h" 1 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm/bitsperlong.h" 1 3 4 859623: # 6 "/usr/arm-linux-gnueabi/include/asm-generic/posix_types.h" 2 3 4 859623: # 15 "/usr/arm-linux-gnueabi/include/asm-generic/posix_types.h" 3 4 859623: typedef long __kernel_long_t; 859623: typedef unsigned long __kernel_ulong_t; 859623: 859623: 859623: 859623: typedef __kernel_ulong_t __kernel_ino_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef int __kernel_pid_t; 859623: # 41 "/usr/arm-linux-gnueabi/include/asm-generic/posix_types.h" 3 4 859623: typedef __kernel_long_t __kernel_suseconds_t; 859623: 859623: 859623: 859623: typedef int __kernel_daddr_t; 859623: 859623: 859623: 859623: typedef unsigned int __kernel_uid32_t; 859623: typedef unsigned int __kernel_gid32_t; 859623: 859623: 859623: 859623: typedef __kernel_uid_t __kernel_old_uid_t; 859623: typedef __kernel_gid_t __kernel_old_gid_t; 859623: # 68 "/usr/arm-linux-gnueabi/include/asm-generic/posix_types.h" 3 4 859623: typedef unsigned int __kernel_size_t; 859623: typedef int __kernel_ssize_t; 859623: typedef int __kernel_ptrdiff_t; 859623: # 79 "/usr/arm-linux-gnueabi/include/asm-generic/posix_types.h" 3 4 859623: typedef struct { 859623: int val[2]; 859623: } __kernel_fsid_t; 859623: 859623: 859623: 859623: 859623: 859623: typedef __kernel_long_t __kernel_off_t; 859623: typedef long long __kernel_loff_t; 859623: typedef __kernel_long_t __kernel_old_time_t; 859623: typedef __kernel_long_t __kernel_time_t; 859623: typedef long long __kernel_time64_t; 859623: typedef __kernel_long_t __kernel_clock_t; 859623: typedef int __kernel_timer_t; 859623: typedef int __kernel_clockid_t; 859623: typedef char * __kernel_caddr_t; 859623: typedef unsigned short __kernel_uid16_t; 859623: typedef unsigned short __kernel_gid16_t; 859623: # 37 "/usr/arm-linux-gnueabi/include/asm/posix_types.h" 2 3 4 859623: # 37 "/usr/arm-linux-gnueabi/include/linux/posix_types.h" 2 3 4 859623: # 10 "/usr/arm-linux-gnueabi/include/linux/types.h" 2 3 4 859623: # 31 "/usr/arm-linux-gnueabi/include/linux/types.h" 3 4 859623: typedef __u16 __le16; 859623: typedef __u16 __be16; 859623: typedef __u32 __le32; 859623: typedef __u32 __be32; 859623: typedef __u64 __le64; 859623: typedef __u64 __be64; 859623: 859623: typedef __u16 __sum16; 859623: typedef __u32 __wsum; 859623: # 55 "/usr/arm-linux-gnueabi/include/linux/types.h" 3 4 859623: typedef unsigned __poll_t; 859623: # 6 "/usr/arm-linux-gnueabi/include/linux/sched/types.h" 2 3 4 859623: # 98 "/usr/arm-linux-gnueabi/include/linux/sched/types.h" 3 4 859623: struct sched_attr { 859623: __u32 size; 859623: 859623: __u32 sched_policy; 859623: __u64 sched_flags; 859623: 859623: 859623: __s32 sched_nice; 859623: 859623: 859623: __u32 sched_priority; 859623: 859623: 859623: __u64 sched_runtime; 859623: __u64 sched_deadline; 859623: __u64 sched_period; 859623: 859623: 859623: __u32 sched_util_min; 859623: __u32 sched_util_max; 859623: 859623: }; 859623: # 64 "/usr/arm-linux-gnueabi/include/bits/sched.h" 2 3 4 859623: # 126 "/usr/arm-linux-gnueabi/include/bits/sched.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_sched_param.h" 1 3 4 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/types/struct_sched_param.h" 3 4 859623: struct sched_param 859623: { 859623: int sched_priority; 859623: }; 859623: # 127 "/usr/arm-linux-gnueabi/include/bits/sched.h" 2 3 4 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 859623: int __flags, void *__arg, ...) noexcept (true); 859623: 859623: 859623: extern int unshare (int __flags) noexcept (true); 859623: 859623: 859623: extern int sched_getcpu (void) noexcept (true); 859623: 859623: 859623: extern int getcpu (unsigned int *, unsigned int *) noexcept (true); 859623: 859623: 859623: extern int setns (int __fd, int __nstype) noexcept (true); 859623: 859623: 859623: int sched_setattr (pid_t tid, struct sched_attr *attr, unsigned int flags) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: int sched_getattr (pid_t tid, struct sched_attr *attr, unsigned int size, 859623: unsigned int flags) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: } 859623: # 44 "/usr/arm-linux-gnueabi/include/sched.h" 2 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/cpu-set.h" 1 3 4 859623: # 32 "/usr/arm-linux-gnueabi/include/bits/cpu-set.h" 3 4 859623: typedef unsigned long int __cpu_mask; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef struct 859623: { 859623: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 859623: } cpu_set_t; 859623: # 115 "/usr/arm-linux-gnueabi/include/bits/cpu-set.h" 3 4 859623: extern "C" { 859623: 859623: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 859623: noexcept (true); 859623: extern cpu_set_t *__sched_cpualloc (size_t __count) noexcept (true) __attribute__ ((__warn_unused_result__)); 859623: extern void __sched_cpufree (cpu_set_t *__set) noexcept (true); 859623: 859623: } 859623: # 45 "/usr/arm-linux-gnueabi/include/sched.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 859623: noexcept (true); 859623: 859623: 859623: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) noexcept (true); 859623: 859623: 859623: extern int sched_setscheduler (__pid_t __pid, int __policy, 859623: const struct sched_param *__param) noexcept (true); 859623: 859623: 859623: extern int sched_getscheduler (__pid_t __pid) noexcept (true); 859623: 859623: 859623: extern int sched_yield (void) noexcept (true); 859623: 859623: 859623: extern int sched_get_priority_max (int __algorithm) noexcept (true); 859623: 859623: 859623: extern int sched_get_priority_min (int __algorithm) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) noexcept (true) __asm__ ("" "__sched_rr_get_interval64") 859623: 859623: ; 859623: # 130 "/usr/arm-linux-gnueabi/include/sched.h" 3 4 859623: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 859623: const cpu_set_t *__cpuset) noexcept (true); 859623: 859623: 859623: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 859623: cpu_set_t *__cpuset) noexcept (true); 859623: 859623: 859623: } 859623: # 23 "/usr/arm-linux-gnueabi/include/pthread.h" 2 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/setjmp.h" 1 3 4 859623: # 33 "/usr/arm-linux-gnueabi/include/bits/setjmp.h" 3 4 859623: typedef int __jmp_buf[64] __attribute__((__aligned__ (8))); 859623: # 28 "/usr/arm-linux-gnueabi/include/pthread.h" 2 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 4 859623: # 29 "/usr/arm-linux-gnueabi/include/pthread.h" 2 3 4 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct___jmp_buf_tag.h" 1 3 4 859623: # 26 "/usr/arm-linux-gnueabi/include/bits/types/struct___jmp_buf_tag.h" 3 4 859623: struct __jmp_buf_tag 859623: { 859623: 859623: 859623: 859623: 859623: __jmp_buf __jmpbuf; 859623: int __mask_was_saved; 859623: __sigset_t __saved_mask; 859623: }; 859623: # 32 "/usr/arm-linux-gnueabi/include/pthread.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: PTHREAD_CREATE_JOINABLE, 859623: 859623: PTHREAD_CREATE_DETACHED 859623: 859623: }; 859623: 859623: 859623: 859623: enum 859623: { 859623: PTHREAD_MUTEX_TIMED_NP, 859623: PTHREAD_MUTEX_RECURSIVE_NP, 859623: PTHREAD_MUTEX_ERRORCHECK_NP, 859623: PTHREAD_MUTEX_ADAPTIVE_NP 859623: 859623: , 859623: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 859623: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 859623: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 859623: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 859623: 859623: 859623: 859623: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: PTHREAD_MUTEX_STALLED, 859623: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 859623: PTHREAD_MUTEX_ROBUST, 859623: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: PTHREAD_PRIO_NONE, 859623: PTHREAD_PRIO_INHERIT, 859623: PTHREAD_PRIO_PROTECT 859623: }; 859623: # 104 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: enum 859623: { 859623: PTHREAD_RWLOCK_PREFER_READER_NP, 859623: PTHREAD_RWLOCK_PREFER_WRITER_NP, 859623: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 859623: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 859623: }; 859623: # 124 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: enum 859623: { 859623: PTHREAD_INHERIT_SCHED, 859623: 859623: PTHREAD_EXPLICIT_SCHED 859623: 859623: }; 859623: 859623: 859623: 859623: enum 859623: { 859623: PTHREAD_SCOPE_SYSTEM, 859623: 859623: PTHREAD_SCOPE_PROCESS 859623: 859623: }; 859623: 859623: 859623: 859623: enum 859623: { 859623: PTHREAD_PROCESS_PRIVATE, 859623: 859623: PTHREAD_PROCESS_SHARED 859623: 859623: }; 859623: # 159 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: struct _pthread_cleanup_buffer 859623: { 859623: void (*__routine) (void *); 859623: void *__arg; 859623: int __canceltype; 859623: struct _pthread_cleanup_buffer *__prev; 859623: }; 859623: 859623: 859623: enum 859623: { 859623: PTHREAD_CANCEL_ENABLE, 859623: 859623: PTHREAD_CANCEL_DISABLE 859623: 859623: }; 859623: enum 859623: { 859623: PTHREAD_CANCEL_DEFERRED, 859623: 859623: PTHREAD_CANCEL_ASYNCHRONOUS 859623: 859623: }; 859623: # 197 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: extern int pthread_create (pthread_t *__restrict __newthread, 859623: const pthread_attr_t *__restrict __attr, 859623: void *(*__start_routine) (void *), 859623: void *__restrict __arg) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: 859623: 859623: 859623: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_join (pthread_t __th, void **__thread_return); 859623: 859623: 859623: 859623: 859623: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) noexcept (true); 859623: # 248 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, const struct timespec *__abstime) __asm__ ("" "__pthread_timedjoin_np64") 859623: 859623: 859623: ; 859623: 859623: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, clockid_t __clockid, const struct timespec *__abstime) __asm__ ("" "__pthread_clockjoin_np64") 859623: 859623: 859623: 859623: ; 859623: # 269 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_detach (pthread_t __th) noexcept (true); 859623: 859623: 859623: 859623: extern pthread_t pthread_self (void) noexcept (true) __attribute__ ((__const__)); 859623: 859623: 859623: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 859623: noexcept (true) __attribute__ ((__const__)); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_attr_init (pthread_attr_t *__attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_attr_destroy (pthread_attr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 859623: int *__detachstate) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 859623: int __detachstate) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 859623: size_t *__guardsize) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 859623: size_t __guardsize) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 859623: struct sched_param *__restrict __param) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 859623: const struct sched_param *__restrict 859623: __param) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 859623: __attr, int *__restrict __policy) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 859623: __attr, int *__restrict __inherit) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 859623: int __inherit) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 859623: int *__restrict __scope) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 859623: __attr, void **__restrict __stackaddr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 859623: void *__stackaddr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 859623: 859623: 859623: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 859623: __attr, size_t *__restrict __stacksize) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 859623: size_t __stacksize) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 859623: void **__restrict __stackaddr, 859623: size_t *__restrict __stacksize) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 859623: 859623: 859623: 859623: 859623: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 859623: size_t __stacksize) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 859623: size_t __cpusetsize, 859623: const cpu_set_t *__cpuset) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: 859623: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 859623: size_t __cpusetsize, 859623: cpu_set_t *__cpuset) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, 859623: const __sigset_t *sigmask); 859623: 859623: 859623: 859623: 859623: extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, 859623: __sigset_t *sigmask); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 859623: const struct sched_param *__param) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: 859623: 859623: extern int pthread_getschedparam (pthread_t __target_thread, 859623: int *__restrict __policy, 859623: struct sched_param *__restrict __param) 859623: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 859623: 859623: 859623: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 859623: noexcept (true); 859623: 859623: 859623: 859623: 859623: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 859623: size_t __buflen) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_getconcurrency (void) noexcept (true); 859623: 859623: 859623: extern int pthread_setconcurrency (int __level) noexcept (true); 859623: 859623: 859623: 859623: extern int pthread_yield (void) noexcept (true); 859623: 859623: extern int pthread_yield (void) noexcept (true) __asm__ ("" "sched_yield") 859623: __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) 859623: ; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 859623: const cpu_set_t *__cpuset) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: 859623: 859623: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 859623: cpu_set_t *__cpuset) 859623: noexcept (true) __attribute__ ((__nonnull__ (3))); 859623: # 509 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_once (pthread_once_t *__once_control, 859623: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 859623: # 521 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_setcancelstate (int __state, int *__oldstate); 859623: 859623: 859623: 859623: extern int pthread_setcanceltype (int __type, int *__oldtype); 859623: 859623: 859623: extern int pthread_cancel (pthread_t __th); 859623: 859623: 859623: 859623: 859623: extern void pthread_testcancel (void); 859623: 859623: 859623: 859623: 859623: struct __cancel_jmp_buf_tag 859623: { 859623: __jmp_buf __cancel_jmp_buf; 859623: int __mask_was_saved; 859623: }; 859623: 859623: typedef struct 859623: { 859623: struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; 859623: void *__pad[4]; 859623: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 859623: # 557 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: struct __pthread_cleanup_frame 859623: { 859623: void (*__cancel_routine) (void *); 859623: void *__cancel_arg; 859623: int __do_it; 859623: int __cancel_type; 859623: }; 859623: # 697 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) 859623: ; 859623: # 709 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) 859623: ; 859623: # 732 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) 859623: ; 859623: # 745 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf) 859623: ; 859623: 859623: 859623: 859623: extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) 859623: __attribute__ ((__noreturn__)) 859623: 859623: __attribute__ ((__weak__)) 859623: 859623: ; 859623: # 766 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) noexcept (true) __asm__ ("" "__sigsetjmp") 859623: 859623: 859623: __attribute__ ((__returns_twice__)); 859623: # 781 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 859623: const pthread_mutexattr_t *__mutexattr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 805 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_timedlock64") 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 2))); 859623: # 823 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_clocklock64") 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 859623: __restrict __mutex, 859623: int *__restrict __prioceiling) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 859623: int __prioceiling, 859623: int *__restrict __old_ceiling) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: 859623: 859623: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutex_consistent_np (pthread_mutex_t *) noexcept (true) __asm__ ("" "pthread_mutex_consistent") 859623: __attribute__ ((__nonnull__ (1))) 859623: __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) 859623: ; 859623: # 874 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 859623: __restrict __attr, 859623: int *__restrict __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 859623: int __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 859623: __attr, int *__restrict __kind) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: 859623: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 859623: __restrict __attr, 859623: int *__restrict __protocol) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: 859623: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 859623: int __protocol) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 859623: __restrict __attr, 859623: int *__restrict __prioceiling) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 859623: int __prioceiling) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 859623: int *__robustness) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) noexcept (true) __asm__ ("" "pthread_mutexattr_getrobust") 859623: 859623: __attribute__ ((__nonnull__ (1))) 859623: __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) 859623: ; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 859623: int __robustness) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) noexcept (true) __asm__ ("" "pthread_mutexattr_setrobust") 859623: 859623: __attribute__ ((__nonnull__ (1))) 859623: __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) 859623: ; 859623: # 967 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 859623: const pthread_rwlockattr_t *__restrict 859623: __attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 991 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedrdlock64") 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 2))); 859623: # 1010 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockrdlock64") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 1038 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedwrlock64") 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 2))); 859623: # 1058 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockwrlock64") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 3))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 859623: __restrict __attr, 859623: int *__restrict __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 859623: int __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 859623: __restrict __attr, 859623: int *__restrict __pref) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 859623: int __pref) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 859623: const pthread_condattr_t *__restrict __cond_attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_cond_destroy (pthread_cond_t *__cond) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_cond_signal (pthread_cond_t *__cond) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 859623: pthread_mutex_t *__restrict __mutex) 859623: __attribute__ ((__nonnull__ (1, 2))); 859623: # 1151 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __asm__ ("" "__pthread_cond_timedwait64") 859623: 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 2, 3))); 859623: # 1178 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: 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") 859623: 859623: 859623: 859623: 859623: 859623: __attribute__ ((__nonnull__ (1, 2, 4))); 859623: # 1194 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_condattr_init (pthread_condattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_condattr_getpshared (const pthread_condattr_t * 859623: __restrict __attr, 859623: int *__restrict __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 859623: int __pshared) noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_condattr_getclock (const pthread_condattr_t * 859623: __restrict __attr, 859623: __clockid_t *__restrict __clock_id) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 859623: __clockid_t __clock_id) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 1230 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 859623: const pthread_barrierattr_t *__restrict 859623: __attr, unsigned int __count) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: 859623: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 859623: __restrict __attr, 859623: int *__restrict __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 859623: 859623: 859623: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 859623: int __pshared) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: # 1297 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_key_create (pthread_key_t *__key, 859623: void (*__destr_function) (void *)) 859623: noexcept (true) __attribute__ ((__nonnull__ (1))); 859623: 859623: 859623: extern int pthread_key_delete (pthread_key_t __key) noexcept (true); 859623: 859623: 859623: extern void *pthread_getspecific (pthread_key_t __key) noexcept (true); 859623: 859623: 859623: extern int pthread_setspecific (pthread_key_t __key, 859623: const void *__pointer) 859623: noexcept (true) __attribute__ ((__access__ (__none__, 2))); 859623: 859623: 859623: 859623: 859623: extern int pthread_getcpuclockid (pthread_t __thread_id, 859623: __clockid_t *__clock_id) 859623: noexcept (true) __attribute__ ((__nonnull__ (2))); 859623: # 1332 "/usr/arm-linux-gnueabi/include/pthread.h" 3 4 859623: extern int pthread_atfork (void (*__prepare) (void), 859623: void (*__parent) (void), 859623: void (*__child) (void)) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) int 859623: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) noexcept (true) 859623: { 859623: return __thread1 == __thread2; 859623: } 859623: 859623: 859623: } 859623: # 537 "/usr/include/openssl/crypto.h" 2 3 4 859623: 859623: typedef pthread_once_t CRYPTO_ONCE; 859623: typedef pthread_key_t CRYPTO_THREAD_LOCAL; 859623: typedef pthread_t CRYPTO_THREAD_ID; 859623: # 553 "/usr/include/openssl/crypto.h" 3 4 859623: int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); 859623: 859623: int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); 859623: void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); 859623: int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); 859623: int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); 859623: 859623: CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); 859623: int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); 859623: 859623: OSSL_LIB_CTX *OSSL_LIB_CTX_new(void); 859623: OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle, 859623: const OSSL_DISPATCH *in); 859623: OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle, 859623: const OSSL_DISPATCH *in); 859623: int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); 859623: void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); 859623: OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); 859623: OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); 859623: int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); 859623: void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); 859623: 859623: void OSSL_sleep(uint64_t millis); 859623: 859623: 859623: void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); 859623: 859623: 859623: } 859623: # 24 "/usr/include/openssl/comp.h" 2 3 4 859623: # 1 "/usr/include/openssl/comperr.h" 1 3 4 859623: # 13 "/usr/include/openssl/comperr.h" 3 4 859623: 859623: # 25 "/usr/include/openssl/comp.h" 2 3 4 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: 859623: COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); 859623: const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); 859623: int COMP_CTX_get_type(const COMP_CTX* comp); 859623: int COMP_get_type(const COMP_METHOD *meth); 859623: const char *COMP_get_name(const COMP_METHOD *meth); 859623: void COMP_CTX_free(COMP_CTX *ctx); 859623: 859623: int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, 859623: unsigned char *in, int ilen); 859623: int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, 859623: unsigned char *in, int ilen); 859623: 859623: COMP_METHOD *COMP_zlib(void); 859623: COMP_METHOD *COMP_zlib_oneshot(void); 859623: COMP_METHOD *COMP_brotli(void); 859623: COMP_METHOD *COMP_brotli_oneshot(void); 859623: COMP_METHOD *COMP_zstd(void); 859623: COMP_METHOD *COMP_zstd_oneshot(void); 859623: # 64 "/usr/include/openssl/comp.h" 3 4 859623: typedef struct ssl_comp_st SSL_COMP; 859623: 859623: struct stack_st_SSL_COMP; typedef int (*sk_SSL_COMP_compfunc)(const SSL_COMP * const *a, const SSL_COMP *const *b); typedef void (*sk_SSL_COMP_freefunc)(SSL_COMP *a); typedef SSL_COMP * (*sk_SSL_COMP_copyfunc)(const SSL_COMP *a); static __attribute__((unused)) inline SSL_COMP *ossl_check_SSL_COMP_type(SSL_COMP *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_SSL_COMP_sk_type(const struct stack_st_SSL_COMP *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_SSL_COMP_sk_type(struct stack_st_SSL_COMP *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_SSL_COMP_compfunc_type(sk_SSL_COMP_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_SSL_COMP_copyfunc_type(sk_SSL_COMP_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_SSL_COMP_freefunc_type(sk_SSL_COMP_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 96 "/usr/include/openssl/comp.h" 3 4 859623: } 859623: # 30 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/bio.h" 1 3 4 859623: # 16 "/usr/include/openssl/bio.h" 3 4 859623: 859623: # 28 "/usr/include/openssl/bio.h" 3 4 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stdarg.h" 1 3 4 859623: # 29 "/usr/include/openssl/bio.h" 2 3 4 859623: 859623: 859623: # 1 "/usr/include/openssl/bioerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/bioerr.h" 3 4 859623: 859623: # 32 "/usr/include/openssl/bio.h" 2 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: # 243 "/usr/include/openssl/bio.h" 3 4 859623: typedef union bio_addr_st BIO_ADDR; 859623: typedef struct bio_addrinfo_st BIO_ADDRINFO; 859623: 859623: int BIO_get_new_index(void); 859623: void BIO_set_flags(BIO *b, int flags); 859623: int BIO_test_flags(const BIO *b, int flags); 859623: void BIO_clear_flags(BIO *b, int flags); 859623: # 308 "/usr/include/openssl/bio.h" 3 4 859623: typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, 859623: long argl, long ret); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) BIO_callback_fn BIO_get_callback(const BIO *b); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void BIO_set_callback(BIO *b, BIO_callback_fn callback); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) long BIO_debug_callback(BIO *bio, int cmd, 859623: const char *argp, int argi, 859623: long argl, long ret); 859623: 859623: 859623: typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, 859623: size_t len, int argi, 859623: long argl, int ret, size_t *processed); 859623: BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); 859623: void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); 859623: long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, 859623: int argi, long argl, int ret, size_t *processed); 859623: 859623: char *BIO_get_callback_arg(const BIO *b); 859623: void BIO_set_callback_arg(BIO *b, char *arg); 859623: 859623: typedef struct bio_method_st BIO_METHOD; 859623: 859623: const char *BIO_method_name(const BIO *b); 859623: int BIO_method_type(const BIO *b); 859623: 859623: typedef int BIO_info_cb(BIO *, int, int); 859623: typedef BIO_info_cb bio_info_cb; 859623: 859623: struct stack_st_BIO; typedef int (*sk_BIO_compfunc)(const BIO * const *a, const BIO *const *b); typedef void (*sk_BIO_freefunc)(BIO *a); typedef BIO * (*sk_BIO_copyfunc)(const BIO *a); static __attribute__((unused)) inline BIO *ossl_check_BIO_type(BIO *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_BIO_sk_type(const struct stack_st_BIO *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_BIO_sk_type(struct stack_st_BIO *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_BIO_compfunc_type(sk_BIO_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_BIO_copyfunc_type(sk_BIO_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_BIO_freefunc_type(sk_BIO_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 366 "/usr/include/openssl/bio.h" 3 4 859623: typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, 859623: void *parg); 859623: 859623: typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b, 859623: void *context, 859623: void *buf); 859623: # 398 "/usr/include/openssl/bio.h" 3 4 859623: typedef struct bio_msg_st { 859623: void *data; 859623: size_t data_len; 859623: BIO_ADDR *peer, *local; 859623: uint64_t flags; 859623: } BIO_MSG; 859623: 859623: typedef struct bio_mmsg_cb_args_st { 859623: BIO_MSG *msg; 859623: size_t stride, num_msg; 859623: uint64_t flags; 859623: size_t *msgs_processed; 859623: } BIO_MMSG_CB_ARGS; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef struct bio_poll_descriptor_st { 859623: uint32_t type; 859623: union { 859623: int fd; 859623: void *custom; 859623: uintptr_t custom_ui; 859623: SSL *ssl; 859623: } value; 859623: } BIO_POLL_DESCRIPTOR; 859623: # 636 "/usr/include/openssl/bio.h" 3 4 859623: size_t BIO_ctrl_pending(BIO *b); 859623: size_t BIO_ctrl_wpending(BIO *b); 859623: # 656 "/usr/include/openssl/bio.h" 3 4 859623: size_t BIO_ctrl_get_write_guarantee(BIO *b); 859623: size_t BIO_ctrl_get_read_request(BIO *b); 859623: int BIO_ctrl_reset_read_request(BIO *b); 859623: # 707 "/usr/include/openssl/bio.h" 3 4 859623: int BIO_set_ex_data(BIO *bio, int idx, void *data); 859623: void *BIO_get_ex_data(const BIO *bio, int idx); 859623: uint64_t BIO_number_read(BIO *bio); 859623: uint64_t BIO_number_written(BIO *bio); 859623: 859623: 859623: int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, 859623: asn1_ps_func *prefix_free); 859623: int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, 859623: asn1_ps_func **pprefix_free); 859623: int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, 859623: asn1_ps_func *suffix_free); 859623: int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, 859623: asn1_ps_func **psuffix_free); 859623: 859623: const BIO_METHOD *BIO_s_file(void); 859623: BIO *BIO_new_file(const char *filename, const char *mode); 859623: BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio); 859623: 859623: BIO *BIO_new_fp(FILE *stream, int close_flag); 859623: 859623: BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method); 859623: BIO *BIO_new(const BIO_METHOD *type); 859623: int BIO_free(BIO *a); 859623: void BIO_set_data(BIO *a, void *ptr); 859623: void *BIO_get_data(BIO *a); 859623: void BIO_set_init(BIO *a, int init); 859623: int BIO_get_init(BIO *a); 859623: void BIO_set_shutdown(BIO *a, int shut); 859623: int BIO_get_shutdown(BIO *a); 859623: void BIO_vfree(BIO *a); 859623: int BIO_up_ref(BIO *a); 859623: int BIO_read(BIO *b, void *data, int dlen); 859623: int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); 859623: int BIO_recvmmsg(BIO *b, BIO_MSG *msg, 859623: size_t stride, size_t num_msg, uint64_t flags, 859623: size_t *msgs_processed); 859623: int BIO_gets(BIO *bp, char *buf, int size); 859623: int BIO_get_line(BIO *bio, char *buf, int size); 859623: int BIO_write(BIO *b, const void *data, int dlen); 859623: int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); 859623: int BIO_sendmmsg(BIO *b, BIO_MSG *msg, 859623: size_t stride, size_t num_msg, uint64_t flags, 859623: size_t *msgs_processed); 859623: int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); 859623: int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); 859623: int BIO_puts(BIO *bp, const char *buf); 859623: int BIO_indent(BIO *b, int indent, int max); 859623: long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); 859623: long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); 859623: void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); 859623: long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); 859623: BIO *BIO_push(BIO *b, BIO *append); 859623: BIO *BIO_pop(BIO *b); 859623: void BIO_free_all(BIO *a); 859623: BIO *BIO_find_type(BIO *b, int bio_type); 859623: BIO *BIO_next(BIO *b); 859623: void BIO_set_next(BIO *b, BIO *next); 859623: BIO *BIO_get_retry_BIO(BIO *bio, int *reason); 859623: int BIO_get_retry_reason(BIO *bio); 859623: void BIO_set_retry_reason(BIO *bio, int reason); 859623: BIO *BIO_dup_chain(BIO *in); 859623: 859623: int BIO_nread0(BIO *bio, char **buf); 859623: int BIO_nread(BIO *bio, char **buf, int num); 859623: int BIO_nwrite0(BIO *bio, char **buf); 859623: int BIO_nwrite(BIO *bio, char **buf, int num); 859623: 859623: const BIO_METHOD *BIO_s_mem(void); 859623: 859623: const BIO_METHOD *BIO_s_dgram_mem(void); 859623: 859623: const BIO_METHOD *BIO_s_secmem(void); 859623: BIO *BIO_new_mem_buf(const void *buf, int len); 859623: 859623: const BIO_METHOD *BIO_s_socket(void); 859623: const BIO_METHOD *BIO_s_connect(void); 859623: const BIO_METHOD *BIO_s_accept(void); 859623: 859623: const BIO_METHOD *BIO_s_fd(void); 859623: const BIO_METHOD *BIO_s_log(void); 859623: const BIO_METHOD *BIO_s_bio(void); 859623: const BIO_METHOD *BIO_s_null(void); 859623: const BIO_METHOD *BIO_f_null(void); 859623: const BIO_METHOD *BIO_f_buffer(void); 859623: const BIO_METHOD *BIO_f_readbuffer(void); 859623: const BIO_METHOD *BIO_f_linebuffer(void); 859623: const BIO_METHOD *BIO_f_nbio_test(void); 859623: const BIO_METHOD *BIO_f_prefix(void); 859623: const BIO_METHOD *BIO_s_core(void); 859623: 859623: const BIO_METHOD *BIO_s_dgram_pair(void); 859623: const BIO_METHOD *BIO_s_datagram(void); 859623: int BIO_dgram_non_fatal_error(int error); 859623: BIO *BIO_new_dgram(int fd, int close_flag); 859623: # 815 "/usr/include/openssl/bio.h" 3 4 859623: int BIO_sock_should_retry(int i); 859623: int BIO_sock_non_fatal_error(int error); 859623: int BIO_err_is_non_fatal(unsigned int errcode); 859623: int BIO_socket_wait(int fd, int for_read, time_t max_time); 859623: 859623: int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); 859623: int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds); 859623: 859623: int BIO_fd_should_retry(int i); 859623: int BIO_fd_non_fatal_error(int error); 859623: int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), 859623: void *u, const void *s, int len); 859623: int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), 859623: void *u, const void *s, int len, int indent); 859623: int BIO_dump(BIO *b, const void *bytes, int len); 859623: int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent); 859623: 859623: int BIO_dump_fp(FILE *fp, const void *s, int len); 859623: int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent); 859623: 859623: int BIO_hex_string(BIO *out, int indent, int width, const void *data, 859623: int datalen); 859623: 859623: 859623: BIO_ADDR *BIO_ADDR_new(void); 859623: int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); 859623: BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); 859623: int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, 859623: const void *where, size_t wherelen, unsigned short port); 859623: void BIO_ADDR_free(BIO_ADDR *); 859623: void BIO_ADDR_clear(BIO_ADDR *ap); 859623: int BIO_ADDR_family(const BIO_ADDR *ap); 859623: int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); 859623: unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); 859623: char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); 859623: char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); 859623: char *BIO_ADDR_path_string(const BIO_ADDR *ap); 859623: 859623: const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); 859623: int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); 859623: int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); 859623: int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); 859623: const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); 859623: void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); 859623: 859623: enum BIO_hostserv_priorities { 859623: BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV 859623: }; 859623: int BIO_parse_hostserv(const char *hostserv, char **host, char **service, 859623: enum BIO_hostserv_priorities hostserv_prio); 859623: enum BIO_lookup_type { 859623: BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER 859623: }; 859623: int BIO_lookup(const char *host, const char *service, 859623: enum BIO_lookup_type lookup_type, 859623: int family, int socktype, BIO_ADDRINFO **res); 859623: int BIO_lookup_ex(const char *host, const char *service, 859623: int lookup_type, int family, int socktype, int protocol, 859623: BIO_ADDRINFO **res); 859623: int BIO_sock_error(int sock); 859623: int BIO_socket_ioctl(int fd, long type, void *arg); 859623: int BIO_socket_nbio(int fd, int mode); 859623: int BIO_sock_init(void); 859623: 859623: 859623: 859623: int BIO_set_tcp_ndelay(int sock, int turn_on); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) struct hostent *BIO_gethostbyname(const char *name); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) int BIO_get_port(const char *str, unsigned short *port_ptr); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) int BIO_get_host_ip(const char *str, unsigned char *ip); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) int BIO_get_accept_socket(char *host_port, int mode); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) int BIO_accept(int sock, char **ip_port); 859623: 859623: 859623: union BIO_sock_info_u { 859623: BIO_ADDR *addr; 859623: }; 859623: enum BIO_sock_info_type { 859623: BIO_SOCK_INFO_ADDRESS 859623: }; 859623: int BIO_sock_info(int sock, 859623: enum BIO_sock_info_type type, union BIO_sock_info_u *info); 859623: # 906 "/usr/include/openssl/bio.h" 3 4 859623: int BIO_socket(int domain, int socktype, int protocol, int options); 859623: int BIO_connect(int sock, const BIO_ADDR *addr, int options); 859623: int BIO_bind(int sock, const BIO_ADDR *addr, int options); 859623: int BIO_listen(int sock, const BIO_ADDR *addr, int options); 859623: int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); 859623: int BIO_closesocket(int sock); 859623: 859623: BIO *BIO_new_socket(int sock, int close_flag); 859623: BIO *BIO_new_connect(const char *host_port); 859623: BIO *BIO_new_accept(const char *host_port); 859623: 859623: 859623: BIO *BIO_new_fd(int fd, int close_flag); 859623: 859623: int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, 859623: BIO **bio2, size_t writebuf2); 859623: 859623: int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, 859623: BIO **bio2, size_t writebuf2); 859623: # 933 "/usr/include/openssl/bio.h" 3 4 859623: void BIO_copy_next_retry(BIO *b); 859623: # 957 "/usr/include/openssl/bio.h" 3 4 859623: int BIO_printf(BIO *bio, const char *format, ...) 859623: ; 859623: int BIO_vprintf(BIO *bio, const char *format, va_list args) 859623: ; 859623: int BIO_snprintf(char *buf, size_t n, const char *format, ...) 859623: ; 859623: int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) 859623: ; 859623: 859623: 859623: 859623: 859623: BIO_METHOD *BIO_meth_new(int type, const char *name); 859623: void BIO_meth_free(BIO_METHOD *biom); 859623: int BIO_meth_set_write(BIO_METHOD *biom, 859623: int (*write) (BIO *, const char *, int)); 859623: int BIO_meth_set_write_ex(BIO_METHOD *biom, 859623: int (*bwrite) (BIO *, const char *, size_t, size_t *)); 859623: int BIO_meth_set_sendmmsg(BIO_METHOD *biom, 859623: int (*f) (BIO *, BIO_MSG *, size_t, size_t, 859623: uint64_t, size_t *)); 859623: int BIO_meth_set_read(BIO_METHOD *biom, 859623: int (*read) (BIO *, char *, int)); 859623: int BIO_meth_set_read_ex(BIO_METHOD *biom, 859623: int (*bread) (BIO *, char *, size_t, size_t *)); 859623: int BIO_meth_set_recvmmsg(BIO_METHOD *biom, 859623: int (*f) (BIO *, BIO_MSG *, size_t, size_t, 859623: uint64_t, size_t *)); 859623: int BIO_meth_set_puts(BIO_METHOD *biom, 859623: int (*puts) (BIO *, const char *)); 859623: int BIO_meth_set_gets(BIO_METHOD *biom, 859623: int (*ossl_gets) (BIO *, char *, int)); 859623: int BIO_meth_set_ctrl(BIO_METHOD *biom, 859623: long (*ctrl) (BIO *, int, long, void *)); 859623: int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); 859623: int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); 859623: int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, 859623: long (*callback_ctrl) (BIO *, int, 859623: BIO_info_cb *)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, 859623: int); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, 859623: size_t, size_t *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, 859623: size_t, size_t, 859623: uint64_t, size_t *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, 859623: size_t, size_t *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, 859623: size_t, size_t, 859623: uint64_t, size_t *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, 859623: long, void *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); 859623: __attribute__((deprecated("Since OpenSSL " "3.5"))) long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) (BIO *, int, 859623: BIO_info_cb *); 859623: 859623: 859623: } 859623: # 31 "/usr/include/openssl/ssl.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/x509.h" 1 3 4 859623: # 18 "/usr/include/openssl/x509.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 27 "/usr/include/openssl/x509.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/buffer.h" 1 3 4 859623: # 12 "/usr/include/openssl/buffer.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 20 "/usr/include/openssl/buffer.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/buffererr.h" 1 3 4 859623: # 13 "/usr/include/openssl/buffererr.h" 3 4 859623: 859623: # 24 "/usr/include/openssl/buffer.h" 2 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 31 "/usr/include/openssl/buffer.h" 2 3 4 859623: # 42 "/usr/include/openssl/buffer.h" 3 4 859623: struct buf_mem_st { 859623: size_t length; 859623: char *data; 859623: size_t max; 859623: unsigned long flags; 859623: }; 859623: 859623: 859623: 859623: BUF_MEM *BUF_MEM_new(void); 859623: BUF_MEM *BUF_MEM_new_ex(unsigned long flags); 859623: void BUF_MEM_free(BUF_MEM *a); 859623: size_t BUF_MEM_grow(BUF_MEM *str, size_t len); 859623: size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); 859623: void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); 859623: 859623: 859623: 859623: } 859623: # 29 "/usr/include/openssl/x509.h" 2 3 4 859623: # 1 "/usr/include/openssl/evp.h" 1 3 4 859623: # 12 "/usr/include/openssl/evp.h" 3 4 859623: 859623: # 26 "/usr/include/openssl/evp.h" 3 4 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 27 "/usr/include/openssl/evp.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/core_dispatch.h" 1 3 4 859623: # 12 "/usr/include/openssl/core_dispatch.h" 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/indicator.h" 1 3 4 859623: # 12 "/usr/include/openssl/indicator.h" 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: # 1 "/usr/include/openssl/params.h" 1 3 4 859623: # 13 "/usr/include/openssl/params.h" 3 4 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/bn.h" 1 3 4 859623: # 13 "/usr/include/openssl/bn.h" 3 4 859623: 859623: # 25 "/usr/include/openssl/bn.h" 3 4 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 26 "/usr/include/openssl/bn.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/bnerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/bnerr.h" 3 4 859623: 859623: # 28 "/usr/include/openssl/bn.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: # 76 "/usr/include/openssl/bn.h" 3 4 859623: void BN_set_flags(BIGNUM *b, int n); 859623: int BN_get_flags(const BIGNUM *b, int n); 859623: # 94 "/usr/include/openssl/bn.h" 3 4 859623: void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags); 859623: 859623: 859623: int BN_GENCB_call(BN_GENCB *cb, int a, int b); 859623: 859623: BN_GENCB *BN_GENCB_new(void); 859623: void BN_GENCB_free(BN_GENCB *cb); 859623: 859623: 859623: void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *), 859623: void *cb_arg); 859623: 859623: 859623: void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *), 859623: void *cb_arg); 859623: 859623: void *BN_GENCB_get_arg(BN_GENCB *cb); 859623: # 191 "/usr/include/openssl/bn.h" 3 4 859623: int BN_abs_is_word(const BIGNUM *a, const unsigned int w); 859623: int BN_is_zero(const BIGNUM *a); 859623: int BN_is_one(const BIGNUM *a); 859623: int BN_is_word(const BIGNUM *a, const unsigned int w); 859623: int BN_is_odd(const BIGNUM *a); 859623: 859623: 859623: 859623: void BN_zero_ex(BIGNUM *a); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: const BIGNUM *BN_value_one(void); 859623: char *BN_options(void); 859623: BN_CTX *BN_CTX_new_ex(OSSL_LIB_CTX *ctx); 859623: BN_CTX *BN_CTX_new(void); 859623: BN_CTX *BN_CTX_secure_new_ex(OSSL_LIB_CTX *ctx); 859623: BN_CTX *BN_CTX_secure_new(void); 859623: void BN_CTX_free(BN_CTX *c); 859623: void BN_CTX_start(BN_CTX *ctx); 859623: BIGNUM *BN_CTX_get(BN_CTX *ctx); 859623: void BN_CTX_end(BN_CTX *ctx); 859623: int BN_rand_ex(BIGNUM *rnd, int bits, int top, int bottom, 859623: unsigned int strength, BN_CTX *ctx); 859623: int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); 859623: int BN_priv_rand_ex(BIGNUM *rnd, int bits, int top, int bottom, 859623: unsigned int strength, BN_CTX *ctx); 859623: int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); 859623: int BN_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength, 859623: BN_CTX *ctx); 859623: int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); 859623: int BN_priv_rand_range_ex(BIGNUM *r, const BIGNUM *range, 859623: unsigned int strength, BN_CTX *ctx); 859623: int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); 859623: 859623: int BN_num_bits(const BIGNUM *a); 859623: int BN_num_bits_word(unsigned int l); 859623: int BN_security_bits(int L, int N); 859623: BIGNUM *BN_new(void); 859623: BIGNUM *BN_secure_new(void); 859623: void BN_clear_free(BIGNUM *a); 859623: BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); 859623: void BN_swap(BIGNUM *a, BIGNUM *b); 859623: BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); 859623: BIGNUM *BN_signed_bin2bn(const unsigned char *s, int len, BIGNUM *ret); 859623: int BN_bn2bin(const BIGNUM *a, unsigned char *to); 859623: int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); 859623: int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen); 859623: BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); 859623: BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); 859623: int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); 859623: int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen); 859623: BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); 859623: BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret); 859623: int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); 859623: int BN_signed_bn2native(const BIGNUM *a, unsigned char *to, int tolen); 859623: BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); 859623: int BN_bn2mpi(const BIGNUM *a, unsigned char *to); 859623: int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); 859623: int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); 859623: int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); 859623: int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); 859623: int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); 859623: int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: void BN_set_negative(BIGNUM *b, int n); 859623: 859623: 859623: 859623: 859623: int BN_is_negative(const BIGNUM *b); 859623: 859623: int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, 859623: BN_CTX *ctx); 859623: 859623: int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); 859623: int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, 859623: BN_CTX *ctx); 859623: int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const BIGNUM *m); 859623: int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, 859623: BN_CTX *ctx); 859623: int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const BIGNUM *m); 859623: int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, 859623: BN_CTX *ctx); 859623: int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); 859623: int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); 859623: int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); 859623: int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, 859623: BN_CTX *ctx); 859623: int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); 859623: 859623: unsigned int BN_mod_word(const BIGNUM *a, unsigned int w); 859623: unsigned int BN_div_word(BIGNUM *a, unsigned int w); 859623: int BN_mul_word(BIGNUM *a, unsigned int w); 859623: int BN_add_word(BIGNUM *a, unsigned int w); 859623: int BN_sub_word(BIGNUM *a, unsigned int w); 859623: int BN_set_word(BIGNUM *a, unsigned int w); 859623: unsigned int BN_get_word(const BIGNUM *a); 859623: 859623: int BN_cmp(const BIGNUM *a, const BIGNUM *b); 859623: void BN_free(BIGNUM *a); 859623: int BN_is_bit_set(const BIGNUM *a, int n); 859623: int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); 859623: int BN_lshift1(BIGNUM *r, const BIGNUM *a); 859623: int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); 859623: 859623: int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 859623: const BIGNUM *m, BN_CTX *ctx); 859623: int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 859623: const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 859623: int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, 859623: const BIGNUM *m, BN_CTX *ctx, 859623: BN_MONT_CTX *in_mont); 859623: int BN_mod_exp_mont_word(BIGNUM *r, unsigned int a, const BIGNUM *p, 859623: const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 859623: int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, 859623: const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, 859623: BN_CTX *ctx, BN_MONT_CTX *m_ctx); 859623: int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 859623: const BIGNUM *m, BN_CTX *ctx); 859623: int BN_mod_exp_mont_consttime_x2(BIGNUM *rr1, const BIGNUM *a1, const BIGNUM *p1, 859623: const BIGNUM *m1, BN_MONT_CTX *in_mont1, 859623: BIGNUM *rr2, const BIGNUM *a2, const BIGNUM *p2, 859623: const BIGNUM *m2, BN_MONT_CTX *in_mont2, 859623: BN_CTX *ctx); 859623: 859623: int BN_mask_bits(BIGNUM *a, int n); 859623: 859623: int BN_print_fp(FILE *fp, const BIGNUM *a); 859623: 859623: int BN_print(BIO *bio, const BIGNUM *a); 859623: int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); 859623: int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); 859623: int BN_rshift1(BIGNUM *r, const BIGNUM *a); 859623: void BN_clear(BIGNUM *a); 859623: BIGNUM *BN_dup(const BIGNUM *a); 859623: int BN_ucmp(const BIGNUM *a, const BIGNUM *b); 859623: int BN_set_bit(BIGNUM *a, int n); 859623: int BN_clear_bit(BIGNUM *a, int n); 859623: char *BN_bn2hex(const BIGNUM *a); 859623: char *BN_bn2dec(const BIGNUM *a); 859623: int BN_hex2bn(BIGNUM **a, const char *str); 859623: int BN_dec2bn(BIGNUM **a, const char *str); 859623: int BN_asc2bn(BIGNUM **a, const char *str); 859623: int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); 859623: int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); 859623: 859623: 859623: int BN_are_coprime(BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); 859623: BIGNUM *BN_mod_inverse(BIGNUM *ret, 859623: const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); 859623: BIGNUM *BN_mod_sqrt(BIGNUM *ret, 859623: const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); 859623: 859623: void BN_consttime_swap(unsigned int swap, BIGNUM *a, BIGNUM *b, int nwords); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) 859623: BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, 859623: const BIGNUM *add, const BIGNUM *rem, 859623: void (*callback) (int, int, void *), 859623: void *cb_arg); 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) 859623: int BN_is_prime(const BIGNUM *p, int nchecks, 859623: void (*callback) (int, int, void *), 859623: BN_CTX *ctx, void *cb_arg); 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) 859623: int BN_is_prime_fasttest(const BIGNUM *p, int nchecks, 859623: void (*callback) (int, int, void *), 859623: BN_CTX *ctx, void *cb_arg, 859623: int do_trial_division); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, 859623: int do_trial_division, BN_GENCB *cb); 859623: 859623: 859623: int BN_generate_prime_ex2(BIGNUM *ret, int bits, int safe, 859623: const BIGNUM *add, const BIGNUM *rem, BN_GENCB *cb, 859623: BN_CTX *ctx); 859623: int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, 859623: const BIGNUM *rem, BN_GENCB *cb); 859623: int BN_check_prime(const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, 859623: const BIGNUM *Xp, const BIGNUM *Xp1, 859623: const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, 859623: BN_GENCB *cb); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, 859623: BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, 859623: BN_CTX *ctx, BN_GENCB *cb); 859623: 859623: 859623: BN_MONT_CTX *BN_MONT_CTX_new(void); 859623: int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: BN_MONT_CTX *mont, BN_CTX *ctx); 859623: int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, 859623: BN_CTX *ctx); 859623: int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, 859623: BN_CTX *ctx); 859623: void BN_MONT_CTX_free(BN_MONT_CTX *mont); 859623: int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); 859623: BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); 859623: BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock, 859623: const BIGNUM *mod, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); 859623: void BN_BLINDING_free(BN_BLINDING *b); 859623: int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); 859623: int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); 859623: int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); 859623: int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); 859623: int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, 859623: BN_CTX *); 859623: 859623: int BN_BLINDING_is_current_thread(BN_BLINDING *b); 859623: void BN_BLINDING_set_current_thread(BN_BLINDING *b); 859623: int BN_BLINDING_lock(BN_BLINDING *b); 859623: int BN_BLINDING_unlock(BN_BLINDING *b); 859623: 859623: unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); 859623: void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); 859623: BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, 859623: const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, 859623: int (*bn_mod_exp) (BIGNUM *r, 859623: const BIGNUM *a, 859623: const BIGNUM *p, 859623: const BIGNUM *m, 859623: BN_CTX *ctx, 859623: BN_MONT_CTX *m_ctx), 859623: BN_MONT_CTX *m_ctx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) 859623: void BN_set_params(int mul, int high, int low, int mont); 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) 859623: int BN_get_params(int which); 859623: 859623: 859623: BN_RECP_CTX *BN_RECP_CTX_new(void); 859623: void BN_RECP_CTX_free(BN_RECP_CTX *recp); 859623: int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); 859623: int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, 859623: BN_RECP_CTX *recp, BN_CTX *ctx); 859623: int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 859623: const BIGNUM *m, BN_CTX *ctx); 859623: int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, 859623: BN_RECP_CTX *recp, BN_CTX *ctx); 859623: # 479 "/usr/include/openssl/bn.h" 3 4 859623: int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); 859623: 859623: 859623: 859623: 859623: int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); 859623: 859623: int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const BIGNUM *p, BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const BIGNUM *p, BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const BIGNUM *p, BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 859623: BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 859623: BN_CTX *ctx); 859623: # 512 "/usr/include/openssl/bn.h" 3 4 859623: int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); 859623: 859623: int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const int p[], BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], 859623: BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], 859623: BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const int p[], BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 859623: const int p[], BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, 859623: const int p[], BN_CTX *ctx); 859623: 859623: int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, 859623: const int p[], BN_CTX *ctx); 859623: int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); 859623: int BN_GF2m_arr2poly(const int p[], BIGNUM *a); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); 859623: int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); 859623: int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); 859623: int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); 859623: int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); 859623: 859623: const BIGNUM *BN_get0_nist_prime_192(void); 859623: const BIGNUM *BN_get0_nist_prime_224(void); 859623: const BIGNUM *BN_get0_nist_prime_256(void); 859623: const BIGNUM *BN_get0_nist_prime_384(void); 859623: const BIGNUM *BN_get0_nist_prime_521(void); 859623: 859623: int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a, 859623: const BIGNUM *field, BN_CTX *ctx); 859623: 859623: int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, 859623: const BIGNUM *priv, const unsigned char *message, 859623: size_t message_len, BN_CTX *ctx); 859623: 859623: 859623: BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn); 859623: BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn); 859623: 859623: 859623: BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn); 859623: BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn); 859623: BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn); 859623: BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn); 859623: BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn); 859623: BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn); 859623: # 584 "/usr/include/openssl/bn.h" 3 4 859623: int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); 859623: 859623: 859623: 859623: } 859623: # 17 "/usr/include/openssl/params.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: # 71 "/usr/include/openssl/params.h" 3 4 859623: OSSL_PARAM *OSSL_PARAM_locate(OSSL_PARAM *p, const char *key); 859623: const OSSL_PARAM *OSSL_PARAM_locate_const(const OSSL_PARAM *p, const char *key); 859623: 859623: 859623: OSSL_PARAM OSSL_PARAM_construct_int(const char *key, int *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_uint(const char *key, unsigned int *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_long(const char *key, long int *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_ulong(const char *key, unsigned long int *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_int32(const char *key, int32_t *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_uint32(const char *key, uint32_t *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf, 859623: size_t bsize); 859623: OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf); 859623: OSSL_PARAM OSSL_PARAM_construct_utf8_string(const char *key, char *buf, 859623: size_t bsize); 859623: OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf, 859623: size_t bsize); 859623: OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf, 859623: size_t bsize); 859623: OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf, 859623: size_t bsize); 859623: OSSL_PARAM OSSL_PARAM_construct_end(void); 859623: 859623: int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to, 859623: const OSSL_PARAM *paramdefs, 859623: const char *key, const char *value, 859623: size_t value_n, int *found); 859623: 859623: int OSSL_PARAM_print_to_bio(const OSSL_PARAM *params, BIO *bio, 859623: int print_values); 859623: 859623: int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val); 859623: int OSSL_PARAM_get_uint(const OSSL_PARAM *p, unsigned int *val); 859623: int OSSL_PARAM_get_long(const OSSL_PARAM *p, long int *val); 859623: int OSSL_PARAM_get_ulong(const OSSL_PARAM *p, unsigned long int *val); 859623: int OSSL_PARAM_get_int32(const OSSL_PARAM *p, int32_t *val); 859623: int OSSL_PARAM_get_uint32(const OSSL_PARAM *p, uint32_t *val); 859623: int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val); 859623: int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val); 859623: int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val); 859623: int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val); 859623: 859623: int OSSL_PARAM_set_int(OSSL_PARAM *p, int val); 859623: int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val); 859623: int OSSL_PARAM_set_long(OSSL_PARAM *p, long int val); 859623: int OSSL_PARAM_set_ulong(OSSL_PARAM *p, unsigned long int val); 859623: int OSSL_PARAM_set_int32(OSSL_PARAM *p, int32_t val); 859623: int OSSL_PARAM_set_uint32(OSSL_PARAM *p, uint32_t val); 859623: int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val); 859623: int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val); 859623: int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val); 859623: int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val); 859623: 859623: int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val); 859623: int OSSL_PARAM_set_double(OSSL_PARAM *p, double val); 859623: 859623: int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val); 859623: int OSSL_PARAM_set_BN(OSSL_PARAM *p, const BIGNUM *val); 859623: 859623: int OSSL_PARAM_get_utf8_string(const OSSL_PARAM *p, char **val, size_t max_len); 859623: int OSSL_PARAM_set_utf8_string(OSSL_PARAM *p, const char *val); 859623: 859623: int OSSL_PARAM_get_octet_string(const OSSL_PARAM *p, void **val, size_t max_len, 859623: size_t *used_len); 859623: int OSSL_PARAM_set_octet_string(OSSL_PARAM *p, const void *val, size_t len); 859623: 859623: int OSSL_PARAM_get_utf8_ptr(const OSSL_PARAM *p, const char **val); 859623: int OSSL_PARAM_set_utf8_ptr(OSSL_PARAM *p, const char *val); 859623: 859623: int OSSL_PARAM_get_octet_ptr(const OSSL_PARAM *p, const void **val, 859623: size_t *used_len); 859623: int OSSL_PARAM_set_octet_ptr(OSSL_PARAM *p, const void *val, 859623: size_t used_len); 859623: 859623: int OSSL_PARAM_get_utf8_string_ptr(const OSSL_PARAM *p, const char **val); 859623: int OSSL_PARAM_get_octet_string_ptr(const OSSL_PARAM *p, const void **val, 859623: size_t *used_len); 859623: 859623: int OSSL_PARAM_modified(const OSSL_PARAM *p); 859623: void OSSL_PARAM_set_all_unmodified(OSSL_PARAM *p); 859623: 859623: OSSL_PARAM *OSSL_PARAM_dup(const OSSL_PARAM *p); 859623: OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *p1, const OSSL_PARAM *p2); 859623: void OSSL_PARAM_free(OSSL_PARAM *p); 859623: 859623: 859623: } 859623: # 19 "/usr/include/openssl/indicator.h" 2 3 4 859623: 859623: typedef int (OSSL_INDICATOR_CALLBACK)(const char *type, const char *desc, 859623: const OSSL_PARAM params[]); 859623: 859623: void OSSL_INDICATOR_set_callback(OSSL_LIB_CTX *libctx, 859623: OSSL_INDICATOR_CALLBACK *cb); 859623: void OSSL_INDICATOR_get_callback(OSSL_LIB_CTX *libctx, 859623: OSSL_INDICATOR_CALLBACK **cb); 859623: 859623: 859623: } 859623: # 17 "/usr/include/openssl/core_dispatch.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef void (*OSSL_FUNC)(void); 859623: # 72 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef const OSSL_PARAM * (OSSL_FUNC_core_gettable_params_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_core_gettable_params_fn *OSSL_FUNC_core_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_gettable_params_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_core_get_params_fn)(const OSSL_CORE_HANDLE *prov, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_core_get_params_fn *OSSL_FUNC_core_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_get_params_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_core_thread_start_fn)(const OSSL_CORE_HANDLE *prov, OSSL_thread_stop_handler_fn handfn, void *arg); static __attribute__((unused)) inline OSSL_FUNC_core_thread_start_fn *OSSL_FUNC_core_thread_start(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_thread_start_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef OPENSSL_CORE_CTX * (OSSL_FUNC_core_get_libctx_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_core_get_libctx_fn *OSSL_FUNC_core_get_libctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_get_libctx_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_core_new_error_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_core_new_error_fn *OSSL_FUNC_core_new_error(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_new_error_fn *)opf->function; } 859623: 859623: typedef void (OSSL_FUNC_core_set_error_debug_fn)(const OSSL_CORE_HANDLE *prov, const char *file, int line, const char *func); static __attribute__((unused)) inline OSSL_FUNC_core_set_error_debug_fn *OSSL_FUNC_core_set_error_debug(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_set_error_debug_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_core_vset_error_fn)(const OSSL_CORE_HANDLE *prov, uint32_t reason, const char *fmt, va_list args); static __attribute__((unused)) inline OSSL_FUNC_core_vset_error_fn *OSSL_FUNC_core_vset_error(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_vset_error_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_core_set_error_mark_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_core_set_error_mark_fn *OSSL_FUNC_core_set_error_mark(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_set_error_mark_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_core_clear_last_error_mark_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_core_clear_last_error_mark_fn *OSSL_FUNC_core_clear_last_error_mark(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_clear_last_error_mark_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_core_pop_error_to_mark_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_core_pop_error_to_mark_fn *OSSL_FUNC_core_pop_error_to_mark(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_pop_error_to_mark_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_core_obj_add_sigid_fn)(const OSSL_CORE_HANDLE *prov, const char *sign_name, const char *digest_name, const char *pkey_name); static __attribute__((unused)) inline OSSL_FUNC_core_obj_add_sigid_fn *OSSL_FUNC_core_obj_add_sigid(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_obj_add_sigid_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_core_obj_create_fn)(const OSSL_CORE_HANDLE *prov, const char *oid, const char *sn, const char *ln); static __attribute__((unused)) inline OSSL_FUNC_core_obj_create_fn *OSSL_FUNC_core_obj_create(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_obj_create_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef void * (OSSL_FUNC_CRYPTO_malloc_fn)(size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_malloc_fn *OSSL_FUNC_CRYPTO_malloc(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_malloc_fn *)opf->function; } 859623: 859623: 859623: typedef void * (OSSL_FUNC_CRYPTO_zalloc_fn)(size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_zalloc_fn *OSSL_FUNC_CRYPTO_zalloc(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_zalloc_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_CRYPTO_free_fn)(void *ptr, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_free_fn *OSSL_FUNC_CRYPTO_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_free_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_CRYPTO_clear_free_fn)(void *ptr, size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_clear_free_fn *OSSL_FUNC_CRYPTO_clear_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_clear_free_fn *)opf->function; } 859623: 859623: 859623: typedef void * (OSSL_FUNC_CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_realloc_fn *OSSL_FUNC_CRYPTO_realloc(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_realloc_fn *)opf->function; } 859623: 859623: 859623: typedef void * (OSSL_FUNC_CRYPTO_clear_realloc_fn)(void *addr, size_t old_num, size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_clear_realloc_fn *OSSL_FUNC_CRYPTO_clear_realloc(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_clear_realloc_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef void * (OSSL_FUNC_CRYPTO_secure_malloc_fn)(size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_secure_malloc_fn *OSSL_FUNC_CRYPTO_secure_malloc(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_secure_malloc_fn *)opf->function; } 859623: 859623: 859623: typedef void * (OSSL_FUNC_CRYPTO_secure_zalloc_fn)(size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_secure_zalloc_fn *OSSL_FUNC_CRYPTO_secure_zalloc(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_secure_zalloc_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_CRYPTO_secure_free_fn)(void *ptr, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_secure_free_fn *OSSL_FUNC_CRYPTO_secure_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_secure_free_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_CRYPTO_secure_clear_free_fn)(void *ptr, size_t num, const char *file, int line); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_secure_clear_free_fn *OSSL_FUNC_CRYPTO_secure_clear_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_secure_clear_free_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_CRYPTO_secure_allocated_fn)(const void *ptr); static __attribute__((unused)) inline OSSL_FUNC_CRYPTO_secure_allocated_fn *OSSL_FUNC_CRYPTO_secure_allocated(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_CRYPTO_secure_allocated_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_OPENSSL_cleanse_fn)(void *ptr, size_t len); static __attribute__((unused)) inline OSSL_FUNC_OPENSSL_cleanse_fn *OSSL_FUNC_OPENSSL_cleanse(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_OPENSSL_cleanse_fn *)opf->function; } 859623: # 169 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef OSSL_CORE_BIO * (OSSL_FUNC_BIO_new_file_fn)(const char *filename, const char *mode); static __attribute__((unused)) inline OSSL_FUNC_BIO_new_file_fn *OSSL_FUNC_BIO_new_file(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_new_file_fn *)opf->function; } 859623: 859623: typedef OSSL_CORE_BIO * (OSSL_FUNC_BIO_new_membuf_fn)(const void *buf, int len); static __attribute__((unused)) inline OSSL_FUNC_BIO_new_membuf_fn *OSSL_FUNC_BIO_new_membuf(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_new_membuf_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_BIO_read_ex_fn)(OSSL_CORE_BIO *bio, void *data, size_t data_len, size_t *bytes_read); static __attribute__((unused)) inline OSSL_FUNC_BIO_read_ex_fn *OSSL_FUNC_BIO_read_ex(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_read_ex_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_BIO_write_ex_fn)(OSSL_CORE_BIO *bio, const void *data, size_t data_len, size_t *written); static __attribute__((unused)) inline OSSL_FUNC_BIO_write_ex_fn *OSSL_FUNC_BIO_write_ex(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_write_ex_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_BIO_gets_fn)(OSSL_CORE_BIO *bio, char *buf, int size); static __attribute__((unused)) inline OSSL_FUNC_BIO_gets_fn *OSSL_FUNC_BIO_gets(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_gets_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_BIO_puts_fn)(OSSL_CORE_BIO *bio, const char *str); static __attribute__((unused)) inline OSSL_FUNC_BIO_puts_fn *OSSL_FUNC_BIO_puts(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_puts_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_BIO_up_ref_fn)(OSSL_CORE_BIO *bio); static __attribute__((unused)) inline OSSL_FUNC_BIO_up_ref_fn *OSSL_FUNC_BIO_up_ref(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_up_ref_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_BIO_free_fn)(OSSL_CORE_BIO *bio); static __attribute__((unused)) inline OSSL_FUNC_BIO_free_fn *OSSL_FUNC_BIO_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_free_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_BIO_vprintf_fn)(OSSL_CORE_BIO *bio, const char *format, va_list args); static __attribute__((unused)) inline OSSL_FUNC_BIO_vprintf_fn *OSSL_FUNC_BIO_vprintf(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_vprintf_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_BIO_vsnprintf_fn)(char *buf, size_t n, const char *fmt, va_list args); static __attribute__((unused)) inline OSSL_FUNC_BIO_vsnprintf_fn *OSSL_FUNC_BIO_vsnprintf(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_vsnprintf_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_BIO_ctrl_fn)(OSSL_CORE_BIO *bio, int cmd, long num, void *ptr); static __attribute__((unused)) inline OSSL_FUNC_BIO_ctrl_fn *OSSL_FUNC_BIO_ctrl(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_BIO_ctrl_fn *)opf->function; } 859623: # 194 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void (OSSL_FUNC_indicator_cb_fn)(OPENSSL_CORE_CTX *ctx, OSSL_INDICATOR_CALLBACK **cb); static __attribute__((unused)) inline OSSL_FUNC_indicator_cb_fn *OSSL_FUNC_indicator_cb(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_indicator_cb_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_self_test_cb_fn)(OPENSSL_CORE_CTX *ctx, OSSL_CALLBACK **cb, void **cbarg); static __attribute__((unused)) inline OSSL_FUNC_self_test_cb_fn *OSSL_FUNC_self_test_cb(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_self_test_cb_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef size_t (OSSL_FUNC_get_entropy_fn)(const OSSL_CORE_HANDLE *handle, unsigned char **pout, int entropy, size_t min_len, size_t max_len); static __attribute__((unused)) inline OSSL_FUNC_get_entropy_fn *OSSL_FUNC_get_entropy(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_get_entropy_fn *)opf->function; } 859623: 859623: 859623: typedef size_t (OSSL_FUNC_get_user_entropy_fn)(const OSSL_CORE_HANDLE *handle, unsigned char **pout, int entropy, size_t min_len, size_t max_len); static __attribute__((unused)) inline OSSL_FUNC_get_user_entropy_fn *OSSL_FUNC_get_user_entropy(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_get_user_entropy_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_cleanup_entropy_fn)(const OSSL_CORE_HANDLE *handle, unsigned char *buf, size_t len); static __attribute__((unused)) inline OSSL_FUNC_cleanup_entropy_fn *OSSL_FUNC_cleanup_entropy(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cleanup_entropy_fn *)opf->function; } 859623: 859623: typedef void (OSSL_FUNC_cleanup_user_entropy_fn)(const OSSL_CORE_HANDLE *handle, unsigned char *buf, size_t len); static __attribute__((unused)) inline OSSL_FUNC_cleanup_user_entropy_fn *OSSL_FUNC_cleanup_user_entropy(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cleanup_user_entropy_fn *)opf->function; } 859623: 859623: typedef size_t (OSSL_FUNC_get_nonce_fn)(const OSSL_CORE_HANDLE *handle, unsigned char **pout, size_t min_len, size_t max_len, const void *salt, size_t salt_len); static __attribute__((unused)) inline OSSL_FUNC_get_nonce_fn *OSSL_FUNC_get_nonce(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_get_nonce_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef size_t (OSSL_FUNC_get_user_nonce_fn)(const OSSL_CORE_HANDLE *handle, unsigned char **pout, size_t min_len, size_t max_len, const void *salt, size_t salt_len); static __attribute__((unused)) inline OSSL_FUNC_get_user_nonce_fn *OSSL_FUNC_get_user_nonce(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_get_user_nonce_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_cleanup_nonce_fn)(const OSSL_CORE_HANDLE *handle, unsigned char *buf, size_t len); static __attribute__((unused)) inline OSSL_FUNC_cleanup_nonce_fn *OSSL_FUNC_cleanup_nonce(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cleanup_nonce_fn *)opf->function; } 859623: 859623: typedef void (OSSL_FUNC_cleanup_user_nonce_fn)(const OSSL_CORE_HANDLE *handle, unsigned char *buf, size_t len); static __attribute__((unused)) inline OSSL_FUNC_cleanup_user_nonce_fn *OSSL_FUNC_cleanup_user_nonce(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cleanup_user_nonce_fn *)opf->function; } 859623: # 237 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef int (OSSL_FUNC_provider_register_child_cb_fn)(const OSSL_CORE_HANDLE *handle, int (*create_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata), int (*remove_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata), int (*global_props_cb)(const char *props, void *cbdata), void *cbdata); static __attribute__((unused)) inline OSSL_FUNC_provider_register_child_cb_fn *OSSL_FUNC_provider_register_child_cb(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_register_child_cb_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_provider_deregister_child_cb_fn)(const OSSL_CORE_HANDLE *handle); static __attribute__((unused)) inline OSSL_FUNC_provider_deregister_child_cb_fn *OSSL_FUNC_provider_deregister_child_cb(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_deregister_child_cb_fn *)opf->function; } 859623: 859623: typedef const char * (OSSL_FUNC_provider_name_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_provider_name_fn *OSSL_FUNC_provider_name(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_name_fn *)opf->function; } 859623: 859623: typedef void * (OSSL_FUNC_provider_get0_provider_ctx_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_provider_get0_provider_ctx_fn *OSSL_FUNC_provider_get0_provider_ctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_get0_provider_ctx_fn *)opf->function; } 859623: 859623: typedef const OSSL_DISPATCH * (OSSL_FUNC_provider_get0_dispatch_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_provider_get0_dispatch_fn *OSSL_FUNC_provider_get0_dispatch(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_get0_dispatch_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_provider_up_ref_fn)(const OSSL_CORE_HANDLE *prov, int activate); static __attribute__((unused)) inline OSSL_FUNC_provider_up_ref_fn *OSSL_FUNC_provider_up_ref(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_up_ref_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_provider_free_fn)(const OSSL_CORE_HANDLE *prov, int deactivate); static __attribute__((unused)) inline OSSL_FUNC_provider_free_fn *OSSL_FUNC_provider_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_free_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_core_count_to_mark_fn)(const OSSL_CORE_HANDLE *prov); static __attribute__((unused)) inline OSSL_FUNC_core_count_to_mark_fn *OSSL_FUNC_core_count_to_mark(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_core_count_to_mark_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_provider_teardown_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_provider_teardown_fn *OSSL_FUNC_provider_teardown(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_teardown_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_provider_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_provider_gettable_params_fn *OSSL_FUNC_provider_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_gettable_params_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_provider_get_params_fn)(void *provctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_provider_get_params_fn *OSSL_FUNC_provider_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_get_params_fn *)opf->function; } 859623: 859623: 859623: typedef const OSSL_ALGORITHM * (OSSL_FUNC_provider_query_operation_fn)(void *provctx, int operation_id, int *no_store); static __attribute__((unused)) inline OSSL_FUNC_provider_query_operation_fn *OSSL_FUNC_provider_query_operation(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_query_operation_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_provider_unquery_operation_fn)(void *provctx, int operation_id, const OSSL_ALGORITHM *); static __attribute__((unused)) inline OSSL_FUNC_provider_unquery_operation_fn *OSSL_FUNC_provider_unquery_operation(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_unquery_operation_fn *)opf->function; } 859623: 859623: 859623: typedef const OSSL_ITEM * (OSSL_FUNC_provider_get_reason_strings_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_provider_get_reason_strings_fn *OSSL_FUNC_provider_get_reason_strings(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_get_reason_strings_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_provider_get_capabilities_fn)(void *provctx, const char *capability, OSSL_CALLBACK *cb, void *arg); static __attribute__((unused)) inline OSSL_FUNC_provider_get_capabilities_fn *OSSL_FUNC_provider_get_capabilities(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_get_capabilities_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_provider_self_test_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_provider_self_test_fn *OSSL_FUNC_provider_self_test(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_self_test_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_provider_random_bytes_fn)(void *provctx, int which, void *buf, size_t n, unsigned int strength); static __attribute__((unused)) inline OSSL_FUNC_provider_random_bytes_fn *OSSL_FUNC_provider_random_bytes(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_provider_random_bytes_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn)(SSL *s, const unsigned char *buf, size_t buf_len, size_t *consumed, void *arg); static __attribute__((unused)) inline OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn *OSSL_FUNC_SSL_QUIC_TLS_crypto_send(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn)(SSL *s, const unsigned char **buf, size_t *bytes_read, void *arg); static __attribute__((unused)) inline OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn *OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn)(SSL *s, size_t bytes_read, void *arg); static __attribute__((unused)) inline OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn *OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn)(SSL *s, uint32_t prot_level, int direction, const unsigned char *secret, size_t secret_len, void *arg); static __attribute__((unused)) inline OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn *OSSL_FUNC_SSL_QUIC_TLS_yield_secret(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn)(SSL *s, const unsigned char *params, size_t params_len, void *arg); static __attribute__((unused)) inline OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn *OSSL_FUNC_SSL_QUIC_TLS_got_transport_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_SSL_QUIC_TLS_alert_fn)(SSL *s, unsigned char alert_code, void *arg); static __attribute__((unused)) inline OSSL_FUNC_SSL_QUIC_TLS_alert_fn *OSSL_FUNC_SSL_QUIC_TLS_alert(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_SSL_QUIC_TLS_alert_fn *)opf->function; } 859623: # 350 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_digest_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_digest_newctx_fn *OSSL_FUNC_digest_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_newctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_digest_init_fn)(void *dctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_digest_init_fn *OSSL_FUNC_digest_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_init_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_digest_update_fn)(void *dctx, const unsigned char *in, size_t inl); static __attribute__((unused)) inline OSSL_FUNC_digest_update_fn *OSSL_FUNC_digest_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_update_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_digest_final_fn)(void *dctx, unsigned char *out, size_t *outl, size_t outsz); static __attribute__((unused)) inline OSSL_FUNC_digest_final_fn *OSSL_FUNC_digest_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_final_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_digest_squeeze_fn)(void *dctx, unsigned char *out, size_t *outl, size_t outsz); static __attribute__((unused)) inline OSSL_FUNC_digest_squeeze_fn *OSSL_FUNC_digest_squeeze(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_squeeze_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_digest_digest_fn)(void *provctx, const unsigned char *in, size_t inl, unsigned char *out, size_t *outl, size_t outsz); static __attribute__((unused)) inline OSSL_FUNC_digest_digest_fn *OSSL_FUNC_digest_digest(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_digest_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_digest_freectx_fn)(void *dctx); static __attribute__((unused)) inline OSSL_FUNC_digest_freectx_fn *OSSL_FUNC_digest_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_freectx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_digest_dupctx_fn)(void *dctx); static __attribute__((unused)) inline OSSL_FUNC_digest_dupctx_fn *OSSL_FUNC_digest_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_dupctx_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_digest_copyctx_fn)(void *outctx, void *inctx); static __attribute__((unused)) inline OSSL_FUNC_digest_copyctx_fn *OSSL_FUNC_digest_copyctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_copyctx_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_digest_get_params_fn)(OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_digest_get_params_fn *OSSL_FUNC_digest_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_get_params_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_digest_set_ctx_params_fn)(void *vctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_digest_set_ctx_params_fn *OSSL_FUNC_digest_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_digest_get_ctx_params_fn)(void *vctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_digest_get_ctx_params_fn *OSSL_FUNC_digest_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_digest_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_digest_gettable_params_fn *OSSL_FUNC_digest_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_gettable_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_digest_settable_ctx_params_fn)(void *dctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_digest_settable_ctx_params_fn *OSSL_FUNC_digest_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_digest_gettable_ctx_params_fn)(void *dctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_digest_gettable_ctx_params_fn *OSSL_FUNC_digest_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_digest_gettable_ctx_params_fn *)opf->function; } 859623: # 403 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_cipher_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_cipher_newctx_fn *OSSL_FUNC_cipher_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_newctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_cipher_encrypt_init_fn)(void *cctx, const unsigned char *key, size_t keylen, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_encrypt_init_fn *OSSL_FUNC_cipher_encrypt_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_encrypt_init_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_decrypt_init_fn)(void *cctx, const unsigned char *key, size_t keylen, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_decrypt_init_fn *OSSL_FUNC_cipher_decrypt_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_decrypt_init_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_update_fn)(void *cctx, unsigned char *out, size_t *outl, size_t outsize, const unsigned char *in, size_t inl); static __attribute__((unused)) inline OSSL_FUNC_cipher_update_fn *OSSL_FUNC_cipher_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_update_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_final_fn)(void *cctx, unsigned char *out, size_t *outl, size_t outsize); static __attribute__((unused)) inline OSSL_FUNC_cipher_final_fn *OSSL_FUNC_cipher_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_final_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_cipher_fn)(void *cctx, unsigned char *out, size_t *outl, size_t outsize, const unsigned char *in, size_t inl); static __attribute__((unused)) inline OSSL_FUNC_cipher_cipher_fn *OSSL_FUNC_cipher_cipher(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_cipher_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_pipeline_encrypt_init_fn)(void *cctx, const unsigned char *key, size_t keylen, size_t numpipes, const unsigned char **iv, size_t ivlen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_pipeline_encrypt_init_fn *OSSL_FUNC_cipher_pipeline_encrypt_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_pipeline_encrypt_init_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_pipeline_decrypt_init_fn)(void *cctx, const unsigned char *key, size_t keylen, size_t numpipes, const unsigned char **iv, size_t ivlen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_pipeline_decrypt_init_fn *OSSL_FUNC_cipher_pipeline_decrypt_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_pipeline_decrypt_init_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_pipeline_update_fn)(void *cctx, size_t numpipes, unsigned char **out, size_t *outl, const size_t *outsize, const unsigned char **in, const size_t *inl); static __attribute__((unused)) inline OSSL_FUNC_cipher_pipeline_update_fn *OSSL_FUNC_cipher_pipeline_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_pipeline_update_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_pipeline_final_fn)(void *cctx, size_t numpipes, unsigned char **out, size_t *outl, const size_t *outsize); static __attribute__((unused)) inline OSSL_FUNC_cipher_pipeline_final_fn *OSSL_FUNC_cipher_pipeline_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_pipeline_final_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_cipher_freectx_fn)(void *cctx); static __attribute__((unused)) inline OSSL_FUNC_cipher_freectx_fn *OSSL_FUNC_cipher_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_freectx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_cipher_dupctx_fn)(void *cctx); static __attribute__((unused)) inline OSSL_FUNC_cipher_dupctx_fn *OSSL_FUNC_cipher_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_dupctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_cipher_get_params_fn)(OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_get_params_fn *OSSL_FUNC_cipher_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_get_params_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_cipher_get_ctx_params_fn)(void *cctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_get_ctx_params_fn *OSSL_FUNC_cipher_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_cipher_set_ctx_params_fn)(void *cctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_set_ctx_params_fn *OSSL_FUNC_cipher_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_cipher_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_cipher_gettable_params_fn *OSSL_FUNC_cipher_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_gettable_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_cipher_settable_ctx_params_fn)(void *cctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_cipher_settable_ctx_params_fn *OSSL_FUNC_cipher_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_cipher_gettable_ctx_params_fn)(void *cctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_cipher_gettable_ctx_params_fn *OSSL_FUNC_cipher_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_gettable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_cipher_encrypt_skey_init_fn)(void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_encrypt_skey_init_fn *OSSL_FUNC_cipher_encrypt_skey_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_encrypt_skey_init_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_cipher_decrypt_skey_init_fn)(void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_cipher_decrypt_skey_init_fn *OSSL_FUNC_cipher_decrypt_skey_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_cipher_decrypt_skey_init_fn *)opf->function; } 859623: # 484 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_mac_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_mac_newctx_fn *OSSL_FUNC_mac_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_newctx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_mac_dupctx_fn)(void *src); static __attribute__((unused)) inline OSSL_FUNC_mac_dupctx_fn *OSSL_FUNC_mac_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_dupctx_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_mac_freectx_fn)(void *mctx); static __attribute__((unused)) inline OSSL_FUNC_mac_freectx_fn *OSSL_FUNC_mac_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_freectx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_mac_init_fn)(void *mctx, const unsigned char *key, size_t keylen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_mac_init_fn *OSSL_FUNC_mac_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_mac_update_fn)(void *mctx, const unsigned char *in, size_t inl); static __attribute__((unused)) inline OSSL_FUNC_mac_update_fn *OSSL_FUNC_mac_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_update_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_mac_final_fn)(void *mctx, unsigned char *out, size_t *outl, size_t outsize); static __attribute__((unused)) inline OSSL_FUNC_mac_final_fn *OSSL_FUNC_mac_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_final_fn *)opf->function; } 859623: 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_mac_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_mac_gettable_params_fn *OSSL_FUNC_mac_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_gettable_params_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_mac_gettable_ctx_params_fn)(void *mctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_mac_gettable_ctx_params_fn *OSSL_FUNC_mac_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_gettable_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_mac_settable_ctx_params_fn)(void *mctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_mac_settable_ctx_params_fn *OSSL_FUNC_mac_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_mac_get_params_fn)(OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_mac_get_params_fn *OSSL_FUNC_mac_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_get_params_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_mac_get_ctx_params_fn)(void *mctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_mac_get_ctx_params_fn *OSSL_FUNC_mac_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_mac_set_ctx_params_fn)(void *mctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_mac_set_ctx_params_fn *OSSL_FUNC_mac_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_mac_init_skey_fn)(void *mctx, void *key, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_mac_init_skey_fn *OSSL_FUNC_mac_init_skey(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_mac_init_skey_fn *)opf->function; } 859623: # 520 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_kdf_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_kdf_newctx_fn *OSSL_FUNC_kdf_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_newctx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_kdf_dupctx_fn)(void *src); static __attribute__((unused)) inline OSSL_FUNC_kdf_dupctx_fn *OSSL_FUNC_kdf_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_dupctx_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_kdf_freectx_fn)(void *kctx); static __attribute__((unused)) inline OSSL_FUNC_kdf_freectx_fn *OSSL_FUNC_kdf_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_freectx_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_kdf_reset_fn)(void *kctx); static __attribute__((unused)) inline OSSL_FUNC_kdf_reset_fn *OSSL_FUNC_kdf_reset(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_reset_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_kdf_derive_fn)(void *kctx, unsigned char *key, size_t keylen, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kdf_derive_fn *OSSL_FUNC_kdf_derive(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_derive_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_kdf_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_kdf_gettable_params_fn *OSSL_FUNC_kdf_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_gettable_params_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_kdf_gettable_ctx_params_fn)(void *kctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_kdf_gettable_ctx_params_fn *OSSL_FUNC_kdf_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_gettable_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_kdf_settable_ctx_params_fn)(void *kctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_kdf_settable_ctx_params_fn *OSSL_FUNC_kdf_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_kdf_get_params_fn)(OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kdf_get_params_fn *OSSL_FUNC_kdf_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_get_params_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_kdf_get_ctx_params_fn)(void *kctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kdf_get_ctx_params_fn *OSSL_FUNC_kdf_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_kdf_set_ctx_params_fn)(void *kctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kdf_set_ctx_params_fn *OSSL_FUNC_kdf_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kdf_set_ctx_params_fn *)opf->function; } 859623: # 559 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_rand_newctx_fn)(void *provctx, void *parent, const OSSL_DISPATCH *parent_calls); static __attribute__((unused)) inline OSSL_FUNC_rand_newctx_fn *OSSL_FUNC_rand_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_newctx_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_rand_freectx_fn)(void *vctx); static __attribute__((unused)) inline OSSL_FUNC_rand_freectx_fn *OSSL_FUNC_rand_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_freectx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_rand_instantiate_fn)(void *vdrbg, unsigned int strength, int prediction_resistance, const unsigned char *pstr, size_t pstr_len, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_rand_instantiate_fn *OSSL_FUNC_rand_instantiate(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_instantiate_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_rand_uninstantiate_fn)(void *vdrbg); static __attribute__((unused)) inline OSSL_FUNC_rand_uninstantiate_fn *OSSL_FUNC_rand_uninstantiate(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_uninstantiate_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_rand_generate_fn)(void *vctx, unsigned char *out, size_t outlen, unsigned int strength, int prediction_resistance, const unsigned char *addin, size_t addin_len); static __attribute__((unused)) inline OSSL_FUNC_rand_generate_fn *OSSL_FUNC_rand_generate(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_generate_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_rand_reseed_fn)(void *vctx, int prediction_resistance, const unsigned char *ent, size_t ent_len, const unsigned char *addin, size_t addin_len); static __attribute__((unused)) inline OSSL_FUNC_rand_reseed_fn *OSSL_FUNC_rand_reseed(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_reseed_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef size_t (OSSL_FUNC_rand_nonce_fn)(void *vctx, unsigned char *out, unsigned int strength, size_t min_noncelen, size_t max_noncelen); static __attribute__((unused)) inline OSSL_FUNC_rand_nonce_fn *OSSL_FUNC_rand_nonce(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_nonce_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_rand_enable_locking_fn)(void *vctx); static __attribute__((unused)) inline OSSL_FUNC_rand_enable_locking_fn *OSSL_FUNC_rand_enable_locking(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_enable_locking_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_rand_lock_fn)(void *vctx); static __attribute__((unused)) inline OSSL_FUNC_rand_lock_fn *OSSL_FUNC_rand_lock(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_lock_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_rand_unlock_fn)(void *vctx); static __attribute__((unused)) inline OSSL_FUNC_rand_unlock_fn *OSSL_FUNC_rand_unlock(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_unlock_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_rand_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_rand_gettable_params_fn *OSSL_FUNC_rand_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_gettable_params_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_rand_gettable_ctx_params_fn)(void *vctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_rand_gettable_ctx_params_fn *OSSL_FUNC_rand_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_gettable_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_rand_settable_ctx_params_fn)(void *vctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_rand_settable_ctx_params_fn *OSSL_FUNC_rand_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_rand_get_params_fn)(OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_rand_get_params_fn *OSSL_FUNC_rand_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_get_params_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_rand_get_ctx_params_fn)(void *vctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_rand_get_ctx_params_fn *OSSL_FUNC_rand_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_rand_set_ctx_params_fn)(void *vctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_rand_set_ctx_params_fn *OSSL_FUNC_rand_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef void (OSSL_FUNC_rand_set_callbacks_fn)(void *vctx, OSSL_INOUT_CALLBACK *get_entropy, OSSL_CALLBACK *cleanup_entropy, OSSL_INOUT_CALLBACK *get_nonce, OSSL_CALLBACK *cleanup_nonce, void *arg); static __attribute__((unused)) inline OSSL_FUNC_rand_set_callbacks_fn *OSSL_FUNC_rand_set_callbacks(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_set_callbacks_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_rand_verify_zeroization_fn)(void *vctx); static __attribute__((unused)) inline OSSL_FUNC_rand_verify_zeroization_fn *OSSL_FUNC_rand_verify_zeroization(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_verify_zeroization_fn *)opf->function; } 859623: 859623: typedef size_t (OSSL_FUNC_rand_get_seed_fn)(void *vctx, unsigned char **buffer, int entropy, size_t min_len, size_t max_len, int prediction_resistance, const unsigned char *adin, size_t adin_len); static __attribute__((unused)) inline OSSL_FUNC_rand_get_seed_fn *OSSL_FUNC_rand_get_seed(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_get_seed_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_rand_clear_seed_fn)(void *vctx, unsigned char *buffer, size_t b_len); static __attribute__((unused)) inline OSSL_FUNC_rand_clear_seed_fn *OSSL_FUNC_rand_clear_seed(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_rand_clear_seed_fn *)opf->function; } 859623: # 663 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_keymgmt_new_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_new_fn *OSSL_FUNC_keymgmt_new(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_new_fn *)opf->function; } 859623: # 675 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_keymgmt_gen_init_fn)(void *provctx, int selection, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_init_fn *OSSL_FUNC_keymgmt_gen_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_keymgmt_gen_set_template_fn)(void *genctx, void *templ); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_set_template_fn *OSSL_FUNC_keymgmt_gen_set_template(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_set_template_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_keymgmt_gen_set_params_fn)(void *genctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_set_params_fn *OSSL_FUNC_keymgmt_gen_set_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_set_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_gen_settable_params_fn)(void *genctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_settable_params_fn *OSSL_FUNC_keymgmt_gen_settable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_settable_params_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_keymgmt_gen_get_params_fn)(void *genctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_get_params_fn *OSSL_FUNC_keymgmt_gen_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_get_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_gen_gettable_params_fn)(void *genctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_gettable_params_fn *OSSL_FUNC_keymgmt_gen_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_gettable_params_fn *)opf->function; } 859623: 859623: typedef void * (OSSL_FUNC_keymgmt_gen_fn)(void *genctx, OSSL_CALLBACK *cb, void *cbarg); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_fn *OSSL_FUNC_keymgmt_gen(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_fn *)opf->function; } 859623: 859623: typedef void (OSSL_FUNC_keymgmt_gen_cleanup_fn)(void *genctx); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gen_cleanup_fn *OSSL_FUNC_keymgmt_gen_cleanup(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gen_cleanup_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef void * (OSSL_FUNC_keymgmt_load_fn)(const void *reference, size_t reference_sz); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_load_fn *OSSL_FUNC_keymgmt_load(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_load_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_keymgmt_free_fn)(void *keydata); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_free_fn *OSSL_FUNC_keymgmt_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_free_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_keymgmt_get_params_fn)(void *keydata, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_get_params_fn *OSSL_FUNC_keymgmt_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_get_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_gettable_params_fn *OSSL_FUNC_keymgmt_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_gettable_params_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_keymgmt_set_params_fn)(void *keydata, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_set_params_fn *OSSL_FUNC_keymgmt_set_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_set_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_settable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_settable_params_fn *OSSL_FUNC_keymgmt_settable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_settable_params_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef const char * (OSSL_FUNC_keymgmt_query_operation_name_fn)(int operation_id); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_query_operation_name_fn *OSSL_FUNC_keymgmt_query_operation_name(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_query_operation_name_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_keymgmt_has_fn)(const void *keydata, int selection); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_has_fn *OSSL_FUNC_keymgmt_has(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_has_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_keymgmt_validate_fn)(const void *keydata, int selection, int checktype); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_validate_fn *OSSL_FUNC_keymgmt_validate(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_validate_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_keymgmt_match_fn)(const void *keydata1, const void *keydata2, int selection); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_match_fn *OSSL_FUNC_keymgmt_match(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_match_fn *)opf->function; } 859623: # 741 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef int (OSSL_FUNC_keymgmt_import_fn)(void *keydata, int selection, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_import_fn *OSSL_FUNC_keymgmt_import(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_import_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_import_types_fn)(int selection); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_import_types_fn *OSSL_FUNC_keymgmt_import_types(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_import_types_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_keymgmt_export_fn)(void *keydata, int selection, OSSL_CALLBACK *param_cb, void *cbarg); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_export_fn *OSSL_FUNC_keymgmt_export(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_export_fn *)opf->function; } 859623: 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_export_types_fn)(int selection); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_export_types_fn *OSSL_FUNC_keymgmt_export_types(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_export_types_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef void * (OSSL_FUNC_keymgmt_dup_fn)(const void *keydata_from, int selection); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_dup_fn *OSSL_FUNC_keymgmt_dup(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_dup_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_import_types_ex_fn)(void *provctx, int selection); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_import_types_ex_fn *OSSL_FUNC_keymgmt_import_types_ex(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_import_types_ex_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keymgmt_export_types_ex_fn)(void *provctx, int selection); static __attribute__((unused)) inline OSSL_FUNC_keymgmt_export_types_ex_fn *OSSL_FUNC_keymgmt_export_types_ex(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keymgmt_export_types_ex_fn *)opf->function; } 859623: # 777 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_keyexch_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keyexch_newctx_fn *OSSL_FUNC_keyexch_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_newctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_keyexch_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keyexch_init_fn *OSSL_FUNC_keyexch_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_keyexch_derive_fn)(void *ctx, unsigned char *secret, size_t *secretlen, size_t outlen); static __attribute__((unused)) inline OSSL_FUNC_keyexch_derive_fn *OSSL_FUNC_keyexch_derive(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_derive_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_keyexch_set_peer_fn)(void *ctx, void *provkey); static __attribute__((unused)) inline OSSL_FUNC_keyexch_set_peer_fn *OSSL_FUNC_keyexch_set_peer(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_set_peer_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_keyexch_freectx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_keyexch_freectx_fn *OSSL_FUNC_keyexch_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_freectx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_keyexch_dupctx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_keyexch_dupctx_fn *OSSL_FUNC_keyexch_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_dupctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_keyexch_set_ctx_params_fn)(void *ctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keyexch_set_ctx_params_fn *OSSL_FUNC_keyexch_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keyexch_settable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keyexch_settable_ctx_params_fn *OSSL_FUNC_keyexch_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_keyexch_get_ctx_params_fn)(void *ctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_keyexch_get_ctx_params_fn *OSSL_FUNC_keyexch_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_keyexch_gettable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_keyexch_gettable_ctx_params_fn *OSSL_FUNC_keyexch_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_keyexch_gettable_ctx_params_fn *)opf->function; } 859623: # 829 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_signature_newctx_fn)(void *provctx, const char *propq); static __attribute__((unused)) inline OSSL_FUNC_signature_newctx_fn *OSSL_FUNC_signature_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_newctx_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_sign_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_sign_init_fn *OSSL_FUNC_signature_sign_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_sign_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_sign_fn)(void *ctx, unsigned char *sig, size_t *siglen, size_t sigsize, const unsigned char *tbs, size_t tbslen); static __attribute__((unused)) inline OSSL_FUNC_signature_sign_fn *OSSL_FUNC_signature_sign(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_sign_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_sign_message_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_sign_message_init_fn *OSSL_FUNC_signature_sign_message_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_sign_message_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_sign_message_update_fn)(void *ctx, const unsigned char *in, size_t inlen); static __attribute__((unused)) inline OSSL_FUNC_signature_sign_message_update_fn *OSSL_FUNC_signature_sign_message_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_sign_message_update_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_sign_message_final_fn)(void *ctx, unsigned char *sig, size_t *siglen, size_t sigsize); static __attribute__((unused)) inline OSSL_FUNC_signature_sign_message_final_fn *OSSL_FUNC_signature_sign_message_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_sign_message_final_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_verify_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_verify_init_fn *OSSL_FUNC_signature_verify_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_verify_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_verify_fn)(void *ctx, const unsigned char *sig, size_t siglen, const unsigned char *tbs, size_t tbslen); static __attribute__((unused)) inline OSSL_FUNC_signature_verify_fn *OSSL_FUNC_signature_verify(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_verify_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_verify_message_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_verify_message_init_fn *OSSL_FUNC_signature_verify_message_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_verify_message_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_verify_message_update_fn)(void *ctx, const unsigned char *in, size_t inlen); static __attribute__((unused)) inline OSSL_FUNC_signature_verify_message_update_fn *OSSL_FUNC_signature_verify_message_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_verify_message_update_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_verify_message_final_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_signature_verify_message_final_fn *OSSL_FUNC_signature_verify_message_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_verify_message_final_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_signature_verify_recover_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_verify_recover_init_fn *OSSL_FUNC_signature_verify_recover_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_verify_recover_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_verify_recover_fn)(void *ctx, unsigned char *rout, size_t *routlen, size_t routsize, const unsigned char *sig, size_t siglen); static __attribute__((unused)) inline OSSL_FUNC_signature_verify_recover_fn *OSSL_FUNC_signature_verify_recover(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_verify_recover_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_digest_sign_init_fn)(void *ctx, const char *mdname, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_sign_init_fn *OSSL_FUNC_signature_digest_sign_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_sign_init_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_digest_sign_update_fn)(void *ctx, const unsigned char *data, size_t datalen); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_sign_update_fn *OSSL_FUNC_signature_digest_sign_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_sign_update_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_digest_sign_final_fn)(void *ctx, unsigned char *sig, size_t *siglen, size_t sigsize); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_sign_final_fn *OSSL_FUNC_signature_digest_sign_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_sign_final_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_digest_sign_fn)(void *ctx, unsigned char *sigret, size_t *siglen, size_t sigsize, const unsigned char *tbs, size_t tbslen); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_sign_fn *OSSL_FUNC_signature_digest_sign(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_sign_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_digest_verify_init_fn)(void *ctx, const char *mdname, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_verify_init_fn *OSSL_FUNC_signature_digest_verify_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_verify_init_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_signature_digest_verify_update_fn)(void *ctx, const unsigned char *data, size_t datalen); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_verify_update_fn *OSSL_FUNC_signature_digest_verify_update(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_verify_update_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_digest_verify_final_fn)(void *ctx, const unsigned char *sig, size_t siglen); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_verify_final_fn *OSSL_FUNC_signature_digest_verify_final(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_verify_final_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_digest_verify_fn)(void *ctx, const unsigned char *sig, size_t siglen, const unsigned char *tbs, size_t tbslen); static __attribute__((unused)) inline OSSL_FUNC_signature_digest_verify_fn *OSSL_FUNC_signature_digest_verify(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_digest_verify_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_signature_freectx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_signature_freectx_fn *OSSL_FUNC_signature_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_freectx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_signature_dupctx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_signature_dupctx_fn *OSSL_FUNC_signature_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_dupctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_signature_get_ctx_params_fn)(void *ctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_get_ctx_params_fn *OSSL_FUNC_signature_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_signature_gettable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_signature_gettable_ctx_params_fn *OSSL_FUNC_signature_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_gettable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_set_ctx_params_fn)(void *ctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_set_ctx_params_fn *OSSL_FUNC_signature_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_signature_settable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_signature_settable_ctx_params_fn *OSSL_FUNC_signature_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_get_ctx_md_params_fn)(void *ctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_get_ctx_md_params_fn *OSSL_FUNC_signature_get_ctx_md_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_get_ctx_md_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_signature_gettable_ctx_md_params_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_signature_gettable_ctx_md_params_fn *OSSL_FUNC_signature_gettable_ctx_md_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_gettable_ctx_md_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_signature_set_ctx_md_params_fn)(void *ctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_signature_set_ctx_md_params_fn *OSSL_FUNC_signature_set_ctx_md_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_set_ctx_md_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_signature_settable_ctx_md_params_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_signature_settable_ctx_md_params_fn *OSSL_FUNC_signature_settable_ctx_md_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_settable_ctx_md_params_fn *)opf->function; } 859623: 859623: typedef const char ** (OSSL_FUNC_signature_query_key_types_fn)(void); static __attribute__((unused)) inline OSSL_FUNC_signature_query_key_types_fn *OSSL_FUNC_signature_query_key_types(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_signature_query_key_types_fn *)opf->function; } 859623: # 938 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void (OSSL_FUNC_skeymgmt_free_fn)(void *keydata); static __attribute__((unused)) inline OSSL_FUNC_skeymgmt_free_fn *OSSL_FUNC_skeymgmt_free(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_skeymgmt_free_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_skeymgmt_imp_settable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_skeymgmt_imp_settable_params_fn *OSSL_FUNC_skeymgmt_imp_settable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_skeymgmt_imp_settable_params_fn *)opf->function; } 859623: 859623: typedef void * (OSSL_FUNC_skeymgmt_import_fn)(void *provctx, int selection, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_skeymgmt_import_fn *OSSL_FUNC_skeymgmt_import(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_skeymgmt_import_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_skeymgmt_export_fn)(void *keydata, int selection, OSSL_CALLBACK *param_cb, void *cbarg); static __attribute__((unused)) inline OSSL_FUNC_skeymgmt_export_fn *OSSL_FUNC_skeymgmt_export(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_skeymgmt_export_fn *)opf->function; } 859623: 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_skeymgmt_gen_settable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_skeymgmt_gen_settable_params_fn *OSSL_FUNC_skeymgmt_gen_settable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_skeymgmt_gen_settable_params_fn *)opf->function; } 859623: 859623: typedef void * (OSSL_FUNC_skeymgmt_generate_fn)(void *provctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_skeymgmt_generate_fn *OSSL_FUNC_skeymgmt_generate(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_skeymgmt_generate_fn *)opf->function; } 859623: 859623: typedef const char * (OSSL_FUNC_skeymgmt_get_key_id_fn)(void *keydata); static __attribute__((unused)) inline OSSL_FUNC_skeymgmt_get_key_id_fn *OSSL_FUNC_skeymgmt_get_key_id(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_skeymgmt_get_key_id_fn *)opf->function; } 859623: # 966 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_asym_cipher_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_newctx_fn *OSSL_FUNC_asym_cipher_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_newctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_asym_cipher_encrypt_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_encrypt_init_fn *OSSL_FUNC_asym_cipher_encrypt_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_encrypt_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_asym_cipher_encrypt_fn)(void *ctx, unsigned char *out, size_t *outlen, size_t outsize, const unsigned char *in, size_t inlen); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_encrypt_fn *OSSL_FUNC_asym_cipher_encrypt(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_encrypt_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_asym_cipher_decrypt_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_decrypt_init_fn *OSSL_FUNC_asym_cipher_decrypt_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_decrypt_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_asym_cipher_decrypt_fn)(void *ctx, unsigned char *out, size_t *outlen, size_t outsize, const unsigned char *in, size_t inlen); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_decrypt_fn *OSSL_FUNC_asym_cipher_decrypt(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_decrypt_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: typedef void (OSSL_FUNC_asym_cipher_freectx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_freectx_fn *OSSL_FUNC_asym_cipher_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_freectx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_asym_cipher_dupctx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_dupctx_fn *OSSL_FUNC_asym_cipher_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_dupctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_asym_cipher_get_ctx_params_fn)(void *ctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_get_ctx_params_fn *OSSL_FUNC_asym_cipher_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_get_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_asym_cipher_gettable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_gettable_ctx_params_fn *OSSL_FUNC_asym_cipher_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_gettable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_asym_cipher_set_ctx_params_fn)(void *ctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_set_ctx_params_fn *OSSL_FUNC_asym_cipher_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_asym_cipher_settable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_asym_cipher_settable_ctx_params_fn *OSSL_FUNC_asym_cipher_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_asym_cipher_settable_ctx_params_fn *)opf->function; } 859623: # 1007 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_kem_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_kem_newctx_fn *OSSL_FUNC_kem_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_newctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_kem_encapsulate_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kem_encapsulate_init_fn *OSSL_FUNC_kem_encapsulate_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_encapsulate_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_kem_auth_encapsulate_init_fn)(void *ctx, void *provkey, void *authprivkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kem_auth_encapsulate_init_fn *OSSL_FUNC_kem_auth_encapsulate_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_auth_encapsulate_init_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_kem_encapsulate_fn)(void *ctx, unsigned char *out, size_t *outlen, unsigned char *secret, size_t *secretlen); static __attribute__((unused)) inline OSSL_FUNC_kem_encapsulate_fn *OSSL_FUNC_kem_encapsulate(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_encapsulate_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_kem_decapsulate_init_fn)(void *ctx, void *provkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kem_decapsulate_init_fn *OSSL_FUNC_kem_decapsulate_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_decapsulate_init_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_kem_auth_decapsulate_init_fn)(void *ctx, void *provkey, void *authpubkey, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kem_auth_decapsulate_init_fn *OSSL_FUNC_kem_auth_decapsulate_init(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_auth_decapsulate_init_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_kem_decapsulate_fn)(void *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen); static __attribute__((unused)) inline OSSL_FUNC_kem_decapsulate_fn *OSSL_FUNC_kem_decapsulate(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_decapsulate_fn *)opf->function; } 859623: 859623: 859623: typedef void (OSSL_FUNC_kem_freectx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_kem_freectx_fn *OSSL_FUNC_kem_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_freectx_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_kem_dupctx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_kem_dupctx_fn *OSSL_FUNC_kem_dupctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_dupctx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_kem_get_ctx_params_fn)(void *ctx, OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kem_get_ctx_params_fn *OSSL_FUNC_kem_get_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_get_ctx_params_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_kem_gettable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_kem_gettable_ctx_params_fn *OSSL_FUNC_kem_gettable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_gettable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_kem_set_ctx_params_fn)(void *ctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_kem_set_ctx_params_fn *OSSL_FUNC_kem_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_kem_settable_ctx_params_fn)(void *ctx, void *provctx); static __attribute__((unused)) inline OSSL_FUNC_kem_settable_ctx_params_fn *OSSL_FUNC_kem_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_kem_settable_ctx_params_fn *)opf->function; } 859623: # 1046 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_encoder_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_encoder_newctx_fn *OSSL_FUNC_encoder_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_newctx_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_encoder_freectx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_encoder_freectx_fn *OSSL_FUNC_encoder_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_freectx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_encoder_get_params_fn)(OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_encoder_get_params_fn *OSSL_FUNC_encoder_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_get_params_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_encoder_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_encoder_gettable_params_fn *OSSL_FUNC_encoder_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_gettable_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_encoder_set_ctx_params_fn)(void *ctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_encoder_set_ctx_params_fn *OSSL_FUNC_encoder_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_encoder_settable_ctx_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_encoder_settable_ctx_params_fn *OSSL_FUNC_encoder_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_settable_ctx_params_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_encoder_does_selection_fn)(void *provctx, int selection); static __attribute__((unused)) inline OSSL_FUNC_encoder_does_selection_fn *OSSL_FUNC_encoder_does_selection(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_does_selection_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_encoder_encode_fn)(void *ctx, OSSL_CORE_BIO *out, const void *obj_raw, const OSSL_PARAM obj_abstract[], int selection, OSSL_PASSPHRASE_CALLBACK *cb, void *cbarg); static __attribute__((unused)) inline OSSL_FUNC_encoder_encode_fn *OSSL_FUNC_encoder_encode(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_encode_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: 859623: typedef void * (OSSL_FUNC_encoder_import_object_fn)(void *ctx, int selection, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_encoder_import_object_fn *OSSL_FUNC_encoder_import_object(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_import_object_fn *)opf->function; } 859623: 859623: typedef void (OSSL_FUNC_encoder_free_object_fn)(void *obj); static __attribute__((unused)) inline OSSL_FUNC_encoder_free_object_fn *OSSL_FUNC_encoder_free_object(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_encoder_free_object_fn *)opf->function; } 859623: # 1077 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_decoder_newctx_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_decoder_newctx_fn *OSSL_FUNC_decoder_newctx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_newctx_fn *)opf->function; } 859623: typedef void (OSSL_FUNC_decoder_freectx_fn)(void *ctx); static __attribute__((unused)) inline OSSL_FUNC_decoder_freectx_fn *OSSL_FUNC_decoder_freectx(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_freectx_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_decoder_get_params_fn)(OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_decoder_get_params_fn *OSSL_FUNC_decoder_get_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_get_params_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_decoder_gettable_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_decoder_gettable_params_fn *OSSL_FUNC_decoder_gettable_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_gettable_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_decoder_set_ctx_params_fn)(void *ctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_decoder_set_ctx_params_fn *OSSL_FUNC_decoder_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef const OSSL_PARAM * (OSSL_FUNC_decoder_settable_ctx_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_decoder_settable_ctx_params_fn *OSSL_FUNC_decoder_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_settable_ctx_params_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_decoder_does_selection_fn)(void *provctx, int selection); static __attribute__((unused)) inline OSSL_FUNC_decoder_does_selection_fn *OSSL_FUNC_decoder_does_selection(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_does_selection_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_decoder_decode_fn)(void *ctx, OSSL_CORE_BIO *in, int selection, OSSL_CALLBACK *data_cb, void *data_cbarg, OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg); static __attribute__((unused)) inline OSSL_FUNC_decoder_decode_fn *OSSL_FUNC_decoder_decode(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_decode_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_decoder_export_object_fn)(void *ctx, const void *objref, size_t objref_sz, OSSL_CALLBACK *export_cb, void *export_cbarg); static __attribute__((unused)) inline OSSL_FUNC_decoder_export_object_fn *OSSL_FUNC_decoder_export_object(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_decoder_export_object_fn *)opf->function; } 859623: # 1119 "/usr/include/openssl/core_dispatch.h" 3 4 859623: typedef void * (OSSL_FUNC_store_open_fn)(void *provctx, const char *uri); static __attribute__((unused)) inline OSSL_FUNC_store_open_fn *OSSL_FUNC_store_open(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_open_fn *)opf->function; } 859623: typedef void * (OSSL_FUNC_store_attach_fn)(void *provctx, OSSL_CORE_BIO *in); static __attribute__((unused)) inline OSSL_FUNC_store_attach_fn *OSSL_FUNC_store_attach(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_attach_fn *)opf->function; } 859623: typedef const OSSL_PARAM * (OSSL_FUNC_store_settable_ctx_params_fn)(void *provctx); static __attribute__((unused)) inline OSSL_FUNC_store_settable_ctx_params_fn *OSSL_FUNC_store_settable_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_settable_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_store_set_ctx_params_fn)(void *loaderctx, const OSSL_PARAM params[]); static __attribute__((unused)) inline OSSL_FUNC_store_set_ctx_params_fn *OSSL_FUNC_store_set_ctx_params(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_set_ctx_params_fn *)opf->function; } 859623: 859623: typedef int (OSSL_FUNC_store_load_fn)(void *loaderctx, OSSL_CALLBACK *object_cb, void *object_cbarg, OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg); static __attribute__((unused)) inline OSSL_FUNC_store_load_fn *OSSL_FUNC_store_load(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_load_fn *)opf->function; } 859623: 859623: 859623: 859623: typedef int (OSSL_FUNC_store_eof_fn)(void *loaderctx); static __attribute__((unused)) inline OSSL_FUNC_store_eof_fn *OSSL_FUNC_store_eof(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_eof_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_store_close_fn)(void *loaderctx); static __attribute__((unused)) inline OSSL_FUNC_store_close_fn *OSSL_FUNC_store_close(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_close_fn *)opf->function; } 859623: typedef int (OSSL_FUNC_store_export_object_fn)(void *loaderctx, const void *objref, size_t objref_sz, OSSL_CALLBACK *export_cb, void *export_cbarg); static __attribute__((unused)) inline OSSL_FUNC_store_export_object_fn *OSSL_FUNC_store_export_object(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_export_object_fn *)opf->function; } 859623: 859623: 859623: typedef int (OSSL_FUNC_store_delete_fn)(void *provctx, const char *uri, const OSSL_PARAM params[], OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg); static __attribute__((unused)) inline OSSL_FUNC_store_delete_fn *OSSL_FUNC_store_delete(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_delete_fn *)opf->function; } 859623: 859623: 859623: typedef void * (OSSL_FUNC_store_open_ex_fn)(void *provctx, const char *uri, const OSSL_PARAM params[], OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg); static __attribute__((unused)) inline OSSL_FUNC_store_open_ex_fn *OSSL_FUNC_store_open_ex(const OSSL_DISPATCH *opf) { return (OSSL_FUNC_store_open_ex_fn *)opf->function; } 859623: 859623: 859623: 859623: 859623: } 859623: # 29 "/usr/include/openssl/evp.h" 2 3 4 859623: 859623: 859623: # 1 "/usr/include/openssl/evperr.h" 1 3 4 859623: # 13 "/usr/include/openssl/evperr.h" 3 4 859623: 859623: # 32 "/usr/include/openssl/evp.h" 2 3 4 859623: # 47 "/usr/include/openssl/evp.h" 3 4 859623: # 1 "/usr/include/openssl/objects.h" 1 3 4 859623: # 12 "/usr/include/openssl/objects.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/obj_mac.h" 1 3 4 859623: # 14 "/usr/include/openssl/obj_mac.h" 3 4 859623: 859623: # 20 "/usr/include/openssl/objects.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/asn1.h" 1 3 4 859623: # 17 "/usr/include/openssl/asn1.h" 3 4 859623: 859623: # 32 "/usr/include/openssl/asn1.h" 3 4 859623: # 1 "/usr/include/openssl/asn1err.h" 1 3 4 859623: # 13 "/usr/include/openssl/asn1err.h" 3 4 859623: 859623: # 33 "/usr/include/openssl/asn1.h" 2 3 4 859623: 859623: 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 36 "/usr/include/openssl/asn1.h" 2 3 4 859623: # 44 "/usr/include/openssl/asn1.h" 3 4 859623: extern "C" { 859623: # 132 "/usr/include/openssl/asn1.h" 3 4 859623: struct stack_st_X509_ALGOR; typedef int (*sk_X509_ALGOR_compfunc)(const X509_ALGOR * const *a, const X509_ALGOR *const *b); typedef void (*sk_X509_ALGOR_freefunc)(X509_ALGOR *a); typedef X509_ALGOR * (*sk_X509_ALGOR_copyfunc)(const X509_ALGOR *a); static __attribute__((unused)) inline X509_ALGOR *ossl_check_X509_ALGOR_type(X509_ALGOR *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_ALGOR_sk_type(const struct stack_st_X509_ALGOR *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_ALGOR_sk_type(struct stack_st_X509_ALGOR *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_ALGOR_compfunc_type(sk_X509_ALGOR_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_ALGOR_copyfunc_type(sk_X509_ALGOR_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_ALGOR_freefunc_type(sk_X509_ALGOR_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 186 "/usr/include/openssl/asn1.h" 3 4 859623: struct asn1_string_st { 859623: int length; 859623: int type; 859623: unsigned char *data; 859623: 859623: 859623: 859623: 859623: 859623: long flags; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef struct ASN1_ENCODING_st { 859623: unsigned char *enc; 859623: long len; 859623: int modified; 859623: } ASN1_ENCODING; 859623: # 226 "/usr/include/openssl/asn1.h" 3 4 859623: struct asn1_string_table_st { 859623: int nid; 859623: long minsize; 859623: long maxsize; 859623: unsigned long mask; 859623: unsigned long flags; 859623: }; 859623: 859623: struct stack_st_ASN1_STRING_TABLE; typedef int (*sk_ASN1_STRING_TABLE_compfunc)(const ASN1_STRING_TABLE * const *a, const ASN1_STRING_TABLE *const *b); typedef void (*sk_ASN1_STRING_TABLE_freefunc)(ASN1_STRING_TABLE *a); typedef ASN1_STRING_TABLE * (*sk_ASN1_STRING_TABLE_copyfunc)(const ASN1_STRING_TABLE *a); static __attribute__((unused)) inline ASN1_STRING_TABLE *ossl_check_ASN1_STRING_TABLE_type(ASN1_STRING_TABLE *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_ASN1_STRING_TABLE_sk_type(const struct stack_st_ASN1_STRING_TABLE *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_ASN1_STRING_TABLE_sk_type(struct stack_st_ASN1_STRING_TABLE *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_ASN1_STRING_TABLE_compfunc_type(sk_ASN1_STRING_TABLE_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_ASN1_STRING_TABLE_copyfunc_type(sk_ASN1_STRING_TABLE_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_ASN1_STRING_TABLE_freefunc_type(sk_ASN1_STRING_TABLE_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 276 "/usr/include/openssl/asn1.h" 3 4 859623: typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; 859623: typedef struct ASN1_TLC_st ASN1_TLC; 859623: 859623: typedef struct ASN1_VALUE_st ASN1_VALUE; 859623: # 372 "/usr/include/openssl/asn1.h" 3 4 859623: typedef void *d2i_of_void(void **, const unsigned char **, long); 859623: typedef int i2d_of_void(const void *, unsigned char **); 859623: typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); 859623: # 419 "/usr/include/openssl/asn1.h" 3 4 859623: typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); 859623: # 524 "/usr/include/openssl/asn1.h" 3 4 859623: struct asn1_type_st { 859623: int type; 859623: union { 859623: char *ptr; 859623: ASN1_BOOLEAN boolean; 859623: ASN1_STRING *asn1_string; 859623: ASN1_OBJECT *object; 859623: ASN1_INTEGER *integer; 859623: ASN1_ENUMERATED *enumerated; 859623: ASN1_BIT_STRING *bit_string; 859623: ASN1_OCTET_STRING *octet_string; 859623: ASN1_PRINTABLESTRING *printablestring; 859623: ASN1_T61STRING *t61string; 859623: ASN1_IA5STRING *ia5string; 859623: ASN1_GENERALSTRING *generalstring; 859623: ASN1_BMPSTRING *bmpstring; 859623: ASN1_UNIVERSALSTRING *universalstring; 859623: ASN1_UTCTIME *utctime; 859623: ASN1_GENERALIZEDTIME *generalizedtime; 859623: ASN1_VISIBLESTRING *visiblestring; 859623: ASN1_UTF8STRING *utf8string; 859623: 859623: 859623: 859623: 859623: ASN1_STRING *set; 859623: ASN1_STRING *sequence; 859623: ASN1_VALUE *asn1_value; 859623: } value; 859623: }; 859623: 859623: struct stack_st_ASN1_TYPE; typedef int (*sk_ASN1_TYPE_compfunc)(const ASN1_TYPE * const *a, const ASN1_TYPE *const *b); typedef void (*sk_ASN1_TYPE_freefunc)(ASN1_TYPE *a); typedef ASN1_TYPE * (*sk_ASN1_TYPE_copyfunc)(const ASN1_TYPE *a); static __attribute__((unused)) inline ASN1_TYPE *ossl_check_ASN1_TYPE_type(ASN1_TYPE *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_ASN1_TYPE_sk_type(const struct stack_st_ASN1_TYPE *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_ASN1_TYPE_sk_type(struct stack_st_ASN1_TYPE *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_ASN1_TYPE_compfunc_type(sk_ASN1_TYPE_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_ASN1_TYPE_copyfunc_type(sk_ASN1_TYPE_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_ASN1_TYPE_freefunc_type(sk_ASN1_TYPE_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 583 "/usr/include/openssl/asn1.h" 3 4 859623: typedef struct stack_st_ASN1_TYPE ASN1_SEQUENCE_ANY; 859623: 859623: extern ASN1_SEQUENCE_ANY *d2i_ASN1_SEQUENCE_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len); extern int i2d_ASN1_SEQUENCE_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out); extern const ASN1_ITEM * ASN1_SEQUENCE_ANY_it(void); 859623: extern ASN1_SEQUENCE_ANY *d2i_ASN1_SET_ANY(ASN1_SEQUENCE_ANY **a, const unsigned char **in, long len); extern int i2d_ASN1_SET_ANY(const ASN1_SEQUENCE_ANY *a, unsigned char **out); extern const ASN1_ITEM * ASN1_SET_ANY_it(void); 859623: 859623: 859623: typedef struct BIT_STRING_BITNAME_st { 859623: int bitnum; 859623: const char *lname; 859623: const char *sname; 859623: } BIT_STRING_BITNAME; 859623: # 624 "/usr/include/openssl/asn1.h" 3 4 859623: extern ASN1_TYPE *ASN1_TYPE_new(void); extern void ASN1_TYPE_free(ASN1_TYPE *a); 859623: extern ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **a, const unsigned char **in, long len); extern int i2d_ASN1_TYPE(const ASN1_TYPE *a, unsigned char **out); extern const ASN1_ITEM * ASN1_ANY_it(void); 859623: 859623: int ASN1_TYPE_get(const ASN1_TYPE *a); 859623: void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); 859623: int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); 859623: int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); 859623: 859623: ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); 859623: void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); 859623: 859623: struct stack_st_ASN1_OBJECT; typedef int (*sk_ASN1_OBJECT_compfunc)(const ASN1_OBJECT * const *a, const ASN1_OBJECT *const *b); typedef void (*sk_ASN1_OBJECT_freefunc)(ASN1_OBJECT *a); typedef ASN1_OBJECT * (*sk_ASN1_OBJECT_copyfunc)(const ASN1_OBJECT *a); static __attribute__((unused)) inline ASN1_OBJECT *ossl_check_ASN1_OBJECT_type(ASN1_OBJECT *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_ASN1_OBJECT_sk_type(const struct stack_st_ASN1_OBJECT *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_ASN1_OBJECT_sk_type(struct stack_st_ASN1_OBJECT *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_ASN1_OBJECT_compfunc_type(sk_ASN1_OBJECT_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_ASN1_OBJECT_copyfunc_type(sk_ASN1_OBJECT_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_ASN1_OBJECT_freefunc_type(sk_ASN1_OBJECT_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 663 "/usr/include/openssl/asn1.h" 3 4 859623: extern ASN1_OBJECT *ASN1_OBJECT_new(void); extern void ASN1_OBJECT_free(ASN1_OBJECT *a); extern ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **in, long len); extern int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **out); extern const ASN1_ITEM * ASN1_OBJECT_it(void); 859623: 859623: ASN1_STRING *ASN1_STRING_new(void); 859623: void ASN1_STRING_free(ASN1_STRING *a); 859623: void ASN1_STRING_clear_free(ASN1_STRING *a); 859623: int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); 859623: extern ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); 859623: ASN1_STRING *ASN1_STRING_type_new(int type); 859623: int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); 859623: 859623: 859623: 859623: 859623: int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); 859623: void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); 859623: int ASN1_STRING_length(const ASN1_STRING *x); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void ASN1_STRING_length_set(ASN1_STRING *x, int n); 859623: 859623: int ASN1_STRING_type(const ASN1_STRING *x); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) unsigned char *ASN1_STRING_data(ASN1_STRING *x); 859623: 859623: const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); 859623: 859623: extern ASN1_BIT_STRING *ASN1_BIT_STRING_new(void); extern void ASN1_BIT_STRING_free(ASN1_BIT_STRING *a); extern ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, const unsigned char **in, long len); extern int i2d_ASN1_BIT_STRING(const ASN1_BIT_STRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_BIT_STRING_it(void); 859623: int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); 859623: int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); 859623: int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n); 859623: int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, 859623: const unsigned char *flags, int flags_len); 859623: 859623: int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, 859623: BIT_STRING_BITNAME *tbl, int indent); 859623: int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); 859623: int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, 859623: BIT_STRING_BITNAME *tbl); 859623: 859623: struct stack_st_ASN1_INTEGER; typedef int (*sk_ASN1_INTEGER_compfunc)(const ASN1_INTEGER * const *a, const ASN1_INTEGER *const *b); typedef void (*sk_ASN1_INTEGER_freefunc)(ASN1_INTEGER *a); typedef ASN1_INTEGER * (*sk_ASN1_INTEGER_copyfunc)(const ASN1_INTEGER *a); static __attribute__((unused)) inline ASN1_INTEGER *ossl_check_ASN1_INTEGER_type(ASN1_INTEGER *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_ASN1_INTEGER_sk_type(const struct stack_st_ASN1_INTEGER *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_ASN1_INTEGER_sk_type(struct stack_st_ASN1_INTEGER *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_ASN1_INTEGER_compfunc_type(sk_ASN1_INTEGER_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_ASN1_INTEGER_copyfunc_type(sk_ASN1_INTEGER_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_ASN1_INTEGER_freefunc_type(sk_ASN1_INTEGER_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 730 "/usr/include/openssl/asn1.h" 3 4 859623: extern ASN1_INTEGER *ASN1_INTEGER_new(void); extern void ASN1_INTEGER_free(ASN1_INTEGER *a); extern ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **in, long len); extern int i2d_ASN1_INTEGER(const ASN1_INTEGER *a, unsigned char **out); extern const ASN1_ITEM * ASN1_INTEGER_it(void); 859623: ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, 859623: long length); 859623: extern ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *a); 859623: int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); 859623: 859623: extern ASN1_ENUMERATED *ASN1_ENUMERATED_new(void); extern void ASN1_ENUMERATED_free(ASN1_ENUMERATED *a); extern ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, const unsigned char **in, long len); extern int i2d_ASN1_ENUMERATED(const ASN1_ENUMERATED *a, unsigned char **out); extern const ASN1_ITEM * ASN1_ENUMERATED_it(void); 859623: 859623: int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); 859623: ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); 859623: ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, 859623: int offset_day, long offset_sec); 859623: int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); 859623: int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); 859623: 859623: int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); 859623: ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, 859623: time_t t); 859623: ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, 859623: time_t t, int offset_day, 859623: long offset_sec); 859623: int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); 859623: 859623: int ASN1_TIME_diff(int *pday, int *psec, 859623: const ASN1_TIME *from, const ASN1_TIME *to); 859623: 859623: extern ASN1_OCTET_STRING *ASN1_OCTET_STRING_new(void); extern void ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a); extern ASN1_OCTET_STRING *d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, const unsigned char **in, long len); extern int i2d_ASN1_OCTET_STRING(const ASN1_OCTET_STRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_OCTET_STRING_it(void); 859623: extern ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); 859623: int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, 859623: const ASN1_OCTET_STRING *b); 859623: int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, 859623: int len); 859623: 859623: struct stack_st_ASN1_UTF8STRING; typedef int (*sk_ASN1_UTF8STRING_compfunc)(const ASN1_UTF8STRING * const *a, const ASN1_UTF8STRING *const *b); typedef void (*sk_ASN1_UTF8STRING_freefunc)(ASN1_UTF8STRING *a); typedef ASN1_UTF8STRING * (*sk_ASN1_UTF8STRING_copyfunc)(const ASN1_UTF8STRING *a); static __attribute__((unused)) inline ASN1_UTF8STRING *ossl_check_ASN1_UTF8STRING_type(ASN1_UTF8STRING *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_ASN1_UTF8STRING_sk_type(const struct stack_st_ASN1_UTF8STRING *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_ASN1_UTF8STRING_sk_type(struct stack_st_ASN1_UTF8STRING *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_ASN1_UTF8STRING_compfunc_type(sk_ASN1_UTF8STRING_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_ASN1_UTF8STRING_copyfunc_type(sk_ASN1_UTF8STRING_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_ASN1_UTF8STRING_freefunc_type(sk_ASN1_UTF8STRING_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 791 "/usr/include/openssl/asn1.h" 3 4 859623: extern ASN1_VISIBLESTRING *ASN1_VISIBLESTRING_new(void); extern void ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a); extern ASN1_VISIBLESTRING *d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, const unsigned char **in, long len); extern int i2d_ASN1_VISIBLESTRING(const ASN1_VISIBLESTRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_VISIBLESTRING_it(void); 859623: extern ASN1_UNIVERSALSTRING *ASN1_UNIVERSALSTRING_new(void); extern void ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *a); extern ASN1_UNIVERSALSTRING *d2i_ASN1_UNIVERSALSTRING(ASN1_UNIVERSALSTRING **a, const unsigned char **in, long len); extern int i2d_ASN1_UNIVERSALSTRING(const ASN1_UNIVERSALSTRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_UNIVERSALSTRING_it(void); 859623: extern ASN1_UTF8STRING *ASN1_UTF8STRING_new(void); extern void ASN1_UTF8STRING_free(ASN1_UTF8STRING *a); extern ASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, const unsigned char **in, long len); extern int i2d_ASN1_UTF8STRING(const ASN1_UTF8STRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_UTF8STRING_it(void); 859623: extern ASN1_NULL *ASN1_NULL_new(void); extern void ASN1_NULL_free(ASN1_NULL *a); extern ASN1_NULL *d2i_ASN1_NULL(ASN1_NULL **a, const unsigned char **in, long len); extern int i2d_ASN1_NULL(const ASN1_NULL *a, unsigned char **out); extern const ASN1_ITEM * ASN1_NULL_it(void); 859623: extern ASN1_BMPSTRING *ASN1_BMPSTRING_new(void); extern void ASN1_BMPSTRING_free(ASN1_BMPSTRING *a); extern ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, const unsigned char **in, long len); extern int i2d_ASN1_BMPSTRING(const ASN1_BMPSTRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_BMPSTRING_it(void); 859623: 859623: int UTF8_getc(const unsigned char *str, int len, unsigned long *val); 859623: int UTF8_putc(unsigned char *str, int len, unsigned long value); 859623: 859623: struct stack_st_ASN1_GENERALSTRING; typedef int (*sk_ASN1_GENERALSTRING_compfunc)(const ASN1_GENERALSTRING * const *a, const ASN1_GENERALSTRING *const *b); typedef void (*sk_ASN1_GENERALSTRING_freefunc)(ASN1_GENERALSTRING *a); typedef ASN1_GENERALSTRING * (*sk_ASN1_GENERALSTRING_copyfunc)(const ASN1_GENERALSTRING *a); static __attribute__((unused)) inline ASN1_GENERALSTRING *ossl_check_ASN1_GENERALSTRING_type(ASN1_GENERALSTRING *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_ASN1_GENERALSTRING_sk_type(const struct stack_st_ASN1_GENERALSTRING *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_ASN1_GENERALSTRING_sk_type(struct stack_st_ASN1_GENERALSTRING *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_ASN1_GENERALSTRING_compfunc_type(sk_ASN1_GENERALSTRING_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_ASN1_GENERALSTRING_copyfunc_type(sk_ASN1_GENERALSTRING_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_ASN1_GENERALSTRING_freefunc_type(sk_ASN1_GENERALSTRING_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 828 "/usr/include/openssl/asn1.h" 3 4 859623: extern ASN1_STRING *ASN1_PRINTABLE_new(void); extern void ASN1_PRINTABLE_free(ASN1_STRING *a); extern ASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a, const unsigned char **in, long len); extern int i2d_ASN1_PRINTABLE(const ASN1_STRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_PRINTABLE_it(void); 859623: 859623: extern ASN1_STRING *DIRECTORYSTRING_new(void); extern void DIRECTORYSTRING_free(ASN1_STRING *a); extern ASN1_STRING *d2i_DIRECTORYSTRING(ASN1_STRING **a, const unsigned char **in, long len); extern int i2d_DIRECTORYSTRING(const ASN1_STRING *a, unsigned char **out); extern const ASN1_ITEM * DIRECTORYSTRING_it(void); 859623: extern ASN1_STRING *DISPLAYTEXT_new(void); extern void DISPLAYTEXT_free(ASN1_STRING *a); extern ASN1_STRING *d2i_DISPLAYTEXT(ASN1_STRING **a, const unsigned char **in, long len); extern int i2d_DISPLAYTEXT(const ASN1_STRING *a, unsigned char **out); extern const ASN1_ITEM * DISPLAYTEXT_it(void); 859623: extern ASN1_PRINTABLESTRING *ASN1_PRINTABLESTRING_new(void); extern void ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a); extern ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, const unsigned char **in, long len); extern int i2d_ASN1_PRINTABLESTRING(const ASN1_PRINTABLESTRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_PRINTABLESTRING_it(void); 859623: extern ASN1_T61STRING *ASN1_T61STRING_new(void); extern void ASN1_T61STRING_free(ASN1_T61STRING *a); extern ASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a, const unsigned char **in, long len); extern int i2d_ASN1_T61STRING(const ASN1_T61STRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_T61STRING_it(void); 859623: extern ASN1_IA5STRING *ASN1_IA5STRING_new(void); extern void ASN1_IA5STRING_free(ASN1_IA5STRING *a); extern ASN1_IA5STRING *d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, const unsigned char **in, long len); extern int i2d_ASN1_IA5STRING(const ASN1_IA5STRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_IA5STRING_it(void); 859623: extern ASN1_GENERALSTRING *ASN1_GENERALSTRING_new(void); extern void ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *a); extern ASN1_GENERALSTRING *d2i_ASN1_GENERALSTRING(ASN1_GENERALSTRING **a, const unsigned char **in, long len); extern int i2d_ASN1_GENERALSTRING(const ASN1_GENERALSTRING *a, unsigned char **out); extern const ASN1_ITEM * ASN1_GENERALSTRING_it(void); 859623: extern ASN1_UTCTIME *ASN1_UTCTIME_new(void); extern void ASN1_UTCTIME_free(ASN1_UTCTIME *a); extern ASN1_UTCTIME *d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, const unsigned char **in, long len); extern int i2d_ASN1_UTCTIME(const ASN1_UTCTIME *a, unsigned char **out); extern const ASN1_ITEM * ASN1_UTCTIME_it(void); 859623: extern ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_new(void); extern void ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a); extern ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, const unsigned char **in, long len); extern int i2d_ASN1_GENERALIZEDTIME(const ASN1_GENERALIZEDTIME *a, unsigned char **out); extern const ASN1_ITEM * ASN1_GENERALIZEDTIME_it(void); 859623: extern ASN1_TIME *ASN1_TIME_new(void); extern void ASN1_TIME_free(ASN1_TIME *a); extern ASN1_TIME *d2i_ASN1_TIME(ASN1_TIME **a, const unsigned char **in, long len); extern int i2d_ASN1_TIME(const ASN1_TIME *a, unsigned char **out); extern const ASN1_ITEM * ASN1_TIME_it(void); 859623: 859623: extern ASN1_TIME *ASN1_TIME_dup(const ASN1_TIME *a); 859623: extern ASN1_UTCTIME *ASN1_UTCTIME_dup(const ASN1_UTCTIME *a); 859623: extern ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_dup(const ASN1_GENERALIZEDTIME *a); 859623: 859623: extern const ASN1_ITEM * ASN1_OCTET_STRING_NDEF_it(void); 859623: 859623: ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); 859623: ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, 859623: int offset_day, long offset_sec); 859623: int ASN1_TIME_check(const ASN1_TIME *t); 859623: ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, 859623: ASN1_GENERALIZEDTIME **out); 859623: int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); 859623: int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); 859623: int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); 859623: int ASN1_TIME_normalize(ASN1_TIME *s); 859623: int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); 859623: int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); 859623: 859623: int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); 859623: int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); 859623: int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); 859623: int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); 859623: int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); 859623: int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); 859623: int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); 859623: int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); 859623: 859623: int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); 859623: ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, 859623: const char *sn, const char *ln); 859623: 859623: int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); 859623: int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); 859623: int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); 859623: int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); 859623: 859623: int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); 859623: long ASN1_INTEGER_get(const ASN1_INTEGER *a); 859623: ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); 859623: BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); 859623: 859623: int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); 859623: int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); 859623: 859623: 859623: int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); 859623: long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); 859623: ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); 859623: BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); 859623: 859623: 859623: 859623: int ASN1_PRINTABLE_type(const unsigned char *s, int max); 859623: 859623: unsigned long ASN1_tag2bit(int tag); 859623: 859623: 859623: int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, 859623: int *pclass, long omax); 859623: int ASN1_check_infinite_end(unsigned char **p, long len); 859623: int ASN1_const_check_infinite_end(const unsigned char **p, long len); 859623: void ASN1_put_object(unsigned char **pp, int constructed, int length, 859623: int tag, int xclass); 859623: int ASN1_put_eoc(unsigned char **pp); 859623: int ASN1_object_size(int constructed, int length, int tag); 859623: 859623: 859623: void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, const void *x); 859623: 859623: 859623: 859623: 859623: 859623: 859623: void *ASN1_item_dup(const ASN1_ITEM *it, const void *x); 859623: int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1, 859623: X509_ALGOR *algor2, ASN1_BIT_STRING *signature, 859623: const void *data, const ASN1_OCTET_STRING *id, 859623: EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg, 859623: const ASN1_BIT_STRING *signature, const void *data, 859623: const ASN1_OCTET_STRING *id, EVP_PKEY *pkey, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: # 933 "/usr/include/openssl/asn1.h" 3 4 859623: void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void *ASN1_item_d2i_fp_ex(const ASN1_ITEM *it, FILE *in, void *x, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); 859623: int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const void *x); 859623: int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); 859623: 859623: 859623: int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); 859623: 859623: void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void *ASN1_item_d2i_bio_ex(const ASN1_ITEM *it, BIO *in, void *pval, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval); 859623: int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x); 859623: BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val); 859623: int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); 859623: int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); 859623: int ASN1_TIME_print(BIO *bp, const ASN1_TIME *tm); 859623: int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); 859623: int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); 859623: int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); 859623: int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); 859623: int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, 859623: unsigned char *buf, int off); 859623: int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); 859623: int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, 859623: int dump); 859623: const char *ASN1_tag2str(int tag); 859623: 859623: 859623: 859623: int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); 859623: 859623: int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); 859623: int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); 859623: int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, 859623: unsigned char *data, int len); 859623: int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, 859623: unsigned char *data, int max_len); 859623: 859623: void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); 859623: void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, 859623: ASN1_OCTET_STRING **oct); 859623: 859623: void ASN1_STRING_set_default_mask(unsigned long mask); 859623: int ASN1_STRING_set_default_mask_asc(const char *p); 859623: unsigned long ASN1_STRING_get_default_mask(void); 859623: int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, 859623: int inform, unsigned long mask); 859623: int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, 859623: int inform, unsigned long mask, 859623: long minsize, long maxsize); 859623: 859623: ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, 859623: const unsigned char *in, int inlen, 859623: int inform, int nid); 859623: ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); 859623: int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); 859623: void ASN1_STRING_TABLE_cleanup(void); 859623: 859623: 859623: 859623: 859623: ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); 859623: ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); 859623: ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in, 859623: long len, const ASN1_ITEM *it, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, 859623: long len, const ASN1_ITEM *it); 859623: int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); 859623: int ASN1_item_ndef_i2d(const ASN1_VALUE *val, unsigned char **out, 859623: const ASN1_ITEM *it); 859623: 859623: void ASN1_add_oid_module(void); 859623: void ASN1_add_stable_module(void); 859623: 859623: ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); 859623: ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); 859623: int ASN1_str2mask(const char *str, unsigned long *pmask); 859623: # 1069 "/usr/include/openssl/asn1.h" 3 4 859623: int ASN1_item_print(BIO *out, const ASN1_VALUE *ifld, int indent, 859623: const ASN1_ITEM *it, const ASN1_PCTX *pctx); 859623: ASN1_PCTX *ASN1_PCTX_new(void); 859623: void ASN1_PCTX_free(ASN1_PCTX *p); 859623: unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p); 859623: void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); 859623: unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); 859623: void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); 859623: unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); 859623: void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); 859623: unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); 859623: void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); 859623: unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); 859623: void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); 859623: 859623: ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)); 859623: void ASN1_SCTX_free(ASN1_SCTX *p); 859623: const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); 859623: const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); 859623: unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); 859623: void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); 859623: void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); 859623: 859623: const BIO_METHOD *BIO_f_asn1(void); 859623: 859623: 859623: BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); 859623: 859623: int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, 859623: const ASN1_ITEM *it); 859623: int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, 859623: const char *hdr, const ASN1_ITEM *it); 859623: 859623: int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, 859623: int ctype_nid, int econt_nid, 859623: struct stack_st_X509_ALGOR *mdalgs, const ASN1_ITEM *it); 859623: int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, 859623: int ctype_nid, int econt_nid, 859623: struct stack_st_X509_ALGOR *mdalgs, const ASN1_ITEM *it, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); 859623: ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont, 859623: const ASN1_ITEM *it, ASN1_VALUE **x, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int SMIME_crlf_copy(BIO *in, BIO *out, int flags); 859623: int SMIME_text(BIO *in, BIO *out); 859623: 859623: const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); 859623: const ASN1_ITEM *ASN1_ITEM_get(size_t i); 859623: # 1132 "/usr/include/openssl/asn1.h" 3 4 859623: } 859623: # 22 "/usr/include/openssl/objects.h" 2 3 4 859623: # 1 "/usr/include/openssl/objectserr.h" 1 3 4 859623: # 13 "/usr/include/openssl/objectserr.h" 3 4 859623: 859623: # 23 "/usr/include/openssl/objects.h" 2 3 4 859623: # 40 "/usr/include/openssl/objects.h" 3 4 859623: extern "C" { 859623: 859623: 859623: typedef struct obj_name_st { 859623: int type; 859623: int alias; 859623: const char *name; 859623: const char *data; 859623: } OBJ_NAME; 859623: 859623: 859623: 859623: int OBJ_NAME_init(void); 859623: int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *), 859623: int (*cmp_func) (const char *, const char *), 859623: void (*free_func) (const char *, int, const char *)); 859623: const char *OBJ_NAME_get(const char *name, int type); 859623: int OBJ_NAME_add(const char *name, int type, const char *data); 859623: int OBJ_NAME_remove(const char *name, int type); 859623: void OBJ_NAME_cleanup(int type); 859623: void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg), 859623: void *arg); 859623: void OBJ_NAME_do_all_sorted(int type, 859623: void (*fn) (const OBJ_NAME *, void *arg), 859623: void *arg); 859623: 859623: extern ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *a); 859623: ASN1_OBJECT *OBJ_nid2obj(int n); 859623: const char *OBJ_nid2ln(int n); 859623: const char *OBJ_nid2sn(int n); 859623: int OBJ_obj2nid(const ASN1_OBJECT *o); 859623: ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); 859623: int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); 859623: int OBJ_txt2nid(const char *s); 859623: int OBJ_ln2nid(const char *s); 859623: int OBJ_sn2nid(const char *s); 859623: int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); 859623: const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, 859623: int (*cmp) (const void *, const void *)); 859623: const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, 859623: int size, 859623: int (*cmp) (const void *, const void *), 859623: int flags); 859623: # 163 "/usr/include/openssl/objects.h" 3 4 859623: int OBJ_new_nid(int num); 859623: int OBJ_add_object(const ASN1_OBJECT *obj); 859623: int OBJ_create(const char *oid, const char *sn, const char *ln); 859623: 859623: 859623: 859623: int OBJ_create_objects(BIO *in); 859623: 859623: size_t OBJ_length(const ASN1_OBJECT *obj); 859623: const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); 859623: 859623: int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); 859623: int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); 859623: int OBJ_add_sigid(int signid, int dig_id, int pkey_id); 859623: void OBJ_sigid_free(void); 859623: 859623: 859623: 859623: 859623: } 859623: # 48 "/usr/include/openssl/evp.h" 2 3 4 859623: # 116 "/usr/include/openssl/evp.h" 3 4 859623: extern "C" { 859623: 859623: 859623: int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq); 859623: char *EVP_get1_default_properties(OSSL_LIB_CTX *libctx); 859623: int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx); 859623: int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable); 859623: # 131 "/usr/include/openssl/evp.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_MD_meth_free(EVP_MD *md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, 859623: const void *data, 859623: size_t count)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, 859623: unsigned char *md)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, 859623: const EVP_MD_CTX *from)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, 859623: int p1, void *p2)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_MD_meth_get_result_size(const EVP_MD *md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_MD_meth_get_app_datasize(const EVP_MD *md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, 859623: const void *data, size_t count); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, 859623: unsigned char *md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, 859623: const EVP_MD_CTX *from); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, 859623: int p1, void *p2); 859623: # 255 "/usr/include/openssl/evp.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, 859623: int (*init) (EVP_CIPHER_CTX *ctx, 859623: const unsigned char *key, 859623: const unsigned char *iv, 859623: int enc)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, 859623: int (*do_cipher) (EVP_CIPHER_CTX *ctx, 859623: unsigned char *out, 859623: const unsigned char *in, 859623: size_t inl)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, 859623: int (*cleanup) (EVP_CIPHER_CTX *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, 859623: int (*set_asn1_parameters) (EVP_CIPHER_CTX *, 859623: ASN1_TYPE *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, 859623: int (*get_asn1_parameters) (EVP_CIPHER_CTX *, 859623: ASN1_TYPE *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, 859623: int (*ctrl) (EVP_CIPHER_CTX *, int type, 859623: int arg, void *ptr)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int 859623: (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, 859623: const unsigned char *key, 859623: const unsigned char *iv, 859623: int enc); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int 859623: (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, 859623: unsigned char *out, 859623: const unsigned char *in, 859623: size_t inl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int 859623: (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int 859623: (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, 859623: ASN1_TYPE *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int 859623: (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, 859623: ASN1_TYPE *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int 859623: (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type, 859623: int arg, void *ptr); 859623: # 473 "/usr/include/openssl/evp.h" 3 4 859623: typedef struct { 859623: unsigned char *out; 859623: const unsigned char *inp; 859623: size_t len; 859623: unsigned int interleave; 859623: } EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; 859623: # 503 "/usr/include/openssl/evp.h" 3 4 859623: typedef struct evp_cipher_info_st { 859623: const EVP_CIPHER *cipher; 859623: unsigned char iv[16]; 859623: } EVP_CIPHER_INFO; 859623: 859623: 859623: 859623: typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, 859623: int passlen, ASN1_TYPE *param, 859623: const EVP_CIPHER *cipher, const EVP_MD *md, 859623: int en_de); 859623: 859623: typedef int (EVP_PBE_KEYGEN_EX) (EVP_CIPHER_CTX *ctx, const char *pass, 859623: int passlen, ASN1_TYPE *param, 859623: const EVP_CIPHER *cipher, const EVP_MD *md, 859623: int en_de, OSSL_LIB_CTX *libctx, const char *propq); 859623: # 556 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_MD_get_type(const EVP_MD *md); 859623: 859623: 859623: const char *EVP_MD_get0_name(const EVP_MD *md); 859623: 859623: const char *EVP_MD_get0_description(const EVP_MD *md); 859623: int EVP_MD_is_a(const EVP_MD *md, const char *name); 859623: int EVP_MD_names_do_all(const EVP_MD *md, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); 859623: int EVP_MD_get_pkey_type(const EVP_MD *md); 859623: 859623: int EVP_MD_get_size(const EVP_MD *md); 859623: 859623: int EVP_MD_get_block_size(const EVP_MD *md); 859623: 859623: unsigned long EVP_MD_get_flags(const EVP_MD *md); 859623: 859623: int EVP_MD_xof(const EVP_MD *md); 859623: 859623: const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); 859623: EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, 859623: const void *data, size_t count); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, 859623: int (*update) (EVP_MD_CTX *ctx, 859623: const void *data, size_t count)); 859623: 859623: int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX *ctx); 859623: # 599 "/usr/include/openssl/evp.h" 3 4 859623: EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); 859623: 859623: void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); 859623: void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); 859623: 859623: 859623: int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher); 859623: 859623: const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher); 859623: 859623: const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher); 859623: int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name); 859623: int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher); 859623: int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); 859623: 859623: int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher); 859623: 859623: int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher); 859623: 859623: unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher); 859623: 859623: int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher); 859623: 859623: int EVP_CIPHER_get_type(const EVP_CIPHER *cipher); 859623: 859623: EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_CIPHER_can_pipeline(const EVP_CIPHER *cipher, int enc); 859623: int EVP_CIPHER_up_ref(EVP_CIPHER *cipher); 859623: void EVP_CIPHER_free(EVP_CIPHER *cipher); 859623: 859623: const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx); 859623: EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx); 859623: int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx); 859623: 859623: 859623: const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); 859623: int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); 859623: EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in); 859623: int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); 859623: void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); 859623: void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); 859623: void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); 859623: void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); 859623: # 704 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_Cipher(EVP_CIPHER_CTX *c, 859623: unsigned char *out, 859623: const unsigned char *in, unsigned int inl); 859623: # 717 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]); 859623: int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); 859623: const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); 859623: const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); 859623: const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); 859623: const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); 859623: const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); 859623: int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); 859623: EVP_MD_CTX *EVP_MD_CTX_new(void); 859623: int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); 859623: void EVP_MD_CTX_free(EVP_MD_CTX *ctx); 859623: 859623: 859623: 859623: EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); 859623: int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); 859623: void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); 859623: void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); 859623: int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); 859623: int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, 859623: const OSSL_PARAM params[]); 859623: int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, 859623: ENGINE *impl); 859623: int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, 859623: size_t cnt); 859623: int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, 859623: unsigned int *s); 859623: int EVP_Digest(const void *data, size_t count, 859623: unsigned char *md, unsigned int *size, 859623: const EVP_MD *type, ENGINE *impl); 859623: int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, 859623: const char *propq, const void *data, size_t datalen, 859623: unsigned char *md, size_t *mdlen); 859623: 859623: int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); 859623: int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); 859623: int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, 859623: unsigned int *s); 859623: int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *out, 859623: size_t outlen); 859623: int EVP_DigestSqueeze(EVP_MD_CTX *ctx, unsigned char *out, 859623: size_t outlen); 859623: 859623: EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: 859623: int EVP_MD_up_ref(EVP_MD *md); 859623: void EVP_MD_free(EVP_MD *md); 859623: 859623: int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); 859623: int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, 859623: const char *prompt, int verify); 859623: void EVP_set_pw_prompt(const char *prompt); 859623: char *EVP_get_pw_prompt(void); 859623: 859623: int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, 859623: const unsigned char *salt, 859623: const unsigned char *data, int datal, int count, 859623: unsigned char *key, unsigned char *iv); 859623: 859623: void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); 859623: void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); 859623: int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); 859623: 859623: int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 859623: const unsigned char *key, const unsigned char *iv); 859623: int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, 859623: const EVP_CIPHER *cipher, ENGINE *impl, 859623: const unsigned char *key, 859623: const unsigned char *iv); 859623: int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 859623: const unsigned char *key, 859623: const unsigned char *iv, 859623: const OSSL_PARAM params[]); 859623: int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, 859623: int *outl, const unsigned char *in, int inl); 859623: int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, 859623: int *outl); 859623: int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, 859623: int *outl); 859623: 859623: int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 859623: const unsigned char *key, const unsigned char *iv); 859623: int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, 859623: const EVP_CIPHER *cipher, ENGINE *impl, 859623: const unsigned char *key, 859623: const unsigned char *iv); 859623: int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 859623: const unsigned char *key, 859623: const unsigned char *iv, 859623: const OSSL_PARAM params[]); 859623: int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, 859623: int *outl, const unsigned char *in, int inl); 859623: int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, 859623: int *outl); 859623: int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, 859623: int *outl); 859623: 859623: int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 859623: const unsigned char *key, const unsigned char *iv, 859623: int enc); 859623: int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, 859623: const EVP_CIPHER *cipher, ENGINE *impl, 859623: const unsigned char *key, 859623: const unsigned char *iv, int enc); 859623: int EVP_CipherInit_SKEY(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 859623: EVP_SKEY *skey, const unsigned char *iv, size_t iv_len, 859623: int enc, const OSSL_PARAM params[]); 859623: int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, 859623: const unsigned char *key, const unsigned char *iv, 859623: int enc, const OSSL_PARAM params[]); 859623: int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, 859623: int *outl, const unsigned char *in, int inl); 859623: int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, 859623: int *outl); 859623: int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX *ctx, 859623: const EVP_CIPHER *cipher, 859623: const unsigned char *key, size_t keylen, 859623: size_t numpipes, 859623: const unsigned char **iv, size_t ivlen); 859623: int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX *ctx, 859623: const EVP_CIPHER *cipher, 859623: const unsigned char *key, size_t keylen, 859623: size_t numpipes, 859623: const unsigned char **iv, size_t ivlen); 859623: int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX *ctx, 859623: unsigned char **out, size_t *outl, 859623: const size_t *outsize, 859623: const unsigned char **in, const size_t *inl); 859623: int EVP_CipherPipelineFinal(EVP_CIPHER_CTX *ctx, 859623: unsigned char **outm, size_t *outl, 859623: const size_t *outsize); 859623: int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, 859623: int *outl); 859623: 859623: int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, 859623: EVP_PKEY *pkey); 859623: int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, 859623: EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: 859623: int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, 859623: size_t *siglen, const unsigned char *tbs, 859623: size_t tbslen); 859623: 859623: int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, 859623: unsigned int siglen, EVP_PKEY *pkey); 859623: int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf, 859623: unsigned int siglen, EVP_PKEY *pkey, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, 859623: size_t siglen, const unsigned char *tbs, 859623: size_t tbslen); 859623: 859623: int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 859623: const char *mdname, OSSL_LIB_CTX *libctx, 859623: const char *props, EVP_PKEY *pkey, 859623: const OSSL_PARAM params[]); 859623: int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 859623: const EVP_MD *type, ENGINE *e, 859623: EVP_PKEY *pkey); 859623: int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); 859623: int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, 859623: size_t *siglen); 859623: 859623: int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 859623: const char *mdname, OSSL_LIB_CTX *libctx, 859623: const char *props, EVP_PKEY *pkey, 859623: const OSSL_PARAM params[]); 859623: int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, 859623: const EVP_MD *type, ENGINE *e, 859623: EVP_PKEY *pkey); 859623: int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); 859623: int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, 859623: size_t siglen); 859623: 859623: int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, 859623: const unsigned char *ek, int ekl, 859623: const unsigned char *iv, EVP_PKEY *priv); 859623: int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 859623: 859623: int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, 859623: unsigned char **ek, int *ekl, unsigned char *iv, 859623: EVP_PKEY **pubk, int npubk); 859623: int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); 859623: 859623: EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); 859623: void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); 859623: int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx); 859623: int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); 859623: void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); 859623: int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 859623: const unsigned char *in, int inl); 859623: void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); 859623: int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); 859623: 859623: void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); 859623: int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, 859623: const unsigned char *in, int inl); 859623: int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned 859623: char *out, int *outl); 859623: int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); 859623: 859623: 859623: 859623: 859623: 859623: EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); 859623: int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); 859623: void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); 859623: int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); 859623: int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); 859623: int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); 859623: int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); 859623: int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]); 859623: int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]); 859623: const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher); 859623: const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher); 859623: const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher); 859623: const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx); 859623: const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx); 859623: 859623: int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX *ctx, const X509_ALGOR *alg); 859623: int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX *ctx, X509_ALGOR *alg); 859623: int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX *ctx, X509_ALGOR **alg); 859623: 859623: const BIO_METHOD *BIO_f_md(void); 859623: const BIO_METHOD *BIO_f_base64(void); 859623: const BIO_METHOD *BIO_f_cipher(void); 859623: const BIO_METHOD *BIO_f_reliable(void); 859623: int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, 859623: const unsigned char *i, int enc); 859623: 859623: const EVP_MD *EVP_md_null(void); 859623: 859623: 859623: 859623: 859623: const EVP_MD *EVP_md4(void); 859623: 859623: 859623: const EVP_MD *EVP_md5(void); 859623: const EVP_MD *EVP_md5_sha1(void); 859623: 859623: 859623: const EVP_MD *EVP_blake2b512(void); 859623: const EVP_MD *EVP_blake2s256(void); 859623: 859623: const EVP_MD *EVP_sha1(void); 859623: const EVP_MD *EVP_sha224(void); 859623: const EVP_MD *EVP_sha256(void); 859623: const EVP_MD *EVP_sha384(void); 859623: const EVP_MD *EVP_sha512(void); 859623: const EVP_MD *EVP_sha512_224(void); 859623: const EVP_MD *EVP_sha512_256(void); 859623: const EVP_MD *EVP_sha3_224(void); 859623: const EVP_MD *EVP_sha3_256(void); 859623: const EVP_MD *EVP_sha3_384(void); 859623: const EVP_MD *EVP_sha3_512(void); 859623: const EVP_MD *EVP_shake128(void); 859623: const EVP_MD *EVP_shake256(void); 859623: 859623: 859623: 859623: 859623: 859623: const EVP_MD *EVP_ripemd160(void); 859623: 859623: 859623: const EVP_MD *EVP_whirlpool(void); 859623: 859623: 859623: const EVP_MD *EVP_sm3(void); 859623: 859623: const EVP_CIPHER *EVP_enc_null(void); 859623: 859623: const EVP_CIPHER *EVP_des_ecb(void); 859623: const EVP_CIPHER *EVP_des_ede(void); 859623: const EVP_CIPHER *EVP_des_ede3(void); 859623: const EVP_CIPHER *EVP_des_ede_ecb(void); 859623: const EVP_CIPHER *EVP_des_ede3_ecb(void); 859623: const EVP_CIPHER *EVP_des_cfb64(void); 859623: 859623: const EVP_CIPHER *EVP_des_cfb1(void); 859623: const EVP_CIPHER *EVP_des_cfb8(void); 859623: const EVP_CIPHER *EVP_des_ede_cfb64(void); 859623: 859623: const EVP_CIPHER *EVP_des_ede3_cfb64(void); 859623: 859623: const EVP_CIPHER *EVP_des_ede3_cfb1(void); 859623: const EVP_CIPHER *EVP_des_ede3_cfb8(void); 859623: const EVP_CIPHER *EVP_des_ofb(void); 859623: const EVP_CIPHER *EVP_des_ede_ofb(void); 859623: const EVP_CIPHER *EVP_des_ede3_ofb(void); 859623: const EVP_CIPHER *EVP_des_cbc(void); 859623: const EVP_CIPHER *EVP_des_ede_cbc(void); 859623: const EVP_CIPHER *EVP_des_ede3_cbc(void); 859623: const EVP_CIPHER *EVP_desx_cbc(void); 859623: const EVP_CIPHER *EVP_des_ede3_wrap(void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: const EVP_CIPHER *EVP_rc4(void); 859623: const EVP_CIPHER *EVP_rc4_40(void); 859623: 859623: const EVP_CIPHER *EVP_rc4_hmac_md5(void); 859623: # 1040 "/usr/include/openssl/evp.h" 3 4 859623: const EVP_CIPHER *EVP_rc2_ecb(void); 859623: const EVP_CIPHER *EVP_rc2_cbc(void); 859623: const EVP_CIPHER *EVP_rc2_40_cbc(void); 859623: const EVP_CIPHER *EVP_rc2_64_cbc(void); 859623: const EVP_CIPHER *EVP_rc2_cfb64(void); 859623: 859623: const EVP_CIPHER *EVP_rc2_ofb(void); 859623: 859623: 859623: const EVP_CIPHER *EVP_bf_ecb(void); 859623: const EVP_CIPHER *EVP_bf_cbc(void); 859623: const EVP_CIPHER *EVP_bf_cfb64(void); 859623: 859623: const EVP_CIPHER *EVP_bf_ofb(void); 859623: 859623: 859623: const EVP_CIPHER *EVP_cast5_ecb(void); 859623: const EVP_CIPHER *EVP_cast5_cbc(void); 859623: const EVP_CIPHER *EVP_cast5_cfb64(void); 859623: 859623: const EVP_CIPHER *EVP_cast5_ofb(void); 859623: # 1069 "/usr/include/openssl/evp.h" 3 4 859623: const EVP_CIPHER *EVP_aes_128_ecb(void); 859623: const EVP_CIPHER *EVP_aes_128_cbc(void); 859623: const EVP_CIPHER *EVP_aes_128_cfb1(void); 859623: const EVP_CIPHER *EVP_aes_128_cfb8(void); 859623: const EVP_CIPHER *EVP_aes_128_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_aes_128_ofb(void); 859623: const EVP_CIPHER *EVP_aes_128_ctr(void); 859623: const EVP_CIPHER *EVP_aes_128_ccm(void); 859623: const EVP_CIPHER *EVP_aes_128_gcm(void); 859623: const EVP_CIPHER *EVP_aes_128_xts(void); 859623: const EVP_CIPHER *EVP_aes_128_wrap(void); 859623: const EVP_CIPHER *EVP_aes_128_wrap_pad(void); 859623: 859623: const EVP_CIPHER *EVP_aes_128_ocb(void); 859623: 859623: const EVP_CIPHER *EVP_aes_192_ecb(void); 859623: const EVP_CIPHER *EVP_aes_192_cbc(void); 859623: const EVP_CIPHER *EVP_aes_192_cfb1(void); 859623: const EVP_CIPHER *EVP_aes_192_cfb8(void); 859623: const EVP_CIPHER *EVP_aes_192_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_aes_192_ofb(void); 859623: const EVP_CIPHER *EVP_aes_192_ctr(void); 859623: const EVP_CIPHER *EVP_aes_192_ccm(void); 859623: const EVP_CIPHER *EVP_aes_192_gcm(void); 859623: const EVP_CIPHER *EVP_aes_192_wrap(void); 859623: const EVP_CIPHER *EVP_aes_192_wrap_pad(void); 859623: 859623: const EVP_CIPHER *EVP_aes_192_ocb(void); 859623: 859623: const EVP_CIPHER *EVP_aes_256_ecb(void); 859623: const EVP_CIPHER *EVP_aes_256_cbc(void); 859623: const EVP_CIPHER *EVP_aes_256_cfb1(void); 859623: const EVP_CIPHER *EVP_aes_256_cfb8(void); 859623: const EVP_CIPHER *EVP_aes_256_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_aes_256_ofb(void); 859623: const EVP_CIPHER *EVP_aes_256_ctr(void); 859623: const EVP_CIPHER *EVP_aes_256_ccm(void); 859623: const EVP_CIPHER *EVP_aes_256_gcm(void); 859623: const EVP_CIPHER *EVP_aes_256_xts(void); 859623: const EVP_CIPHER *EVP_aes_256_wrap(void); 859623: const EVP_CIPHER *EVP_aes_256_wrap_pad(void); 859623: 859623: const EVP_CIPHER *EVP_aes_256_ocb(void); 859623: 859623: const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); 859623: const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); 859623: const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); 859623: const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); 859623: 859623: const EVP_CIPHER *EVP_aria_128_ecb(void); 859623: const EVP_CIPHER *EVP_aria_128_cbc(void); 859623: const EVP_CIPHER *EVP_aria_128_cfb1(void); 859623: const EVP_CIPHER *EVP_aria_128_cfb8(void); 859623: const EVP_CIPHER *EVP_aria_128_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_aria_128_ctr(void); 859623: const EVP_CIPHER *EVP_aria_128_ofb(void); 859623: const EVP_CIPHER *EVP_aria_128_gcm(void); 859623: const EVP_CIPHER *EVP_aria_128_ccm(void); 859623: const EVP_CIPHER *EVP_aria_192_ecb(void); 859623: const EVP_CIPHER *EVP_aria_192_cbc(void); 859623: const EVP_CIPHER *EVP_aria_192_cfb1(void); 859623: const EVP_CIPHER *EVP_aria_192_cfb8(void); 859623: const EVP_CIPHER *EVP_aria_192_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_aria_192_ctr(void); 859623: const EVP_CIPHER *EVP_aria_192_ofb(void); 859623: const EVP_CIPHER *EVP_aria_192_gcm(void); 859623: const EVP_CIPHER *EVP_aria_192_ccm(void); 859623: const EVP_CIPHER *EVP_aria_256_ecb(void); 859623: const EVP_CIPHER *EVP_aria_256_cbc(void); 859623: const EVP_CIPHER *EVP_aria_256_cfb1(void); 859623: const EVP_CIPHER *EVP_aria_256_cfb8(void); 859623: const EVP_CIPHER *EVP_aria_256_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_aria_256_ctr(void); 859623: const EVP_CIPHER *EVP_aria_256_ofb(void); 859623: const EVP_CIPHER *EVP_aria_256_gcm(void); 859623: const EVP_CIPHER *EVP_aria_256_ccm(void); 859623: 859623: 859623: const EVP_CIPHER *EVP_camellia_128_ecb(void); 859623: const EVP_CIPHER *EVP_camellia_128_cbc(void); 859623: const EVP_CIPHER *EVP_camellia_128_cfb1(void); 859623: const EVP_CIPHER *EVP_camellia_128_cfb8(void); 859623: const EVP_CIPHER *EVP_camellia_128_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_camellia_128_ofb(void); 859623: const EVP_CIPHER *EVP_camellia_128_ctr(void); 859623: const EVP_CIPHER *EVP_camellia_192_ecb(void); 859623: const EVP_CIPHER *EVP_camellia_192_cbc(void); 859623: const EVP_CIPHER *EVP_camellia_192_cfb1(void); 859623: const EVP_CIPHER *EVP_camellia_192_cfb8(void); 859623: const EVP_CIPHER *EVP_camellia_192_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_camellia_192_ofb(void); 859623: const EVP_CIPHER *EVP_camellia_192_ctr(void); 859623: const EVP_CIPHER *EVP_camellia_256_ecb(void); 859623: const EVP_CIPHER *EVP_camellia_256_cbc(void); 859623: const EVP_CIPHER *EVP_camellia_256_cfb1(void); 859623: const EVP_CIPHER *EVP_camellia_256_cfb8(void); 859623: const EVP_CIPHER *EVP_camellia_256_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_camellia_256_ofb(void); 859623: const EVP_CIPHER *EVP_camellia_256_ctr(void); 859623: 859623: 859623: const EVP_CIPHER *EVP_chacha20(void); 859623: 859623: const EVP_CIPHER *EVP_chacha20_poly1305(void); 859623: 859623: 859623: 859623: 859623: const EVP_CIPHER *EVP_seed_ecb(void); 859623: const EVP_CIPHER *EVP_seed_cbc(void); 859623: const EVP_CIPHER *EVP_seed_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_seed_ofb(void); 859623: 859623: 859623: 859623: const EVP_CIPHER *EVP_sm4_ecb(void); 859623: const EVP_CIPHER *EVP_sm4_cbc(void); 859623: const EVP_CIPHER *EVP_sm4_cfb128(void); 859623: 859623: const EVP_CIPHER *EVP_sm4_ofb(void); 859623: const EVP_CIPHER *EVP_sm4_ctr(void); 859623: # 1225 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_add_cipher(const EVP_CIPHER *cipher); 859623: int EVP_add_digest(const EVP_MD *digest); 859623: 859623: const EVP_CIPHER *EVP_get_cipherbyname(const char *name); 859623: const EVP_MD *EVP_get_digestbyname(const char *name); 859623: 859623: void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, 859623: const char *from, const char *to, void *x), 859623: void *arg); 859623: void EVP_CIPHER_do_all_sorted(void (*fn) 859623: (const EVP_CIPHER *ciph, const char *from, 859623: const char *to, void *x), void *arg); 859623: void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_CIPHER *cipher, void *arg), 859623: void *arg); 859623: 859623: void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, 859623: const char *from, const char *to, void *x), 859623: void *arg); 859623: void EVP_MD_do_all_sorted(void (*fn) 859623: (const EVP_MD *ciph, const char *from, 859623: const char *to, void *x), void *arg); 859623: void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_MD *md, void *arg), 859623: void *arg); 859623: 859623: 859623: 859623: EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_MAC_up_ref(EVP_MAC *mac); 859623: void EVP_MAC_free(EVP_MAC *mac); 859623: const char *EVP_MAC_get0_name(const EVP_MAC *mac); 859623: const char *EVP_MAC_get0_description(const EVP_MAC *mac); 859623: int EVP_MAC_is_a(const EVP_MAC *mac, const char *name); 859623: const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac); 859623: int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); 859623: 859623: EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); 859623: void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx); 859623: EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src); 859623: EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx); 859623: int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]); 859623: int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]); 859623: 859623: size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx); 859623: size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx); 859623: unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq, 859623: const char *subalg, const OSSL_PARAM *params, 859623: const void *key, size_t keylen, 859623: const unsigned char *data, size_t datalen, 859623: unsigned char *out, size_t outsize, size_t *outlen); 859623: int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, 859623: const OSSL_PARAM params[]); 859623: int EVP_MAC_init_SKEY(EVP_MAC_CTX *ctx, EVP_SKEY *skey, const OSSL_PARAM params[]); 859623: int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen); 859623: int EVP_MAC_final(EVP_MAC_CTX *ctx, 859623: unsigned char *out, size_t *outl, size_t outsize); 859623: int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize); 859623: const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); 859623: const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac); 859623: const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac); 859623: const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx); 859623: const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx); 859623: 859623: void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_MAC *mac, void *arg), 859623: void *arg); 859623: int EVP_MAC_names_do_all(const EVP_MAC *mac, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: 859623: 859623: EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_RAND_up_ref(EVP_RAND *rand); 859623: void EVP_RAND_free(EVP_RAND *rand); 859623: const char *EVP_RAND_get0_name(const EVP_RAND *rand); 859623: const char *EVP_RAND_get0_description(const EVP_RAND *md); 859623: int EVP_RAND_is_a(const EVP_RAND *rand, const char *name); 859623: const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand); 859623: int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]); 859623: 859623: EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent); 859623: int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx); 859623: void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx); 859623: EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx); 859623: int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]); 859623: int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]); 859623: const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand); 859623: const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand); 859623: const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand); 859623: const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx); 859623: const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx); 859623: 859623: void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_RAND *rand, void *arg), 859623: void *arg); 859623: int EVP_RAND_names_do_all(const EVP_RAND *rand, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: 859623: int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength, 859623: int prediction_resistance, 859623: const unsigned char *pstr, size_t pstr_len, 859623: const OSSL_PARAM params[]); 859623: int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx); 859623: int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out, 859623: size_t outlen, unsigned int strength, 859623: int prediction_resistance, 859623: const unsigned char *addin, size_t addin_len); 859623: int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance, 859623: const unsigned char *ent, size_t ent_len, 859623: const unsigned char *addin, size_t addin_len); 859623: int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen); 859623: int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx); 859623: 859623: int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx); 859623: unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx); 859623: int EVP_RAND_get_state(EVP_RAND_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_PKEY_decrypt_old(unsigned char *dec_key, 859623: const unsigned char *enc_key, 859623: int enc_key_len, 859623: EVP_PKEY *private_key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_PKEY_encrypt_old(unsigned char *enc_key, 859623: const unsigned char *key, 859623: int key_len, EVP_PKEY *pub_key); 859623: 859623: int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name); 859623: int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: int EVP_PKEY_type(int type); 859623: int EVP_PKEY_get_id(const EVP_PKEY *pkey); 859623: 859623: int EVP_PKEY_get_base_id(const EVP_PKEY *pkey); 859623: 859623: int EVP_PKEY_get_bits(const EVP_PKEY *pkey); 859623: 859623: int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey); 859623: 859623: int EVP_PKEY_get_size(const EVP_PKEY *pkey); 859623: 859623: int EVP_PKEY_can_sign(const EVP_PKEY *pkey); 859623: int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); 859623: int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); 859623: int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: void *EVP_PKEY_get0(const EVP_PKEY *pkey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); 859623: 859623: 859623: struct rsa_st; 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); 859623: 859623: 859623: struct dsa_st; 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); 859623: 859623: 859623: 859623: struct dh_st; 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); 859623: 859623: 859623: 859623: struct ec_key_st; 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); 859623: 859623: 859623: 859623: EVP_PKEY *EVP_PKEY_new(void); 859623: int EVP_PKEY_up_ref(EVP_PKEY *pkey); 859623: EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); 859623: void EVP_PKEY_free(EVP_PKEY *pkey); 859623: const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey); 859623: const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key); 859623: 859623: EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, 859623: long length); 859623: int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp); 859623: 859623: 859623: EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, 859623: long length, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, 859623: long length); 859623: EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp, 859623: long length, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, 859623: long length); 859623: int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp); 859623: 859623: int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp); 859623: EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp, 859623: long length); 859623: int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey); 859623: EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in); 859623: 859623: int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); 859623: int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); 859623: int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); 859623: int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b); 859623: int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); 859623: 859623: 859623: int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, 859623: int indent, ASN1_PCTX *pctx); 859623: int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, 859623: int indent, ASN1_PCTX *pctx); 859623: int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, 859623: int indent, ASN1_PCTX *pctx); 859623: 859623: int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey, 859623: int indent, ASN1_PCTX *pctx); 859623: int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey, 859623: int indent, ASN1_PCTX *pctx); 859623: int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey, 859623: int indent, ASN1_PCTX *pctx); 859623: 859623: 859623: int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); 859623: int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey, 859623: char *mdname, size_t mdname_sz); 859623: int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, 859623: const char *name, const char *propq); 859623: # 1510 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, 859623: const unsigned char *pub, size_t publen); 859623: # 1522 "/usr/include/openssl/evp.h" 3 4 859623: size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub); 859623: 859623: 859623: int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 859623: int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 859623: 859623: 859623: int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 859623: int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); 859623: 859623: 859623: int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 859623: ASN1_TYPE *param, const EVP_CIPHER *cipher, 859623: const EVP_MD *md, int en_de); 859623: int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, 859623: ASN1_TYPE *param, const EVP_CIPHER *cipher, 859623: const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, 859623: const unsigned char *salt, int saltlen, int iter, 859623: int keylen, unsigned char *out); 859623: int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, 859623: const unsigned char *salt, int saltlen, int iter, 859623: const EVP_MD *digest, int keylen, unsigned char *out); 859623: int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 859623: ASN1_TYPE *param, const EVP_CIPHER *cipher, 859623: const EVP_MD *md, int en_de); 859623: int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 859623: ASN1_TYPE *param, const EVP_CIPHER *cipher, 859623: const EVP_MD *md, int en_de, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: 859623: int EVP_PBE_scrypt(const char *pass, size_t passlen, 859623: const unsigned char *salt, size_t saltlen, 859623: uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, 859623: unsigned char *key, size_t keylen); 859623: int EVP_PBE_scrypt_ex(const char *pass, size_t passlen, 859623: const unsigned char *salt, size_t saltlen, 859623: uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, 859623: unsigned char *key, size_t keylen, 859623: OSSL_LIB_CTX *ctx, const char *propq); 859623: 859623: int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, 859623: int passlen, ASN1_TYPE *param, 859623: const EVP_CIPHER *c, const EVP_MD *md, int en_de); 859623: int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, 859623: int passlen, ASN1_TYPE *param, 859623: const EVP_CIPHER *c, const EVP_MD *md, int en_de, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: 859623: void PKCS5_PBE_add(void); 859623: 859623: int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, 859623: ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); 859623: 859623: int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, 859623: ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: # 1592 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, 859623: int md_nid, EVP_PBE_KEYGEN *keygen); 859623: int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, 859623: EVP_PBE_KEYGEN *keygen); 859623: int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, 859623: EVP_PBE_KEYGEN **pkeygen); 859623: int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid, 859623: EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex); 859623: void EVP_PBE_cleanup(void); 859623: int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); 859623: # 1618 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_PKEY_asn1_get_count(void); 859623: const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); 859623: const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); 859623: const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, 859623: const char *str, int len); 859623: int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); 859623: int EVP_PKEY_asn1_add_alias(int to, int from); 859623: int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, 859623: int *ppkey_flags, const char **pinfo, 859623: const char **ppem_str, 859623: const EVP_PKEY_ASN1_METHOD *ameth); 859623: 859623: const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); 859623: EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, 859623: const char *pem_str, 859623: const char *info); 859623: void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, 859623: const EVP_PKEY_ASN1_METHOD *src); 859623: void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); 859623: void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*pub_decode) (EVP_PKEY *pk, 859623: const X509_PUBKEY *pub), 859623: int (*pub_encode) (X509_PUBKEY *pub, 859623: const EVP_PKEY *pk), 859623: int (*pub_cmp) (const EVP_PKEY *a, 859623: const EVP_PKEY *b), 859623: int (*pub_print) (BIO *out, 859623: const EVP_PKEY *pkey, 859623: int indent, ASN1_PCTX *pctx), 859623: int (*pkey_size) (const EVP_PKEY *pk), 859623: int (*pkey_bits) (const EVP_PKEY *pk)); 859623: void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*priv_decode) (EVP_PKEY *pk, 859623: const PKCS8_PRIV_KEY_INFO 859623: *p8inf), 859623: int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, 859623: const EVP_PKEY *pk), 859623: int (*priv_print) (BIO *out, 859623: const EVP_PKEY *pkey, 859623: int indent, 859623: ASN1_PCTX *pctx)); 859623: void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*param_decode) (EVP_PKEY *pkey, 859623: const unsigned char **pder, 859623: int derlen), 859623: int (*param_encode) (const EVP_PKEY *pkey, 859623: unsigned char **pder), 859623: int (*param_missing) (const EVP_PKEY *pk), 859623: int (*param_copy) (EVP_PKEY *to, 859623: const EVP_PKEY *from), 859623: int (*param_cmp) (const EVP_PKEY *a, 859623: const EVP_PKEY *b), 859623: int (*param_print) (BIO *out, 859623: const EVP_PKEY *pkey, 859623: int indent, 859623: ASN1_PCTX *pctx)); 859623: 859623: void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, 859623: void (*pkey_free) (EVP_PKEY *pkey)); 859623: void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*pkey_ctrl) (EVP_PKEY *pkey, int op, 859623: long arg1, void *arg2)); 859623: void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*item_verify) (EVP_MD_CTX *ctx, 859623: const ASN1_ITEM *it, 859623: const void *data, 859623: const X509_ALGOR *a, 859623: const ASN1_BIT_STRING *sig, 859623: EVP_PKEY *pkey), 859623: int (*item_sign) (EVP_MD_CTX *ctx, 859623: const ASN1_ITEM *it, 859623: const void *data, 859623: X509_ALGOR *alg1, 859623: X509_ALGOR *alg2, 859623: ASN1_BIT_STRING *sig)); 859623: 859623: void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*siginf_set) (X509_SIG_INFO *siginf, 859623: const X509_ALGOR *alg, 859623: const ASN1_STRING *sig)); 859623: 859623: void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*pkey_check) (const EVP_PKEY *pk)); 859623: 859623: void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*pkey_pub_check) (const EVP_PKEY *pk)); 859623: 859623: void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*pkey_param_check) (const EVP_PKEY *pk)); 859623: 859623: void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*set_priv_key) (EVP_PKEY *pk, 859623: const unsigned char 859623: *priv, 859623: size_t len)); 859623: void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*set_pub_key) (EVP_PKEY *pk, 859623: const unsigned char *pub, 859623: size_t len)); 859623: void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*get_priv_key) (const EVP_PKEY *pk, 859623: unsigned char *priv, 859623: size_t *len)); 859623: void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*get_pub_key) (const EVP_PKEY *pk, 859623: unsigned char *pub, 859623: size_t *len)); 859623: 859623: void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, 859623: int (*pkey_security_bits) (const EVP_PKEY 859623: *pk)); 859623: 859623: int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); 859623: int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: 859623: int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len); 859623: int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id); 859623: int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len); 859623: 859623: int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op); 859623: 859623: const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key); 859623: # 1784 "/usr/include/openssl/evp.h" 3 4 859623: int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, 859623: int keylen); 859623: # 1816 "/usr/include/openssl/evp.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, 859623: const EVP_PKEY_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, 859623: const EVP_PKEY_METHOD *src); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) size_t EVP_PKEY_meth_get_count(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); 859623: 859623: 859623: EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt); 859623: void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt); 859623: const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt); 859623: const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt); 859623: const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt); 859623: int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name); 859623: void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_KEYMGMT *keymgmt, void *arg), 859623: void *arg); 859623: int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt); 859623: const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt); 859623: const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt); 859623: const OSSL_PARAM *EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT *keymgmt); 859623: 859623: EVP_SKEYMGMT *EVP_SKEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT *keymgmt); 859623: void EVP_SKEYMGMT_free(EVP_SKEYMGMT *keymgmt); 859623: const OSSL_PROVIDER *EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT *keymgmt); 859623: const char *EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT *keymgmt); 859623: const char *EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT *keymgmt); 859623: int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT *keymgmt, const char *name); 859623: void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_SKEYMGMT *keymgmt, void *arg), 859623: void *arg); 859623: int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT *keymgmt, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: const OSSL_PARAM *EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT *skeymgmt); 859623: const OSSL_PARAM *EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT *skeymgmt); 859623: 859623: EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); 859623: EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); 859623: EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX *libctx, 859623: const char *name, 859623: const char *propquery); 859623: EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx, 859623: EVP_PKEY *pkey, const char *propquery); 859623: EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx); 859623: void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype); 859623: 859623: int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params); 859623: const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params); 859623: const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx); 859623: 859623: int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX *ctx, const X509_ALGOR *alg); 859623: int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX *ctx, X509_ALGOR *alg); 859623: int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX *ctx, X509_ALGOR **alg); 859623: 859623: int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, 859623: int cmd, int p1, void *p2); 859623: int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, 859623: const char *value); 859623: int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, 859623: int cmd, uint64_t value); 859623: 859623: int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); 859623: int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); 859623: 859623: int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); 859623: 859623: int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); 859623: void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); 859623: 859623: EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, 859623: const unsigned char *key, int keylen); 859623: EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, 859623: const char *keytype, 859623: const char *propq, 859623: const unsigned char *priv, size_t len); 859623: EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, 859623: const unsigned char *priv, 859623: size_t len); 859623: EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, 859623: const char *keytype, const char *propq, 859623: const unsigned char *pub, size_t len); 859623: EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, 859623: const unsigned char *pub, 859623: size_t len); 859623: int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, 859623: size_t *len); 859623: int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, 859623: size_t *len); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, 859623: size_t len, const EVP_CIPHER *cipher); 859623: 859623: 859623: void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); 859623: void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx); 859623: EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); 859623: 859623: EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); 859623: 859623: void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); 859623: void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); 859623: 859623: int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX *pctx, 859623: const unsigned char *sig, size_t siglen); 859623: 859623: void EVP_SIGNATURE_free(EVP_SIGNATURE *signature); 859623: int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature); 859623: OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature); 859623: EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name); 859623: const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature); 859623: const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature); 859623: void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_SIGNATURE *signature, 859623: void *data), 859623: void *data); 859623: int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig); 859623: const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig); 859623: 859623: void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher); 859623: int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher); 859623: OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher); 859623: EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name); 859623: const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher); 859623: const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher); 859623: void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_ASYM_CIPHER *cipher, 859623: void *arg), 859623: void *arg); 859623: int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); 859623: const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); 859623: 859623: void EVP_KEM_free(EVP_KEM *wrap); 859623: int EVP_KEM_up_ref(EVP_KEM *wrap); 859623: OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap); 859623: EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name); 859623: const char *EVP_KEM_get0_name(const EVP_KEM *wrap); 859623: const char *EVP_KEM_get0_description(const EVP_KEM *wrap); 859623: void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_KEM *wrap, void *arg), void *arg); 859623: int EVP_KEM_names_do_all(const EVP_KEM *wrap, 859623: void (*fn)(const char *name, void *data), void *data); 859623: const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem); 859623: const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); 859623: 859623: int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX *ctx, 859623: EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 859623: int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, 859623: unsigned char *sig, size_t *siglen, 859623: const unsigned char *tbs, size_t tbslen); 859623: int EVP_PKEY_sign_message_init(EVP_PKEY_CTX *ctx, 859623: EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 859623: int EVP_PKEY_sign_message_update(EVP_PKEY_CTX *ctx, 859623: const unsigned char *in, size_t inlen); 859623: int EVP_PKEY_sign_message_final(EVP_PKEY_CTX *ctx, 859623: unsigned char *sig, size_t *siglen); 859623: int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX *ctx, 859623: EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 859623: int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, 859623: const unsigned char *sig, size_t siglen, 859623: const unsigned char *tbs, size_t tbslen); 859623: int EVP_PKEY_verify_message_init(EVP_PKEY_CTX *ctx, 859623: EVP_SIGNATURE *algo, const OSSL_PARAM params[]); 859623: int EVP_PKEY_verify_message_update(EVP_PKEY_CTX *ctx, 859623: const unsigned char *in, size_t inlen); 859623: int EVP_PKEY_verify_message_final(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx, 859623: const OSSL_PARAM params[]); 859623: int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX *ctx, 859623: EVP_SIGNATURE *algo, 859623: const OSSL_PARAM params[]); 859623: int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, 859623: unsigned char *rout, size_t *routlen, 859623: const unsigned char *sig, size_t siglen); 859623: int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, 859623: unsigned char *out, size_t *outlen, 859623: const unsigned char *in, size_t inlen); 859623: int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, 859623: unsigned char *out, size_t *outlen, 859623: const unsigned char *in, size_t inlen); 859623: 859623: int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, 859623: int validate_peer); 859623: int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); 859623: int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); 859623: 859623: int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, 859623: const OSSL_PARAM params[]); 859623: int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, 859623: unsigned char *wrappedkey, size_t *wrappedkeylen, 859623: unsigned char *genkey, size_t *genkeylen); 859623: int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); 859623: int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, 859623: const OSSL_PARAM params[]); 859623: int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, 859623: unsigned char *unwrapped, size_t *unwrappedlen, 859623: const unsigned char *wrapped, size_t wrappedlen); 859623: typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); 859623: 859623: int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, 859623: OSSL_PARAM param[]); 859623: const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection); 859623: 859623: int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params); 859623: int EVP_PKEY_export(const EVP_PKEY *pkey, int selection, 859623: OSSL_CALLBACK *export_cb, void *export_cbarg); 859623: 859623: const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey); 859623: int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]); 859623: int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name, 859623: int *out); 859623: int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name, 859623: size_t *out); 859623: int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name, 859623: BIGNUM **bn); 859623: int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name, 859623: char *str, size_t max_buf_sz, size_t *out_sz); 859623: int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name, 859623: unsigned char *buf, size_t max_buf_sz, 859623: size_t *out_sz); 859623: 859623: const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey); 859623: int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]); 859623: int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in); 859623: int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in); 859623: int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name, 859623: const BIGNUM *bn); 859623: int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name, 859623: const char *str); 859623: int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name, 859623: const unsigned char *buf, size_t bsize); 859623: 859623: int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey); 859623: int EVP_PKEY_get_field_type(const EVP_PKEY *pkey); 859623: 859623: EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq, 859623: const char *type, ...); 859623: int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 859623: int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 859623: int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); 859623: int EVP_PKEY_check(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx); 859623: 859623: 859623: 859623: int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg); 859623: void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx); 859623: 859623: void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); 859623: EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); 859623: 859623: int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, 859623: int (*init) (EVP_PKEY_CTX *ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_copy 859623: (EVP_PKEY_METHOD *pmeth, int (*copy) (EVP_PKEY_CTX *dst, 859623: const EVP_PKEY_CTX *src)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_cleanup 859623: (EVP_PKEY_METHOD *pmeth, void (*cleanup) (EVP_PKEY_CTX *ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_paramgen 859623: (EVP_PKEY_METHOD *pmeth, int (*paramgen_init) (EVP_PKEY_CTX *ctx), 859623: int (*paramgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_keygen 859623: (EVP_PKEY_METHOD *pmeth, int (*keygen_init) (EVP_PKEY_CTX *ctx), 859623: int (*keygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_sign 859623: (EVP_PKEY_METHOD *pmeth, int (*sign_init) (EVP_PKEY_CTX *ctx), 859623: int (*sign) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 859623: const unsigned char *tbs, size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_verify 859623: (EVP_PKEY_METHOD *pmeth, int (*verify_init) (EVP_PKEY_CTX *ctx), 859623: int (*verify) (EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, 859623: const unsigned char *tbs, size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_verify_recover 859623: (EVP_PKEY_METHOD *pmeth, int (*verify_recover_init) (EVP_PKEY_CTX *ctx), 859623: int (*verify_recover) (EVP_PKEY_CTX *ctx, unsigned char *sig, 859623: size_t *siglen, const unsigned char *tbs, 859623: size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_signctx 859623: (EVP_PKEY_METHOD *pmeth, int (*signctx_init) (EVP_PKEY_CTX *ctx, 859623: EVP_MD_CTX *mctx), 859623: int (*signctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 859623: EVP_MD_CTX *mctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_verifyctx 859623: (EVP_PKEY_METHOD *pmeth, int (*verifyctx_init) (EVP_PKEY_CTX *ctx, 859623: EVP_MD_CTX *mctx), 859623: int (*verifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, 859623: EVP_MD_CTX *mctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_encrypt 859623: (EVP_PKEY_METHOD *pmeth, int (*encrypt_init) (EVP_PKEY_CTX *ctx), 859623: int (*encryptfn) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 859623: const unsigned char *in, size_t inlen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_decrypt 859623: (EVP_PKEY_METHOD *pmeth, int (*decrypt_init) (EVP_PKEY_CTX *ctx), 859623: int (*decrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 859623: const unsigned char *in, size_t inlen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_derive 859623: (EVP_PKEY_METHOD *pmeth, int (*derive_init) (EVP_PKEY_CTX *ctx), 859623: int (*derive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_ctrl 859623: (EVP_PKEY_METHOD *pmeth, int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, 859623: void *p2), 859623: int (*ctrl_str) (EVP_PKEY_CTX *ctx, const char *type, const char *value)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_digestsign 859623: (EVP_PKEY_METHOD *pmeth, 859623: int (*digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, 859623: const unsigned char *tbs, size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_digestverify 859623: (EVP_PKEY_METHOD *pmeth, 859623: int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, 859623: size_t siglen, const unsigned char *tbs, 859623: size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_check 859623: (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_public_check 859623: (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_param_check 859623: (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_set_digest_custom 859623: (EVP_PKEY_METHOD *pmeth, int (*digest_custom) (EVP_PKEY_CTX *ctx, 859623: EVP_MD_CTX *mctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_init 859623: (const EVP_PKEY_METHOD *pmeth, int (**pinit) (EVP_PKEY_CTX *ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_copy 859623: (const EVP_PKEY_METHOD *pmeth, int (**pcopy) (EVP_PKEY_CTX *dst, 859623: const EVP_PKEY_CTX *src)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_cleanup 859623: (const EVP_PKEY_METHOD *pmeth, void (**pcleanup) (EVP_PKEY_CTX *ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_paramgen 859623: (const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init) (EVP_PKEY_CTX *ctx), 859623: int (**pparamgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_keygen 859623: (const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init) (EVP_PKEY_CTX *ctx), 859623: int (**pkeygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_sign 859623: (const EVP_PKEY_METHOD *pmeth, int (**psign_init) (EVP_PKEY_CTX *ctx), 859623: int (**psign) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 859623: const unsigned char *tbs, size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_verify 859623: (const EVP_PKEY_METHOD *pmeth, int (**pverify_init) (EVP_PKEY_CTX *ctx), 859623: int (**pverify) (EVP_PKEY_CTX *ctx, const unsigned char *sig, 859623: size_t siglen, const unsigned char *tbs, size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_verify_recover 859623: (const EVP_PKEY_METHOD *pmeth, 859623: int (**pverify_recover_init) (EVP_PKEY_CTX *ctx), 859623: int (**pverify_recover) (EVP_PKEY_CTX *ctx, unsigned char *sig, 859623: size_t *siglen, const unsigned char *tbs, 859623: size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_signctx 859623: (const EVP_PKEY_METHOD *pmeth, 859623: int (**psignctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), 859623: int (**psignctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, 859623: EVP_MD_CTX *mctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_verifyctx 859623: (const EVP_PKEY_METHOD *pmeth, 859623: int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), 859623: int (**pverifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig, 859623: int siglen, EVP_MD_CTX *mctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_encrypt 859623: (const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init) (EVP_PKEY_CTX *ctx), 859623: int (**pencryptfn) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 859623: const unsigned char *in, size_t inlen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_decrypt 859623: (const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), 859623: int (**pdecrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, 859623: const unsigned char *in, size_t inlen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_derive 859623: (const EVP_PKEY_METHOD *pmeth, int (**pderive_init) (EVP_PKEY_CTX *ctx), 859623: int (**pderive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_ctrl 859623: (const EVP_PKEY_METHOD *pmeth, 859623: int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, void *p2), 859623: int (**pctrl_str) (EVP_PKEY_CTX *ctx, const char *type, 859623: const char *value)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_digestsign 859623: (const EVP_PKEY_METHOD *pmeth, 859623: int (**digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, 859623: const unsigned char *tbs, size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_digestverify 859623: (const EVP_PKEY_METHOD *pmeth, 859623: int (**digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, 859623: size_t siglen, const unsigned char *tbs, 859623: size_t tbslen)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_check 859623: (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_public_check 859623: (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_param_check 859623: (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EVP_PKEY_meth_get_digest_custom 859623: (const EVP_PKEY_METHOD *pmeth, 859623: int (**pdigest_custom) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); 859623: 859623: 859623: void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange); 859623: int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange); 859623: EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, 859623: const char *properties); 859623: OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange); 859623: int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name); 859623: const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch); 859623: const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch); 859623: void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx, 859623: void (*fn)(EVP_KEYEXCH *keyexch, void *data), 859623: void *data); 859623: int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch, 859623: void (*fn)(const char *name, void *data), 859623: void *data); 859623: const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch); 859623: const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch); 859623: 859623: void EVP_add_alg_module(void); 859623: 859623: int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name); 859623: int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen); 859623: int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz, 859623: size_t *gname_len); 859623: 859623: OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx); 859623: const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx); 859623: const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx); 859623: 859623: int EVP_SKEY_is_a(const EVP_SKEY *skey, const char *name); 859623: EVP_SKEY *EVP_SKEY_import(OSSL_LIB_CTX *libctx, const char *skeymgmtname, const char *propquery, 859623: int selection, const OSSL_PARAM *params); 859623: EVP_SKEY *EVP_SKEY_generate(OSSL_LIB_CTX *libctx, const char *skeymgmtname, 859623: const char *propquery, const OSSL_PARAM *params); 859623: EVP_SKEY *EVP_SKEY_import_raw_key(OSSL_LIB_CTX *libctx, const char *skeymgmtname, 859623: unsigned char *key, size_t keylen, 859623: const char *propquery); 859623: int EVP_SKEY_get0_raw_key(const EVP_SKEY *skey, const unsigned char **key, 859623: size_t *len); 859623: const char *EVP_SKEY_get0_key_id(const EVP_SKEY *skey); 859623: int EVP_SKEY_export(const EVP_SKEY *skey, int selection, 859623: OSSL_CALLBACK *export_cb, void *export_cbarg); 859623: int EVP_SKEY_up_ref(EVP_SKEY *skey); 859623: void EVP_SKEY_free(EVP_SKEY *skey); 859623: const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey); 859623: const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey); 859623: EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx, 859623: OSSL_PROVIDER *prov, const char *propquery); 859623: 859623: 859623: } 859623: # 30 "/usr/include/openssl/x509.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/ec.h" 1 3 4 859623: # 13 "/usr/include/openssl/ec.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 22 "/usr/include/openssl/ec.h" 2 3 4 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid); 859623: int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc); 859623: int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode); 859623: int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx); 859623: 859623: int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); 859623: int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx); 859623: 859623: int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); 859623: 859623: int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); 859623: int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); 859623: 859623: int EVP_PKEY_CTX_set0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, 859623: int len); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_CTX_get0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); 859623: # 78 "/usr/include/openssl/ec.h" 3 4 859623: typedef enum { 859623: 859623: 859623: POINT_CONVERSION_COMPRESSED = 2, 859623: 859623: POINT_CONVERSION_UNCOMPRESSED = 4, 859623: 859623: 859623: POINT_CONVERSION_HYBRID = 6 859623: } point_conversion_form_t; 859623: 859623: const char *OSSL_EC_curve_nid2name(int nid); 859623: # 100 "/usr/include/openssl/ec.h" 3 4 859623: # 1 "/usr/include/openssl/ecerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/ecerr.h" 3 4 859623: 859623: # 101 "/usr/include/openssl/ec.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef struct ec_method_st EC_METHOD; 859623: 859623: typedef struct ec_group_st EC_GROUP; 859623: typedef struct ec_point_st EC_POINT; 859623: typedef struct ecpk_parameters_st ECPKPARAMETERS; 859623: typedef struct ec_parameters_st ECPARAMETERS; 859623: # 124 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_METHOD *EC_GFp_simple_method(void); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_METHOD *EC_GFp_mont_method(void); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_METHOD *EC_GFp_nist_method(void); 859623: # 161 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_METHOD *EC_GF2m_simple_method(void); 859623: # 174 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_GROUP_clear_free(EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_METHOD_get_field_type(const EC_METHOD *meth); 859623: 859623: 859623: 859623: 859623: 859623: void EC_GROUP_free(EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); 859623: 859623: 859623: 859623: 859623: 859623: 859623: EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); 859623: # 221 "/usr/include/openssl/ec.h" 3 4 859623: int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, 859623: const BIGNUM *order, const BIGNUM *cofactor); 859623: 859623: 859623: 859623: 859623: 859623: const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_order_bits(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, 859623: BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_get_curve_name(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_get_field_type(const EC_GROUP *group); 859623: 859623: void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); 859623: int EC_GROUP_get_asn1_flag(const EC_GROUP *group); 859623: 859623: void EC_GROUP_set_point_conversion_form(EC_GROUP *group, 859623: point_conversion_form_t form); 859623: point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); 859623: 859623: unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); 859623: size_t EC_GROUP_get_seed_len(const EC_GROUP *); 859623: size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); 859623: # 316 "/usr/include/openssl/ec.h" 3 4 859623: int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, 859623: const BIGNUM *b, BN_CTX *ctx); 859623: # 329 "/usr/include/openssl/ec.h" 3 4 859623: int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, 859623: BN_CTX *ctx); 859623: # 342 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_GROUP_set_curve_GFp(EC_GROUP *group, 859623: const BIGNUM *p, 859623: const BIGNUM *a, 859623: const BIGNUM *b, 859623: BN_CTX *ctx); 859623: # 357 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_GROUP_get_curve_GFp(const EC_GROUP *group, 859623: BIGNUM *p, 859623: BIGNUM *a, BIGNUM *b, 859623: BN_CTX *ctx); 859623: # 372 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_GROUP_set_curve_GF2m(EC_GROUP *group, 859623: const BIGNUM *p, 859623: const BIGNUM *a, 859623: const BIGNUM *b, 859623: BN_CTX *ctx); 859623: # 387 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, 859623: BIGNUM *p, 859623: BIGNUM *a, BIGNUM *b, 859623: BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_get_degree(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); 859623: # 435 "/usr/include/openssl/ec.h" 3 4 859623: EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, 859623: const BIGNUM *b, BN_CTX *ctx); 859623: # 446 "/usr/include/openssl/ec.h" 3 4 859623: EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, 859623: const BIGNUM *b, BN_CTX *ctx); 859623: # 460 "/usr/include/openssl/ec.h" 3 4 859623: EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: # 476 "/usr/include/openssl/ec.h" 3 4 859623: OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, 859623: const char *propq, BN_CTX *bnctx); 859623: # 488 "/usr/include/openssl/ec.h" 3 4 859623: EC_GROUP *EC_GROUP_new_by_curve_name_ex(OSSL_LIB_CTX *libctx, const char *propq, 859623: int nid); 859623: # 499 "/usr/include/openssl/ec.h" 3 4 859623: EC_GROUP *EC_GROUP_new_by_curve_name(int nid); 859623: 859623: 859623: 859623: 859623: 859623: 859623: EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, 859623: ECPARAMETERS *params); 859623: 859623: 859623: 859623: 859623: 859623: 859623: EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, 859623: ECPKPARAMETERS *params); 859623: 859623: 859623: 859623: 859623: 859623: typedef struct { 859623: int nid; 859623: const char *comment; 859623: } EC_builtin_curve; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); 859623: 859623: const char *EC_curve_nid2nist(int nid); 859623: int EC_curve_nist2nid(const char *name); 859623: int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only, 859623: BN_CTX *ctx); 859623: # 563 "/usr/include/openssl/ec.h" 3 4 859623: EC_POINT *EC_POINT_new(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: void EC_POINT_free(EC_POINT *point); 859623: 859623: 859623: 859623: 859623: void EC_POINT_clear_free(EC_POINT *point); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); 859623: # 613 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_set_Jprojective_coordinates_GFp 859623: (const EC_GROUP *group, EC_POINT *p, 859623: const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, 859623: BN_CTX *ctx); 859623: # 627 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_get_Jprojective_coordinates_GFp 859623: (const EC_GROUP *group, const EC_POINT *p, 859623: BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); 859623: # 640 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, 859623: const BIGNUM *x, const BIGNUM *y, 859623: BN_CTX *ctx); 859623: # 652 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, 859623: BIGNUM *x, BIGNUM *y, BN_CTX *ctx); 859623: # 665 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_set_affine_coordinates_GFp 859623: (const EC_GROUP *group, EC_POINT *p, 859623: const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); 859623: # 678 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_get_affine_coordinates_GFp 859623: (const EC_GROUP *group, const EC_POINT *p, 859623: BIGNUM *x, BIGNUM *y, BN_CTX *ctx); 859623: # 691 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, 859623: const BIGNUM *x, int y_bit, 859623: BN_CTX *ctx); 859623: # 705 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_set_compressed_coordinates_GFp 859623: (const EC_GROUP *group, EC_POINT *p, 859623: const BIGNUM *x, int y_bit, BN_CTX *ctx); 859623: # 718 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_set_affine_coordinates_GF2m 859623: (const EC_GROUP *group, EC_POINT *p, 859623: const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); 859623: # 731 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_get_affine_coordinates_GF2m 859623: (const EC_GROUP *group, const EC_POINT *p, 859623: BIGNUM *x, BIGNUM *y, BN_CTX *ctx); 859623: # 744 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_set_compressed_coordinates_GF2m 859623: (const EC_GROUP *group, EC_POINT *p, 859623: const BIGNUM *x, int y_bit, BN_CTX *ctx); 859623: # 760 "/usr/include/openssl/ec.h" 3 4 859623: size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, 859623: point_conversion_form_t form, 859623: unsigned char *buf, size_t len, BN_CTX *ctx); 859623: # 772 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, 859623: const unsigned char *buf, size_t len, BN_CTX *ctx); 859623: # 783 "/usr/include/openssl/ec.h" 3 4 859623: size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, 859623: point_conversion_form_t form, 859623: unsigned char **pbuf, BN_CTX *ctx); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) BIGNUM *EC_POINT_point2bn(const EC_GROUP *, 859623: const EC_POINT *, 859623: point_conversion_form_t form, 859623: BIGNUM *, BN_CTX *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_POINT *EC_POINT_bn2point(const EC_GROUP *, 859623: const BIGNUM *, 859623: EC_POINT *, BN_CTX *); 859623: 859623: 859623: char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, 859623: point_conversion_form_t form, BN_CTX *); 859623: EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, 859623: EC_POINT *, BN_CTX *); 859623: # 815 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, 859623: const EC_POINT *b, BN_CTX *ctx); 859623: # 825 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, 859623: BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, 859623: BN_CTX *ctx); 859623: # 859 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, 859623: BN_CTX *ctx); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINT_make_affine(const EC_GROUP *group, 859623: EC_POINT *point, BN_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, 859623: EC_POINT *points[], BN_CTX *ctx); 859623: # 878 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, 859623: const BIGNUM *n, size_t num, 859623: const EC_POINT *p[], const BIGNUM *m[], 859623: BN_CTX *ctx); 859623: # 893 "/usr/include/openssl/ec.h" 3 4 859623: int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, 859623: const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_GROUP_have_precompute_mult(const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern const ASN1_ITEM * ECPKPARAMETERS_it(void); 859623: extern ECPKPARAMETERS *ECPKPARAMETERS_new(void); extern void ECPKPARAMETERS_free(ECPKPARAMETERS *a); 859623: extern const ASN1_ITEM * ECPARAMETERS_it(void); 859623: extern ECPARAMETERS *ECPARAMETERS_new(void); extern void ECPARAMETERS_free(ECPARAMETERS *a); 859623: 859623: 859623: 859623: 859623: 859623: int EC_GROUP_get_basis_type(const EC_GROUP *); 859623: 859623: int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); 859623: int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, 859623: unsigned int *k2, unsigned int *k3); 859623: 859623: 859623: EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); 859623: int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); 859623: # 945 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECPKParameters_print(BIO *bp, const EC_GROUP *x, 859623: int off); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, 859623: int off); 859623: # 980 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *EC_KEY_new(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_get_flags(const EC_KEY *key); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_set_flags(EC_KEY *key, int flags); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_clear_flags(EC_KEY *key, int flags); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); 859623: # 1006 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, 859623: const char *propq, 859623: int nid); 859623: # 1017 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *EC_KEY_new_by_curve_name(int nid); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_free(EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *EC_KEY_dup(const EC_KEY *src); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_up_ref(EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) unsigned EC_KEY_get_enc_flags(const EC_KEY *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_set_conv_form(EC_KEY *eckey, 859623: point_conversion_form_t cform); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_generate_key(EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_check_key(const EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_can_sign(const EC_KEY *eckey); 859623: # 1141 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, 859623: BIGNUM *x, 859623: BIGNUM *y); 859623: # 1152 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) size_t EC_KEY_key2buf(const EC_KEY *key, 859623: point_conversion_form_t form, 859623: unsigned char **pbuf, BN_CTX *ctx); 859623: # 1164 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, 859623: size_t len, BN_CTX *ctx); 859623: # 1174 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, 859623: size_t len); 859623: # 1185 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) size_t EC_KEY_priv2oct(const EC_KEY *key, 859623: unsigned char *buf, size_t len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) size_t EC_KEY_priv2buf(const EC_KEY *eckey, 859623: unsigned char **pbuf); 859623: # 1206 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *d2i_ECPrivateKey(EC_KEY **key, 859623: const unsigned char **in, 859623: long len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_ECPrivateKey(const EC_KEY *key, 859623: unsigned char **out); 859623: # 1230 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *d2i_ECParameters(EC_KEY **key, 859623: const unsigned char **in, 859623: long len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_ECParameters(const EC_KEY *key, 859623: unsigned char **out); 859623: # 1255 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *o2i_ECPublicKey(EC_KEY **key, 859623: const unsigned char **in, long len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECParameters_print(BIO *bp, const EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECParameters_print_fp(FILE *fp, const EC_KEY *key); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_KEY_METHOD *EC_KEY_OpenSSL(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_KEY_METHOD *EC_KEY_get_default_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *EC_KEY_new_method(ENGINE *engine); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, 859623: const unsigned char *Z, size_t Zlen, 859623: const unsigned char *sinfo, 859623: size_t sinfolen, const EVP_MD *md); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDH_compute_key(void *out, size_t outlen, 859623: const EC_POINT *pub_key, 859623: const EC_KEY *ecdh, 859623: void *(*KDF)(const void *in, 859623: size_t inlen, void *out, 859623: size_t *outlen)); 859623: 859623: 859623: typedef struct ECDSA_SIG_st ECDSA_SIG; 859623: 859623: 859623: 859623: 859623: ECDSA_SIG *ECDSA_SIG_new(void); 859623: 859623: 859623: 859623: 859623: void ECDSA_SIG_free(ECDSA_SIG *sig); 859623: # 1342 "/usr/include/openssl/ec.h" 3 4 859623: extern ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **a, const unsigned char **in, long len); extern int i2d_ECDSA_SIG(const ECDSA_SIG *a, unsigned char **out); 859623: # 1357 "/usr/include/openssl/ec.h" 3 4 859623: void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); 859623: 859623: 859623: 859623: 859623: const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); 859623: 859623: 859623: 859623: 859623: const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); 859623: # 1384 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, 859623: int dgst_len, EC_KEY *eckey); 859623: # 1397 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, 859623: int dgstlen, const BIGNUM *kinv, 859623: const BIGNUM *rp, EC_KEY *eckey); 859623: # 1410 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, 859623: const ECDSA_SIG *sig, EC_KEY *eckey); 859623: # 1420 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, 859623: BIGNUM **kinv, BIGNUM **rp); 859623: # 1433 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDSA_sign(int type, const unsigned char *dgst, 859623: int dgstlen, unsigned char *sig, 859623: unsigned int *siglen, EC_KEY *eckey); 859623: # 1450 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDSA_sign_ex(int type, const unsigned char *dgst, 859623: int dgstlen, unsigned char *sig, 859623: unsigned int *siglen, const BIGNUM *kinv, 859623: const BIGNUM *rp, EC_KEY *eckey); 859623: # 1466 "/usr/include/openssl/ec.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDSA_verify(int type, const unsigned char *dgst, 859623: int dgstlen, const unsigned char *sig, 859623: int siglen, EC_KEY *eckey); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ECDSA_size(const EC_KEY *eckey); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_set_init 859623: (EC_KEY_METHOD *meth, 859623: int (*init)(EC_KEY *key), 859623: void (*finish)(EC_KEY *key), 859623: int (*copy)(EC_KEY *dest, const EC_KEY *src), 859623: int (*set_group)(EC_KEY *key, const EC_GROUP *grp), 859623: int (*set_private)(EC_KEY *key, const BIGNUM *priv_key), 859623: int (*set_public)(EC_KEY *key, const EC_POINT *pub_key)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, 859623: int (*keygen)(EC_KEY *key)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_set_compute_key 859623: (EC_KEY_METHOD *meth, 859623: int (*ckey)(unsigned char **psec, size_t *pseclen, 859623: const EC_POINT *pub_key, const EC_KEY *ecdh)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_set_sign 859623: (EC_KEY_METHOD *meth, 859623: int (*sign)(int type, const unsigned char *dgst, 859623: int dlen, unsigned char *sig, 859623: unsigned int *siglen, 859623: const BIGNUM *kinv, const BIGNUM *r, 859623: EC_KEY *eckey), 859623: int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, 859623: BIGNUM **kinvp, BIGNUM **rp), 859623: ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, 859623: int dgst_len, 859623: const BIGNUM *in_kinv, 859623: const BIGNUM *in_r, 859623: EC_KEY *eckey)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_set_verify 859623: (EC_KEY_METHOD *meth, 859623: int (*verify)(int type, const unsigned 859623: char *dgst, int dgst_len, 859623: const unsigned char *sigbuf, 859623: int sig_len, EC_KEY *eckey), 859623: int (*verify_sig)(const unsigned char *dgst, 859623: int dgst_len, const ECDSA_SIG *sig, 859623: EC_KEY *eckey)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_get_init 859623: (const EC_KEY_METHOD *meth, 859623: int (**pinit)(EC_KEY *key), 859623: void (**pfinish)(EC_KEY *key), 859623: int (**pcopy)(EC_KEY *dest, const EC_KEY *src), 859623: int (**pset_group)(EC_KEY *key, const EC_GROUP *grp), 859623: int (**pset_private)(EC_KEY *key, const BIGNUM *priv_key), 859623: int (**pset_public)(EC_KEY *key, const EC_POINT *pub_key)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_get_keygen 859623: (const EC_KEY_METHOD *meth, int (**pkeygen)(EC_KEY *key)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_get_compute_key 859623: (const EC_KEY_METHOD *meth, 859623: int (**pck)(unsigned char **psec, 859623: size_t *pseclen, 859623: const EC_POINT *pub_key, 859623: const EC_KEY *ecdh)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_get_sign 859623: (const EC_KEY_METHOD *meth, 859623: int (**psign)(int type, const unsigned char *dgst, 859623: int dlen, unsigned char *sig, 859623: unsigned int *siglen, 859623: const BIGNUM *kinv, const BIGNUM *r, 859623: EC_KEY *eckey), 859623: int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, 859623: BIGNUM **kinvp, BIGNUM **rp), 859623: ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, 859623: int dgst_len, 859623: const BIGNUM *in_kinv, 859623: const BIGNUM *in_r, 859623: EC_KEY *eckey)); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void EC_KEY_METHOD_get_verify 859623: (const EC_KEY_METHOD *meth, 859623: int (**pverify)(int type, const unsigned 859623: char *dgst, int dgst_len, 859623: const unsigned char *sigbuf, 859623: int sig_len, EC_KEY *eckey), 859623: int (**pverify_sig)(const unsigned char *dgst, 859623: int dgst_len, 859623: const ECDSA_SIG *sig, 859623: EC_KEY *eckey)); 859623: # 1586 "/usr/include/openssl/ec.h" 3 4 859623: } 859623: # 34 "/usr/include/openssl/x509.h" 2 3 4 859623: 859623: 859623: # 1 "/usr/include/openssl/rsa.h" 1 3 4 859623: # 12 "/usr/include/openssl/rsa.h" 3 4 859623: 859623: # 24 "/usr/include/openssl/rsa.h" 3 4 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 25 "/usr/include/openssl/rsa.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/rsaerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/rsaerr.h" 3 4 859623: 859623: # 29 "/usr/include/openssl/rsa.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: # 122 "/usr/include/openssl/rsa.h" 3 4 859623: int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); 859623: int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); 859623: 859623: int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); 859623: int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); 859623: 859623: int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); 859623: int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); 859623: int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); 859623: int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); 859623: # 149 "/usr/include/openssl/rsa.h" 3 4 859623: int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, 859623: const char *mdprops); 859623: int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); 859623: int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, 859623: size_t namelen); 859623: int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, 859623: const char *mdname); 859623: 859623: int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, 859623: const char *mdname, 859623: const char *mdprops); 859623: 859623: int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, 859623: const char *mdprops); 859623: int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); 859623: int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, 859623: size_t namelen); 859623: int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); 859623: int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); 859623: # 212 "/usr/include/openssl/rsa.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *RSA_new(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *RSA_new_method(ENGINE *engine); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_bits(const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_size(const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_security_bits(const RSA *rsa); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_set0_crt_params(RSA *r, 859623: BIGNUM *dmp1, BIGNUM *dmq1, 859623: BIGNUM *iqmp); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_set0_multi_prime_params(RSA *r, 859623: BIGNUM *primes[], 859623: BIGNUM *exps[], 859623: BIGNUM *coeffs[], 859623: int pnum); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_get0_key(const RSA *r, 859623: const BIGNUM **n, const BIGNUM **e, 859623: const BIGNUM **d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_get0_factors(const RSA *r, 859623: const BIGNUM **p, const BIGNUM **q); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_get_multi_prime_extra_count(const RSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_get0_multi_prime_factors(const RSA *r, 859623: const BIGNUM *primes[]); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_get0_crt_params(const RSA *r, 859623: const BIGNUM **dmp1, 859623: const BIGNUM **dmq1, 859623: const BIGNUM **iqmp); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], 859623: const BIGNUM *coeffs[]); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_n(const RSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_e(const RSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_d(const RSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_p(const RSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_q(const RSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_dmp1(const RSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_dmq1(const RSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *RSA_get0_iqmp(const RSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_clear_flags(RSA *r, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_test_flags(const RSA *r, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_set_flags(RSA *r, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_get_version(RSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) ENGINE *RSA_get0_engine(const RSA *r); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) RSA *RSA_generate_key(int bits, unsigned long e, void 859623: (*callback) (int, int, void *), 859623: void *cb_arg); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, 859623: BN_GENCB *cb); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_generate_multi_prime_key(RSA *rsa, int bits, 859623: int primes, BIGNUM *e, 859623: BN_GENCB *cb); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, 859623: BIGNUM *q1, BIGNUM *q2, 859623: const BIGNUM *Xp1, const BIGNUM *Xp2, 859623: const BIGNUM *Xp, const BIGNUM *Xq1, 859623: const BIGNUM *Xq2, const BIGNUM *Xq, 859623: const BIGNUM *e, BN_GENCB *cb); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_X931_generate_key_ex(RSA *rsa, int bits, 859623: const BIGNUM *e, 859623: BN_GENCB *cb); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_check_key(const RSA *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_check_key_ex(const RSA *, BN_GENCB *cb); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_free(RSA *r); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_up_ref(RSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_flags(const RSA *r); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_set_default_method(const RSA_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const RSA_METHOD *RSA_get_default_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const RSA_METHOD *RSA_null_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const RSA_METHOD *RSA_get_method(const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const RSA_METHOD *RSA_PKCS1_OpenSSL(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSAPublicKey(RSA **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSAPublicKey(const RSA *a, unsigned char **out); __attribute__((deprecated("Since OpenSSL " "3.0"))) const ASN1_ITEM * RSAPublicKey_it(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSAPrivateKey(RSA **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSAPrivateKey(const RSA *a, unsigned char **out); __attribute__((deprecated("Since OpenSSL " "3.0"))) const ASN1_ITEM * RSAPrivateKey_it(void); 859623: 859623: 859623: 859623: int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); 859623: 859623: struct rsa_pss_params_st { 859623: X509_ALGOR *hashAlgorithm; 859623: X509_ALGOR *maskGenAlgorithm; 859623: ASN1_INTEGER *saltLength; 859623: ASN1_INTEGER *trailerField; 859623: 859623: X509_ALGOR *maskHash; 859623: }; 859623: 859623: extern RSA_PSS_PARAMS *RSA_PSS_PARAMS_new(void); extern void RSA_PSS_PARAMS_free(RSA_PSS_PARAMS *a); extern RSA_PSS_PARAMS *d2i_RSA_PSS_PARAMS(RSA_PSS_PARAMS **a, const unsigned char **in, long len); extern int i2d_RSA_PSS_PARAMS(const RSA_PSS_PARAMS *a, unsigned char **out); extern const ASN1_ITEM * RSA_PSS_PARAMS_it(void); 859623: extern RSA_PSS_PARAMS *RSA_PSS_PARAMS_dup(const RSA_PSS_PARAMS *a); 859623: 859623: typedef struct rsa_oaep_params_st { 859623: X509_ALGOR *hashFunc; 859623: X509_ALGOR *maskGenFunc; 859623: X509_ALGOR *pSourceFunc; 859623: 859623: X509_ALGOR *maskHash; 859623: } RSA_OAEP_PARAMS; 859623: 859623: extern RSA_OAEP_PARAMS *RSA_OAEP_PARAMS_new(void); extern void RSA_OAEP_PARAMS_free(RSA_OAEP_PARAMS *a); extern RSA_OAEP_PARAMS *d2i_RSA_OAEP_PARAMS(RSA_OAEP_PARAMS **a, const unsigned char **in, long len); extern int i2d_RSA_OAEP_PARAMS(const RSA_OAEP_PARAMS *a, unsigned char **out); extern const ASN1_ITEM * RSA_OAEP_PARAMS_it(void); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_print_fp(FILE *fp, const RSA *r, int offset); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_print(BIO *bp, const RSA *r, int offset); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_sign(int type, const unsigned char *m, 859623: unsigned int m_length, unsigned char *sigret, 859623: unsigned int *siglen, RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_verify(int type, const unsigned char *m, 859623: unsigned int m_length, 859623: const unsigned char *sigbuf, 859623: unsigned int siglen, RSA *rsa); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_sign_ASN1_OCTET_STRING(int type, 859623: const unsigned char *m, unsigned int m_length, 859623: unsigned char *sigret, unsigned int *siglen, 859623: RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_verify_ASN1_OCTET_STRING(int type, 859623: const unsigned char *m, unsigned int m_length, 859623: unsigned char *sigbuf, unsigned int siglen, 859623: RSA *rsa); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_blinding_off(RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl, 859623: int rsa_len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl, 859623: int rsa_len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int PKCS1_MGF1(unsigned char *mask, long len, 859623: const unsigned char *seed, long seedlen, 859623: const EVP_MD *dgst); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl, 859623: const unsigned char *p, int pl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl, int rsa_len, 859623: const unsigned char *p, int pl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, 859623: const unsigned char *from, int flen, 859623: const unsigned char *param, int plen, 859623: const EVP_MD *md, const EVP_MD *mgf1md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, 859623: const unsigned char *from, int flen, 859623: int num, 859623: const unsigned char *param, int plen, 859623: const EVP_MD *md, const EVP_MD *mgf1md); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_padding_add_none(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_padding_check_none(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl, 859623: int rsa_len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_padding_add_X931(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_padding_check_X931(unsigned char *to, int tlen, 859623: const unsigned char *f, int fl, 859623: int rsa_len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_X931_hash_id(int nid); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, 859623: const EVP_MD *Hash, const unsigned char *EM, 859623: int sLen); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, 859623: const unsigned char *mHash, const EVP_MD *Hash, 859623: int sLen); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, 859623: const EVP_MD *Hash, const EVP_MD *mgf1Hash, 859623: const unsigned char *EM, int sLen); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, 859623: const unsigned char *mHash, 859623: const EVP_MD *Hash, const EVP_MD *mgf1Hash, 859623: int sLen); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_set_ex_data(RSA *r, int idx, void *arg); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void *RSA_get_ex_data(const RSA *r, int idx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *RSAPublicKey_dup(const RSA *a); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *RSAPrivateKey_dup(const RSA *a); 859623: # 484 "/usr/include/openssl/rsa.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA_METHOD *RSA_meth_new(const char *name, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void RSA_meth_free(RSA_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const char *RSA_meth_get0_name(const RSA_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_meth_set1_name(RSA_METHOD *meth, 859623: const char *name); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_meth_get_flags(const RSA_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_meth_set_flags(RSA_METHOD *meth, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void *RSA_meth_get0_app_data(const RSA_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int RSA_meth_set0_app_data(RSA_METHOD *meth, 859623: void *app_data); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) (int flen, 859623: const unsigned char *from, 859623: unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_pub_enc(RSA_METHOD *rsa, 859623: int (*pub_enc) (int flen, const unsigned char *from, 859623: unsigned char *to, RSA *rsa, 859623: int padding)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) (int flen, 859623: const unsigned char *from, 859623: unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_pub_dec(RSA_METHOD *rsa, 859623: int (*pub_dec) (int flen, const unsigned char *from, 859623: unsigned char *to, RSA *rsa, 859623: int padding)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) (int flen, 859623: const unsigned char *from, 859623: unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_priv_enc(RSA_METHOD *rsa, 859623: int (*priv_enc) (int flen, const unsigned char *from, 859623: unsigned char *to, RSA *rsa, 859623: int padding)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) (int flen, 859623: const unsigned char *from, 859623: unsigned char *to, 859623: RSA *rsa, int padding); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_priv_dec(RSA_METHOD *rsa, 859623: int (*priv_dec) (int flen, const unsigned char *from, 859623: unsigned char *to, RSA *rsa, 859623: int padding)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r0, 859623: const BIGNUM *i, 859623: RSA *rsa, BN_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_mod_exp(RSA_METHOD *rsa, 859623: int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, 859623: BN_CTX *ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r, 859623: const BIGNUM *a, 859623: const BIGNUM *p, 859623: const BIGNUM *m, 859623: BN_CTX *ctx, 859623: BN_MONT_CTX *m_ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, 859623: int (*bn_mod_exp) (BIGNUM *r, 859623: const BIGNUM *a, 859623: const BIGNUM *p, 859623: const BIGNUM *m, 859623: BN_CTX *ctx, 859623: BN_MONT_CTX *m_ctx)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_sign(const RSA_METHOD *meth)) (int type, 859623: const unsigned char *m, 859623: unsigned int m_length, 859623: unsigned char *sigret, 859623: unsigned int *siglen, 859623: const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_sign(RSA_METHOD *rsa, 859623: int (*sign) (int type, const unsigned char *m, 859623: unsigned int m_length, 859623: unsigned char *sigret, unsigned int *siglen, 859623: const RSA *rsa)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_verify(const RSA_METHOD *meth)) (int dtype, 859623: const unsigned char *m, 859623: unsigned int m_length, 859623: const unsigned char *sigbuf, 859623: unsigned int siglen, 859623: const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_verify(RSA_METHOD *rsa, 859623: int (*verify) (int dtype, const unsigned char *m, 859623: unsigned int m_length, 859623: const unsigned char *sigbuf, 859623: unsigned int siglen, const RSA *rsa)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) (RSA *rsa, int bits, 859623: BIGNUM *e, BN_GENCB *cb); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_keygen(RSA_METHOD *rsa, 859623: int (*keygen) (RSA *rsa, int bits, BIGNUM *e, 859623: BN_GENCB *cb)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) (RSA *rsa, 859623: int bits, 859623: int primes, 859623: BIGNUM *e, 859623: BN_GENCB *cb); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, 859623: int (*keygen) (RSA *rsa, int bits, 859623: int primes, BIGNUM *e, 859623: BN_GENCB *cb)); 859623: 859623: 859623: 859623: } 859623: # 37 "/usr/include/openssl/x509.h" 2 3 4 859623: # 1 "/usr/include/openssl/dsa.h" 1 3 4 859623: # 12 "/usr/include/openssl/dsa.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 21 "/usr/include/openssl/dsa.h" 2 3 4 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 1 3 4 859623: # 23 "/usr/include/openssl/dsa.h" 2 3 4 859623: # 31 "/usr/include/openssl/dsa.h" 3 4 859623: # 1 "/usr/include/openssl/dh.h" 1 3 4 859623: # 12 "/usr/include/openssl/dh.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 21 "/usr/include/openssl/dh.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 1 3 4 859623: # 27 "/usr/include/openssl/dh.h" 2 3 4 859623: # 38 "/usr/include/openssl/dh.h" 3 4 859623: int EVP_PKEY_CTX_set_dh_paramgen_type(EVP_PKEY_CTX *ctx, int typ); 859623: int EVP_PKEY_CTX_set_dh_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex); 859623: int EVP_PKEY_CTX_set_dh_paramgen_seed(EVP_PKEY_CTX *ctx, 859623: const unsigned char *seed, 859623: size_t seedlen); 859623: int EVP_PKEY_CTX_set_dh_paramgen_prime_len(EVP_PKEY_CTX *ctx, int pbits); 859623: int EVP_PKEY_CTX_set_dh_paramgen_subprime_len(EVP_PKEY_CTX *ctx, int qlen); 859623: int EVP_PKEY_CTX_set_dh_paramgen_generator(EVP_PKEY_CTX *ctx, int gen); 859623: int EVP_PKEY_CTX_set_dh_nid(EVP_PKEY_CTX *ctx, int nid); 859623: int EVP_PKEY_CTX_set_dh_rfc5114(EVP_PKEY_CTX *ctx, int gen); 859623: int EVP_PKEY_CTX_set_dhx_rfc5114(EVP_PKEY_CTX *ctx, int gen); 859623: int EVP_PKEY_CTX_set_dh_pad(EVP_PKEY_CTX *ctx, int pad); 859623: 859623: int EVP_PKEY_CTX_set_dh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); 859623: int EVP_PKEY_CTX_get_dh_kdf_type(EVP_PKEY_CTX *ctx); 859623: int EVP_PKEY_CTX_set0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT *oid); 859623: int EVP_PKEY_CTX_get0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT **oid); 859623: int EVP_PKEY_CTX_set_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: int EVP_PKEY_CTX_get_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); 859623: int EVP_PKEY_CTX_set_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); 859623: int EVP_PKEY_CTX_get_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); 859623: int EVP_PKEY_CTX_set0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, int len); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int EVP_PKEY_CTX_get0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); 859623: # 96 "/usr/include/openssl/dh.h" 3 4 859623: # 1 "/usr/include/openssl/dherr.h" 1 3 4 859623: # 13 "/usr/include/openssl/dherr.h" 3 4 859623: 859623: # 97 "/usr/include/openssl/dh.h" 2 3 4 859623: # 144 "/usr/include/openssl/dh.h" 3 4 859623: extern const ASN1_ITEM * DHparams_it(void); 859623: # 201 "/usr/include/openssl/dh.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DHparams_dup(const DH *a); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const DH_METHOD *DH_OpenSSL(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DH_set_default_method(const DH_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const DH_METHOD *DH_get_default_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_set_method(DH *dh, const DH_METHOD *meth); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DH_new_method(ENGINE *engine); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DH_new(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DH_free(DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_up_ref(DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_bits(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_size(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_security_bits(const DH *dh); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_set_ex_data(DH *d, int idx, void *arg); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void *DH_get_ex_data(const DH *d, int idx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_generate_parameters_ex(DH *dh, int prime_len, 859623: int generator, 859623: BN_GENCB *cb); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_check_params_ex(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_check_ex(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_check_params(const DH *dh, int *ret); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_check(const DH *dh, int *codes); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, 859623: int *codes); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_generate_key(DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_compute_key(unsigned char *key, 859623: const BIGNUM *pub_key, DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_compute_key_padded(unsigned char *key, 859623: const BIGNUM *pub_key, DH *dh); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *d2i_DHparams(DH **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DHparams(const DH *a, unsigned char **out); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *d2i_DHxparams(DH **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DHxparams(const DH *a, unsigned char **out); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DHparams_print_fp(FILE *fp, const DH *x); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DHparams_print(BIO *bp, const DH *x); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DH_get_1024_160(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DH_get_2048_224(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DH_get_2048_256(void); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DH_new_by_nid(int nid); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_get_nid(const DH *dh); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_KDF_X9_42(unsigned char *out, size_t outlen, 859623: const unsigned char *Z, size_t Zlen, 859623: ASN1_OBJECT *key_oid, 859623: const unsigned char *ukm, 859623: size_t ukmlen, const EVP_MD *md); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DH_get0_pqg(const DH *dh, const BIGNUM **p, 859623: const BIGNUM **q, const BIGNUM **g); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DH_get0_key(const DH *dh, const BIGNUM **pub_key, 859623: const BIGNUM **priv_key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DH_get0_p(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DH_get0_q(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DH_get0_g(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DH_get0_priv_key(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DH_get0_pub_key(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DH_clear_flags(DH *dh, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_test_flags(const DH *dh, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DH_set_flags(DH *dh, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) ENGINE *DH_get0_engine(DH *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) long DH_get_length(const DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_set_length(DH *dh, long length); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH_METHOD *DH_meth_new(const char *name, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DH_meth_free(DH_METHOD *dhm); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const char *DH_meth_get0_name(const DH_METHOD *dhm); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set1_name(DH_METHOD *dhm, const char *name); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_get_flags(const DH_METHOD *dhm); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set_flags(DH_METHOD *dhm, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void *DH_meth_get0_app_data(const DH_METHOD *dhm); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set_generate_key(DH_METHOD *dhm, 859623: int (*generate_key) (DH *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) 859623: (unsigned char *key, 859623: const BIGNUM *pub_key, 859623: DH *dh); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set_compute_key(DH_METHOD *dhm, 859623: int (*compute_key) 859623: (unsigned char *key, 859623: const BIGNUM *pub_key, 859623: DH *dh)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DH_meth_get_bn_mod_exp(const DH_METHOD *dhm)) 859623: (const DH *, BIGNUM *, 859623: const BIGNUM *, 859623: const BIGNUM *, 859623: const BIGNUM *, BN_CTX *, 859623: BN_MONT_CTX *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set_bn_mod_exp(DH_METHOD *dhm, 859623: int (*bn_mod_exp) 859623: (const DH *, BIGNUM *, 859623: const BIGNUM *, const BIGNUM *, 859623: const BIGNUM *, BN_CTX *, 859623: BN_MONT_CTX *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) 859623: (DH *, int, int, 859623: BN_GENCB *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DH_meth_set_generate_params(DH_METHOD *dhm, 859623: int (*generate_params) 859623: (DH *, int, int, 859623: BN_GENCB *)); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) DH *DH_generate_parameters(int prime_len, int generator, 859623: void (*callback) (int, int, 859623: void *), 859623: void *cb_arg); 859623: 859623: 859623: 859623: 859623: } 859623: # 32 "/usr/include/openssl/dsa.h" 2 3 4 859623: 859623: # 1 "/usr/include/openssl/dsaerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/dsaerr.h" 3 4 859623: 859623: # 34 "/usr/include/openssl/dsa.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits); 859623: int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits); 859623: int EVP_PKEY_CTX_set_dsa_paramgen_md_props(EVP_PKEY_CTX *ctx, 859623: const char *md_name, 859623: const char *md_properties); 859623: int EVP_PKEY_CTX_set_dsa_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex); 859623: int EVP_PKEY_CTX_set_dsa_paramgen_type(EVP_PKEY_CTX *ctx, const char *name); 859623: int EVP_PKEY_CTX_set_dsa_paramgen_seed(EVP_PKEY_CTX *ctx, 859623: const unsigned char *seed, 859623: size_t seedlen); 859623: int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); 859623: # 66 "/usr/include/openssl/dsa.h" 3 4 859623: typedef struct DSA_SIG_st DSA_SIG; 859623: DSA_SIG *DSA_SIG_new(void); 859623: void DSA_SIG_free(DSA_SIG *a); 859623: extern DSA_SIG *d2i_DSA_SIG(DSA_SIG **a, const unsigned char **in, long len); extern int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **out); 859623: void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); 859623: int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); 859623: # 117 "/usr/include/openssl/dsa.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *DSAparams_dup(const DSA *a); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, 859623: DSA *dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_do_verify(const unsigned char *dgst, int dgst_len, 859623: DSA_SIG *sig, DSA *dsa); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const DSA_METHOD *DSA_OpenSSL(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DSA_set_default_method(const DSA_METHOD *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const DSA_METHOD *DSA_get_default_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_set_method(DSA *dsa, const DSA_METHOD *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const DSA_METHOD *DSA_get_method(DSA *d); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *DSA_new(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *DSA_new_method(ENGINE *engine); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DSA_free(DSA *r); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_up_ref(DSA *r); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_size(const DSA *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_bits(const DSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_security_bits(const DSA *d); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, 859623: BIGNUM **kinvp, BIGNUM **rp); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_sign(int type, const unsigned char *dgst, 859623: int dlen, unsigned char *sig, 859623: unsigned int *siglen, DSA *dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_verify(int type, const unsigned char *dgst, 859623: int dgst_len, const unsigned char *sigbuf, 859623: int siglen, DSA *dsa); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_set_ex_data(DSA *d, int idx, void *arg); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void *DSA_get_ex_data(const DSA *d, int idx); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSAPublicKey(const DSA *a, unsigned char **out); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSAPrivateKey(const DSA *a, unsigned char **out); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSAparams(DSA **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSAparams(const DSA *a, unsigned char **out); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "0.9.8"))) 859623: DSA *DSA_generate_parameters(int bits, unsigned char *seed, int seed_len, 859623: int *counter_ret, unsigned long *h_ret, 859623: void (*callback) (int, int, void *), 859623: void *cb_arg); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_generate_parameters_ex(DSA *dsa, int bits, 859623: const unsigned char *seed, 859623: int seed_len, 859623: int *counter_ret, 859623: unsigned long *h_ret, 859623: BN_GENCB *cb); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_generate_key(DSA *a); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSAparams_print(BIO *bp, const DSA *x); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_print(BIO *bp, const DSA *x, int off); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSAparams_print_fp(FILE *fp, const DSA *x); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_print_fp(FILE *bp, const DSA *x, int off); 859623: # 203 "/usr/include/openssl/dsa.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *DSA_dup_DH(const DSA *r); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DSA_get0_pqg(const DSA *d, const BIGNUM **p, 859623: const BIGNUM **q, const BIGNUM **g); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, 859623: const BIGNUM **priv_key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_set0_key(DSA *d, BIGNUM *pub_key, 859623: BIGNUM *priv_key); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DSA_get0_p(const DSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DSA_get0_q(const DSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DSA_get0_g(const DSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DSA_get0_pub_key(const DSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const BIGNUM *DSA_get0_priv_key(const DSA *d); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DSA_clear_flags(DSA *d, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_test_flags(const DSA *d, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DSA_set_flags(DSA *d, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) ENGINE *DSA_get0_engine(DSA *d); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA_METHOD *DSA_meth_new(const char *name, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void DSA_meth_free(DSA_METHOD *dsam); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const char *DSA_meth_get0_name(const DSA_METHOD *dsam); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set1_name(DSA_METHOD *dsam, 859623: const char *name); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_get_flags(const DSA_METHOD *dsam); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set0_app_data(DSA_METHOD *dsam, 859623: void *app_data); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) 859623: (const unsigned char *, int, DSA *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_sign(DSA_METHOD *dsam, 859623: DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) 859623: (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_sign_setup(DSA_METHOD *dsam, 859623: int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) 859623: (const unsigned char *, int, DSA_SIG *, DSA *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_verify(DSA_METHOD *dsam, 859623: int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam)) 859623: (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, 859623: const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_mod_exp(DSA_METHOD *dsam, 859623: int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, 859623: const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, 859623: BN_MONT_CTX *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) 859623: (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, 859623: BN_CTX *, BN_MONT_CTX *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, 859623: int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, 859623: const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_init(DSA_METHOD *dsam, 859623: int (*init)(DSA *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_finish(const DSA_METHOD *dsam))(DSA *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_finish(DSA_METHOD *dsam, 859623: int (*finish)(DSA *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) 859623: (DSA *, int, const unsigned char *, int, int *, unsigned long *, 859623: BN_GENCB *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_paramgen(DSA_METHOD *dsam, 859623: int (*paramgen) (DSA *, int, const unsigned char *, int, int *, 859623: unsigned long *, BN_GENCB *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int (*DSA_meth_get_keygen(const DSA_METHOD *dsam))(DSA *); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int DSA_meth_set_keygen(DSA_METHOD *dsam, 859623: int (*keygen) (DSA *)); 859623: 859623: 859623: 859623: 859623: } 859623: # 38 "/usr/include/openssl/x509.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/sha.h" 1 3 4 859623: # 12 "/usr/include/openssl/sha.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 21 "/usr/include/openssl/sha.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: # 42 "/usr/include/openssl/sha.h" 3 4 859623: typedef struct SHAstate_st { 859623: unsigned int h0, h1, h2, h3, h4; 859623: unsigned int Nl, Nh; 859623: unsigned int data[16]; 859623: unsigned int num; 859623: } SHA_CTX; 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA1_Init(SHA_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA1_Update(SHA_CTX *c, const void *data, size_t len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA1_Final(unsigned char *md, SHA_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void SHA1_Transform(SHA_CTX *c, const unsigned char *data); 859623: 859623: 859623: unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef struct SHA256state_st { 859623: unsigned int h[8]; 859623: unsigned int Nl, Nh; 859623: unsigned int data[16]; 859623: unsigned int num, md_len; 859623: } SHA256_CTX; 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA224_Init(SHA256_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA224_Update(SHA256_CTX *c, 859623: const void *data, size_t len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA224_Final(unsigned char *md, SHA256_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA256_Init(SHA256_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA256_Update(SHA256_CTX *c, 859623: const void *data, size_t len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA256_Final(unsigned char *md, SHA256_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void SHA256_Transform(SHA256_CTX *c, 859623: const unsigned char *data); 859623: 859623: 859623: unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); 859623: unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); 859623: # 110 "/usr/include/openssl/sha.h" 3 4 859623: typedef struct SHA512state_st { 859623: unsigned long long h[8]; 859623: unsigned long long Nl, Nh; 859623: union { 859623: unsigned long long d[16]; 859623: unsigned char p[(16*8)]; 859623: } u; 859623: unsigned int num, md_len; 859623: } SHA512_CTX; 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA384_Init(SHA512_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA384_Update(SHA512_CTX *c, 859623: const void *data, size_t len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA384_Final(unsigned char *md, SHA512_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA512_Init(SHA512_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA512_Update(SHA512_CTX *c, 859623: const void *data, size_t len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SHA512_Final(unsigned char *md, SHA512_CTX *c); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void SHA512_Transform(SHA512_CTX *c, 859623: const unsigned char *data); 859623: 859623: 859623: unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); 859623: unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); 859623: 859623: 859623: } 859623: # 42 "/usr/include/openssl/x509.h" 2 3 4 859623: # 1 "/usr/include/openssl/x509err.h" 1 3 4 859623: # 13 "/usr/include/openssl/x509err.h" 3 4 859623: 859623: # 43 "/usr/include/openssl/x509.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: struct stack_st_X509_NAME; typedef int (*sk_X509_NAME_compfunc)(const X509_NAME * const *a, const X509_NAME *const *b); typedef void (*sk_X509_NAME_freefunc)(X509_NAME *a); typedef X509_NAME * (*sk_X509_NAME_copyfunc)(const X509_NAME *a); static __attribute__((unused)) inline X509_NAME *ossl_check_X509_NAME_type(X509_NAME *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_NAME_sk_type(const struct stack_st_X509_NAME *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_NAME_sk_type(struct stack_st_X509_NAME *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_NAME_compfunc_type(sk_X509_NAME_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_NAME_copyfunc_type(sk_X509_NAME_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_NAME_freefunc_type(sk_X509_NAME_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 78 "/usr/include/openssl/x509.h" 3 4 859623: struct stack_st_X509; typedef int (*sk_X509_compfunc)(const X509 * const *a, const X509 *const *b); typedef void (*sk_X509_freefunc)(X509 *a); typedef X509 * (*sk_X509_copyfunc)(const X509 *a); static __attribute__((unused)) inline X509 *ossl_check_X509_type(X509 *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_sk_type(const struct stack_st_X509 *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_sk_type(struct stack_st_X509 *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_compfunc_type(sk_X509_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_copyfunc_type(sk_X509_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_freefunc_type(sk_X509_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 104 "/usr/include/openssl/x509.h" 3 4 859623: struct stack_st_X509_REVOKED; typedef int (*sk_X509_REVOKED_compfunc)(const X509_REVOKED * const *a, const X509_REVOKED *const *b); typedef void (*sk_X509_REVOKED_freefunc)(X509_REVOKED *a); typedef X509_REVOKED * (*sk_X509_REVOKED_copyfunc)(const X509_REVOKED *a); static __attribute__((unused)) inline X509_REVOKED *ossl_check_X509_REVOKED_type(X509_REVOKED *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_REVOKED_sk_type(const struct stack_st_X509_REVOKED *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_REVOKED_sk_type(struct stack_st_X509_REVOKED *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_REVOKED_compfunc_type(sk_X509_REVOKED_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_REVOKED_copyfunc_type(sk_X509_REVOKED_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_REVOKED_freefunc_type(sk_X509_REVOKED_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 130 "/usr/include/openssl/x509.h" 3 4 859623: struct stack_st_X509_CRL; typedef int (*sk_X509_CRL_compfunc)(const X509_CRL * const *a, const X509_CRL *const *b); typedef void (*sk_X509_CRL_freefunc)(X509_CRL *a); typedef X509_CRL * (*sk_X509_CRL_copyfunc)(const X509_CRL *a); static __attribute__((unused)) inline X509_CRL *ossl_check_X509_CRL_type(X509_CRL *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_CRL_sk_type(const struct stack_st_X509_CRL *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_CRL_sk_type(struct stack_st_X509_CRL *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_CRL_compfunc_type(sk_X509_CRL_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_CRL_copyfunc_type(sk_X509_CRL_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_CRL_freefunc_type(sk_X509_CRL_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 187 "/usr/include/openssl/x509.h" 3 4 859623: struct X509_algor_st { 859623: ASN1_OBJECT *algorithm; 859623: ASN1_TYPE *parameter; 859623: } ; 859623: 859623: typedef struct stack_st_X509_ALGOR X509_ALGORS; 859623: 859623: typedef struct X509_val_st { 859623: ASN1_TIME *notBefore; 859623: ASN1_TIME *notAfter; 859623: } X509_VAL; 859623: 859623: typedef struct X509_sig_st X509_SIG; 859623: 859623: typedef struct X509_name_entry_st X509_NAME_ENTRY; 859623: 859623: struct stack_st_X509_NAME_ENTRY; typedef int (*sk_X509_NAME_ENTRY_compfunc)(const X509_NAME_ENTRY * const *a, const X509_NAME_ENTRY *const *b); typedef void (*sk_X509_NAME_ENTRY_freefunc)(X509_NAME_ENTRY *a); typedef X509_NAME_ENTRY * (*sk_X509_NAME_ENTRY_copyfunc)(const X509_NAME_ENTRY *a); static __attribute__((unused)) inline X509_NAME_ENTRY *ossl_check_X509_NAME_ENTRY_type(X509_NAME_ENTRY *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_NAME_ENTRY_sk_type(const struct stack_st_X509_NAME_ENTRY *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_NAME_ENTRY_sk_type(struct stack_st_X509_NAME_ENTRY *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_NAME_ENTRY_compfunc_type(sk_X509_NAME_ENTRY_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_NAME_ENTRY_copyfunc_type(sk_X509_NAME_ENTRY_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_NAME_ENTRY_freefunc_type(sk_X509_NAME_ENTRY_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 233 "/usr/include/openssl/x509.h" 3 4 859623: typedef struct X509_extension_st X509_EXTENSION; 859623: struct stack_st_X509_EXTENSION; typedef int (*sk_X509_EXTENSION_compfunc)(const X509_EXTENSION * const *a, const X509_EXTENSION *const *b); typedef void (*sk_X509_EXTENSION_freefunc)(X509_EXTENSION *a); typedef X509_EXTENSION * (*sk_X509_EXTENSION_copyfunc)(const X509_EXTENSION *a); static __attribute__((unused)) inline X509_EXTENSION *ossl_check_X509_EXTENSION_type(X509_EXTENSION *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_EXTENSION_sk_type(const struct stack_st_X509_EXTENSION *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_EXTENSION_sk_type(struct stack_st_X509_EXTENSION *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_EXTENSION_compfunc_type(sk_X509_EXTENSION_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_EXTENSION_copyfunc_type(sk_X509_EXTENSION_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_EXTENSION_freefunc_type(sk_X509_EXTENSION_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 261 "/usr/include/openssl/x509.h" 3 4 859623: typedef struct stack_st_X509_EXTENSION X509_EXTENSIONS; 859623: typedef struct x509_attributes_st X509_ATTRIBUTE; 859623: struct stack_st_X509_ATTRIBUTE; typedef int (*sk_X509_ATTRIBUTE_compfunc)(const X509_ATTRIBUTE * const *a, const X509_ATTRIBUTE *const *b); typedef void (*sk_X509_ATTRIBUTE_freefunc)(X509_ATTRIBUTE *a); typedef X509_ATTRIBUTE * (*sk_X509_ATTRIBUTE_copyfunc)(const X509_ATTRIBUTE *a); static __attribute__((unused)) inline X509_ATTRIBUTE *ossl_check_X509_ATTRIBUTE_type(X509_ATTRIBUTE *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_ATTRIBUTE_sk_type(const struct stack_st_X509_ATTRIBUTE *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_ATTRIBUTE_sk_type(struct stack_st_X509_ATTRIBUTE *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_ATTRIBUTE_compfunc_type(sk_X509_ATTRIBUTE_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_ATTRIBUTE_copyfunc_type(sk_X509_ATTRIBUTE_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_ATTRIBUTE_freefunc_type(sk_X509_ATTRIBUTE_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 290 "/usr/include/openssl/x509.h" 3 4 859623: typedef struct X509_req_info_st X509_REQ_INFO; 859623: typedef struct X509_req_st X509_REQ; 859623: typedef struct x509_cert_aux_st X509_CERT_AUX; 859623: typedef struct x509_cinf_st X509_CINF; 859623: # 373 "/usr/include/openssl/x509.h" 3 4 859623: typedef struct X509_crl_info_st X509_CRL_INFO; 859623: 859623: typedef struct private_key_st { 859623: int version; 859623: 859623: X509_ALGOR *enc_algor; 859623: ASN1_OCTET_STRING *enc_pkey; 859623: 859623: EVP_PKEY *dec_pkey; 859623: 859623: int key_length; 859623: char *key_data; 859623: int key_free; 859623: 859623: EVP_CIPHER_INFO cipher; 859623: } X509_PKEY; 859623: 859623: typedef struct X509_info_st { 859623: X509 *x509; 859623: X509_CRL *crl; 859623: X509_PKEY *x_pkey; 859623: EVP_CIPHER_INFO enc_cipher; 859623: int enc_len; 859623: char *enc_data; 859623: } X509_INFO; 859623: struct stack_st_X509_INFO; typedef int (*sk_X509_INFO_compfunc)(const X509_INFO * const *a, const X509_INFO *const *b); typedef void (*sk_X509_INFO_freefunc)(X509_INFO *a); typedef X509_INFO * (*sk_X509_INFO_copyfunc)(const X509_INFO *a); static __attribute__((unused)) inline X509_INFO *ossl_check_X509_INFO_type(X509_INFO *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_INFO_sk_type(const struct stack_st_X509_INFO *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_INFO_sk_type(struct stack_st_X509_INFO *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_INFO_compfunc_type(sk_X509_INFO_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_INFO_copyfunc_type(sk_X509_INFO_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_INFO_freefunc_type(sk_X509_INFO_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 430 "/usr/include/openssl/x509.h" 3 4 859623: typedef struct Netscape_spkac_st { 859623: X509_PUBKEY *pubkey; 859623: ASN1_IA5STRING *challenge; 859623: } NETSCAPE_SPKAC; 859623: 859623: typedef struct Netscape_spki_st { 859623: NETSCAPE_SPKAC *spkac; 859623: X509_ALGOR sig_algor; 859623: ASN1_BIT_STRING *signature; 859623: } NETSCAPE_SPKI; 859623: 859623: 859623: typedef struct Netscape_certificate_sequence { 859623: ASN1_OBJECT *type; 859623: struct stack_st_X509 *certs; 859623: } NETSCAPE_CERT_SEQUENCE; 859623: # 456 "/usr/include/openssl/x509.h" 3 4 859623: typedef struct PBEPARAM_st { 859623: ASN1_OCTET_STRING *salt; 859623: ASN1_INTEGER *iter; 859623: } PBEPARAM; 859623: 859623: 859623: 859623: typedef struct PBE2PARAM_st { 859623: X509_ALGOR *keyfunc; 859623: X509_ALGOR *encryption; 859623: } PBE2PARAM; 859623: 859623: typedef struct PBKDF2PARAM_st { 859623: 859623: ASN1_TYPE *salt; 859623: ASN1_INTEGER *iter; 859623: ASN1_INTEGER *keylength; 859623: X509_ALGOR *prf; 859623: } PBKDF2PARAM; 859623: 859623: typedef struct { 859623: X509_ALGOR *keyDerivationFunc; 859623: X509_ALGOR *messageAuthScheme; 859623: } PBMAC1PARAM; 859623: 859623: 859623: typedef struct SCRYPT_PARAMS_st { 859623: ASN1_OCTET_STRING *salt; 859623: ASN1_INTEGER *costParameter; 859623: ASN1_INTEGER *blockSize; 859623: ASN1_INTEGER *parallelizationParameter; 859623: ASN1_INTEGER *keyLength; 859623: } SCRYPT_PARAMS; 859623: 859623: 859623: 859623: } 859623: 859623: 859623: # 1 "/usr/include/openssl/x509_vfy.h" 1 3 4 859623: # 17 "/usr/include/openssl/x509_vfy.h" 3 4 859623: 859623: # 32 "/usr/include/openssl/x509_vfy.h" 3 4 859623: # 1 "/usr/include/openssl/lhash.h" 1 3 4 859623: # 18 "/usr/include/openssl/lhash.h" 3 4 859623: 859623: # 32 "/usr/include/openssl/lhash.h" 3 4 859623: extern "C" { 859623: 859623: 859623: typedef struct lhash_node_st OPENSSL_LH_NODE; 859623: typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); 859623: typedef int (*OPENSSL_LH_COMPFUNCTHUNK) (const void *, const void *, OPENSSL_LH_COMPFUNC cfn); 859623: typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); 859623: typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK) (const void *, OPENSSL_LH_HASHFUNC hfn); 859623: typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); 859623: typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK) (void *, OPENSSL_LH_DOALL_FUNC doall); 859623: typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); 859623: typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK) (void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); 859623: typedef struct lhash_st OPENSSL_LHASH; 859623: # 87 "/usr/include/openssl/lhash.h" 3 4 859623: int OPENSSL_LH_error(OPENSSL_LHASH *lh); 859623: OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); 859623: OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, 859623: OPENSSL_LH_HASHFUNCTHUNK hw, 859623: OPENSSL_LH_COMPFUNCTHUNK cw, 859623: OPENSSL_LH_DOALL_FUNC_THUNK daw, 859623: OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); 859623: void OPENSSL_LH_free(OPENSSL_LHASH *lh); 859623: void OPENSSL_LH_flush(OPENSSL_LHASH *lh); 859623: void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); 859623: void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); 859623: void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); 859623: void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); 859623: void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, 859623: OPENSSL_LH_DOALL_FUNCARG func, void *arg); 859623: void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, 859623: OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, 859623: OPENSSL_LH_DOALL_FUNCARG fn, void *arg); 859623: 859623: unsigned long OPENSSL_LH_strhash(const char *c); 859623: unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); 859623: unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); 859623: void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.1"))) void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); 859623: __attribute__((deprecated("Since OpenSSL " "3.1"))) void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); 859623: __attribute__((deprecated("Since OpenSSL " "3.1"))) void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.1"))) void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); 859623: __attribute__((deprecated("Since OpenSSL " "3.1"))) void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); 859623: __attribute__((deprecated("Since OpenSSL " "3.1"))) void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); 859623: # 362 "/usr/include/openssl/lhash.h" 3 4 859623: struct lhash_st_OPENSSL_STRING { union lh_OPENSSL_STRING_dummy { void* d1; unsigned long d2; int d3; } dummy; }; typedef int (*lh_OPENSSL_STRING_compfunc)(const OPENSSL_STRING *a, const OPENSSL_STRING *b); typedef unsigned long (*lh_OPENSSL_STRING_hashfunc)(const OPENSSL_STRING *a); typedef void (*lh_OPENSSL_STRING_doallfunc)(OPENSSL_STRING *a); static inline unsigned long lh_OPENSSL_STRING_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) { unsigned long (*hfn_conv)(const OPENSSL_STRING *) = (unsigned long (*)(const OPENSSL_STRING *))hfn; return hfn_conv((const OPENSSL_STRING *)data); } static inline int lh_OPENSSL_STRING_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) { int (*cfn_conv)(const OPENSSL_STRING *, const OPENSSL_STRING *) = (int (*)(const OPENSSL_STRING *, const OPENSSL_STRING *))cfn; return cfn_conv((const OPENSSL_STRING *)da, (const OPENSSL_STRING *)db); } static inline void lh_OPENSSL_STRING_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) { void (*doall_conv)(OPENSSL_STRING *) = (void (*)(OPENSSL_STRING *))doall; doall_conv((OPENSSL_STRING *)node); } static inline void lh_OPENSSL_STRING_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) { void (*doall_conv)(OPENSSL_STRING *, void *) = (void (*)(OPENSSL_STRING *, void *))doall; doall_conv((OPENSSL_STRING *)node, arg); } static __attribute__((unused)) inline OPENSSL_STRING * ossl_check_OPENSSL_STRING_lh_plain_type(OPENSSL_STRING *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STRING * ossl_check_const_OPENSSL_STRING_lh_plain_type(const OPENSSL_STRING *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_LHASH * ossl_check_const_OPENSSL_STRING_lh_type(const struct lhash_st_OPENSSL_STRING *lh) { return (const OPENSSL_LHASH *)lh; } static __attribute__((unused)) inline OPENSSL_LHASH * ossl_check_OPENSSL_STRING_lh_type(struct lhash_st_OPENSSL_STRING *lh) { return (OPENSSL_LHASH *)lh; } static __attribute__((unused)) inline OPENSSL_LH_COMPFUNC ossl_check_OPENSSL_STRING_lh_compfunc_type(lh_OPENSSL_STRING_compfunc cmp) { return (OPENSSL_LH_COMPFUNC)cmp; } static __attribute__((unused)) inline OPENSSL_LH_HASHFUNC ossl_check_OPENSSL_STRING_lh_hashfunc_type(lh_OPENSSL_STRING_hashfunc hfn) { return (OPENSSL_LH_HASHFUNC)hfn; } static __attribute__((unused)) inline OPENSSL_LH_DOALL_FUNC ossl_check_OPENSSL_STRING_lh_doallfunc_type(lh_OPENSSL_STRING_doallfunc dfn) { return (OPENSSL_LH_DOALL_FUNC)dfn; } struct lhash_st_OPENSSL_STRING; 859623: # 377 "/usr/include/openssl/lhash.h" 3 4 859623: struct lhash_st_OPENSSL_CSTRING { union lh_OPENSSL_CSTRING_dummy { void* d1; unsigned long d2; int d3; } dummy; }; typedef int (*lh_OPENSSL_CSTRING_compfunc)(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b); typedef unsigned long (*lh_OPENSSL_CSTRING_hashfunc)(const OPENSSL_CSTRING *a); typedef void (*lh_OPENSSL_CSTRING_doallfunc)(OPENSSL_CSTRING *a); static inline unsigned long lh_OPENSSL_CSTRING_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) { unsigned long (*hfn_conv)(const OPENSSL_CSTRING *) = (unsigned long (*)(const OPENSSL_CSTRING *))hfn; return hfn_conv((const OPENSSL_CSTRING *)data); } static inline int lh_OPENSSL_CSTRING_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) { int (*cfn_conv)(const OPENSSL_CSTRING *, const OPENSSL_CSTRING *) = (int (*)(const OPENSSL_CSTRING *, const OPENSSL_CSTRING *))cfn; return cfn_conv((const OPENSSL_CSTRING *)da, (const OPENSSL_CSTRING *)db); } static inline void lh_OPENSSL_CSTRING_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) { void (*doall_conv)(OPENSSL_CSTRING *) = (void (*)(OPENSSL_CSTRING *))doall; doall_conv((OPENSSL_CSTRING *)node); } static inline void lh_OPENSSL_CSTRING_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) { void (*doall_conv)(OPENSSL_CSTRING *, void *) = (void (*)(OPENSSL_CSTRING *, void *))doall; doall_conv((OPENSSL_CSTRING *)node, arg); } static __attribute__((unused)) inline OPENSSL_CSTRING * ossl_check_OPENSSL_CSTRING_lh_plain_type(OPENSSL_CSTRING *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_CSTRING * ossl_check_const_OPENSSL_CSTRING_lh_plain_type(const OPENSSL_CSTRING *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_LHASH * ossl_check_const_OPENSSL_CSTRING_lh_type(const struct lhash_st_OPENSSL_CSTRING *lh) { return (const OPENSSL_LHASH *)lh; } static __attribute__((unused)) inline OPENSSL_LHASH * ossl_check_OPENSSL_CSTRING_lh_type(struct lhash_st_OPENSSL_CSTRING *lh) { return (OPENSSL_LHASH *)lh; } static __attribute__((unused)) inline OPENSSL_LH_COMPFUNC ossl_check_OPENSSL_CSTRING_lh_compfunc_type(lh_OPENSSL_CSTRING_compfunc cmp) { return (OPENSSL_LH_COMPFUNC)cmp; } static __attribute__((unused)) inline OPENSSL_LH_HASHFUNC ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(lh_OPENSSL_CSTRING_hashfunc hfn) { return (OPENSSL_LH_HASHFUNC)hfn; } static __attribute__((unused)) inline OPENSSL_LH_DOALL_FUNC ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(lh_OPENSSL_CSTRING_doallfunc dfn) { return (OPENSSL_LH_DOALL_FUNC)dfn; } struct lhash_st_OPENSSL_CSTRING; 859623: # 395 "/usr/include/openssl/lhash.h" 3 4 859623: } 859623: # 33 "/usr/include/openssl/x509_vfy.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: # 58 "/usr/include/openssl/x509_vfy.h" 3 4 859623: typedef enum { 859623: X509_LU_NONE = 0, 859623: X509_LU_X509, X509_LU_CRL 859623: } X509_LOOKUP_TYPE; 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct stack_st_X509_LOOKUP; typedef int (*sk_X509_LOOKUP_compfunc)(const X509_LOOKUP * const *a, const X509_LOOKUP *const *b); typedef void (*sk_X509_LOOKUP_freefunc)(X509_LOOKUP *a); typedef X509_LOOKUP * (*sk_X509_LOOKUP_copyfunc)(const X509_LOOKUP *a); static __attribute__((unused)) inline X509_LOOKUP *ossl_check_X509_LOOKUP_type(X509_LOOKUP *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_LOOKUP_sk_type(const struct stack_st_X509_LOOKUP *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_LOOKUP_sk_type(struct stack_st_X509_LOOKUP *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_LOOKUP_compfunc_type(sk_X509_LOOKUP_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_LOOKUP_copyfunc_type(sk_X509_LOOKUP_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_LOOKUP_freefunc_type(sk_X509_LOOKUP_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 94 "/usr/include/openssl/x509_vfy.h" 3 4 859623: struct stack_st_X509_OBJECT; typedef int (*sk_X509_OBJECT_compfunc)(const X509_OBJECT * const *a, const X509_OBJECT *const *b); typedef void (*sk_X509_OBJECT_freefunc)(X509_OBJECT *a); typedef X509_OBJECT * (*sk_X509_OBJECT_copyfunc)(const X509_OBJECT *a); static __attribute__((unused)) inline X509_OBJECT *ossl_check_X509_OBJECT_type(X509_OBJECT *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_OBJECT_sk_type(const struct stack_st_X509_OBJECT *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_OBJECT_sk_type(struct stack_st_X509_OBJECT *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_OBJECT_compfunc_type(sk_X509_OBJECT_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_OBJECT_copyfunc_type(sk_X509_OBJECT_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_OBJECT_freefunc_type(sk_X509_OBJECT_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 120 "/usr/include/openssl/x509_vfy.h" 3 4 859623: struct stack_st_X509_VERIFY_PARAM; typedef int (*sk_X509_VERIFY_PARAM_compfunc)(const X509_VERIFY_PARAM * const *a, const X509_VERIFY_PARAM *const *b); typedef void (*sk_X509_VERIFY_PARAM_freefunc)(X509_VERIFY_PARAM *a); typedef X509_VERIFY_PARAM * (*sk_X509_VERIFY_PARAM_copyfunc)(const X509_VERIFY_PARAM *a); static __attribute__((unused)) inline X509_VERIFY_PARAM *ossl_check_X509_VERIFY_PARAM_type(X509_VERIFY_PARAM *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_VERIFY_PARAM_sk_type(const struct stack_st_X509_VERIFY_PARAM *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_VERIFY_PARAM_sk_type(struct stack_st_X509_VERIFY_PARAM *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_VERIFY_PARAM_compfunc_type(sk_X509_VERIFY_PARAM_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_VERIFY_PARAM_copyfunc_type(sk_X509_VERIFY_PARAM_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_VERIFY_PARAM_freefunc_type(sk_X509_VERIFY_PARAM_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 149 "/usr/include/openssl/x509_vfy.h" 3 4 859623: typedef struct x509_trust_st { 859623: int trust; 859623: int flags; 859623: int (*check_trust) (struct x509_trust_st *, X509 *, int); 859623: char *name; 859623: int arg1; 859623: void *arg2; 859623: } X509_TRUST; 859623: struct stack_st_X509_TRUST; typedef int (*sk_X509_TRUST_compfunc)(const X509_TRUST * const *a, const X509_TRUST *const *b); typedef void (*sk_X509_TRUST_freefunc)(X509_TRUST *a); typedef X509_TRUST * (*sk_X509_TRUST_copyfunc)(const X509_TRUST *a); static __attribute__((unused)) inline X509_TRUST *ossl_check_X509_TRUST_type(X509_TRUST *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_X509_TRUST_sk_type(const struct stack_st_X509_TRUST *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_X509_TRUST_sk_type(struct stack_st_X509_TRUST *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_X509_TRUST_compfunc_type(sk_X509_TRUST_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_X509_TRUST_copyfunc_type(sk_X509_TRUST_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_X509_TRUST_freefunc_type(sk_X509_TRUST_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 214 "/usr/include/openssl/x509_vfy.h" 3 4 859623: int X509_TRUST_set(int *t, int trust); 859623: int X509_TRUST_get_count(void); 859623: X509_TRUST *X509_TRUST_get0(int idx); 859623: int X509_TRUST_get_by_id(int id); 859623: int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), 859623: const char *name, int arg1, void *arg2); 859623: void X509_TRUST_cleanup(void); 859623: int X509_TRUST_get_flags(const X509_TRUST *xp); 859623: char *X509_TRUST_get0_name(const X509_TRUST *xp); 859623: int X509_TRUST_get_trust(const X509_TRUST *xp); 859623: 859623: int X509_trusted(const X509 *x); 859623: int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); 859623: int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); 859623: void X509_trust_clear(X509 *x); 859623: void X509_reject_clear(X509 *x); 859623: struct stack_st_ASN1_OBJECT *X509_get0_trust_objects(X509 *x); 859623: struct stack_st_ASN1_OBJECT *X509_get0_reject_objects(X509 *x); 859623: 859623: int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, 859623: int); 859623: int X509_check_trust(X509 *x, int id, int flags); 859623: 859623: int X509_verify_cert(X509_STORE_CTX *ctx); 859623: int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); 859623: struct stack_st_X509 *X509_build_chain(X509 *target, struct stack_st_X509 *certs, 859623: X509_STORE *store, int with_self_signed, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: int X509_STORE_set_depth(X509_STORE *store, int depth); 859623: 859623: typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); 859623: int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx); 859623: typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); 859623: typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, 859623: X509_STORE_CTX *ctx, X509 *x); 859623: typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, 859623: X509 *x, X509 *issuer); 859623: typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); 859623: typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, 859623: X509_CRL **crl, X509 *x); 859623: typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); 859623: typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, 859623: X509_CRL *crl, X509 *x); 859623: typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); 859623: typedef struct stack_st_X509 859623: *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, 859623: const X509_NAME *nm); 859623: typedef struct stack_st_X509_CRL 859623: *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, 859623: const X509_NAME *nm); 859623: typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); 859623: 859623: void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); 859623: # 479 "/usr/include/openssl/x509_vfy.h" 3 4 859623: int X509_OBJECT_idx_by_subject(struct stack_st_X509_OBJECT *h, X509_LOOKUP_TYPE type, 859623: const X509_NAME *name); 859623: X509_OBJECT *X509_OBJECT_retrieve_by_subject(struct stack_st_X509_OBJECT *h, 859623: X509_LOOKUP_TYPE type, 859623: const X509_NAME *name); 859623: X509_OBJECT *X509_OBJECT_retrieve_match(struct stack_st_X509_OBJECT *h, 859623: X509_OBJECT *x); 859623: int X509_OBJECT_up_ref_count(X509_OBJECT *a); 859623: X509_OBJECT *X509_OBJECT_new(void); 859623: void X509_OBJECT_free(X509_OBJECT *a); 859623: X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); 859623: X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); 859623: int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); 859623: X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); 859623: int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); 859623: X509_STORE *X509_STORE_new(void); 859623: void X509_STORE_free(X509_STORE *xs); 859623: int X509_STORE_lock(X509_STORE *xs); 859623: int X509_STORE_unlock(X509_STORE *xs); 859623: int X509_STORE_up_ref(X509_STORE *xs); 859623: struct stack_st_X509_OBJECT *X509_STORE_get0_objects(const X509_STORE *xs); 859623: struct stack_st_X509_OBJECT *X509_STORE_get1_objects(X509_STORE *xs); 859623: struct stack_st_X509 *X509_STORE_get1_all_certs(X509_STORE *xs); 859623: struct stack_st_X509 *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, 859623: const X509_NAME *nm); 859623: struct stack_st_X509_CRL *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, 859623: const X509_NAME *nm); 859623: int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); 859623: int X509_STORE_set_purpose(X509_STORE *xs, int purpose); 859623: int X509_STORE_set_trust(X509_STORE *xs, int trust); 859623: int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); 859623: X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); 859623: 859623: void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); 859623: 859623: 859623: void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, 859623: X509_STORE_CTX_verify_fn verify); 859623: X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); 859623: void X509_STORE_set_verify_cb(X509_STORE *xs, 859623: X509_STORE_CTX_verify_cb verify_cb); 859623: 859623: 859623: X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); 859623: void X509_STORE_set_get_issuer(X509_STORE *xs, 859623: X509_STORE_CTX_get_issuer_fn get_issuer); 859623: X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); 859623: void X509_STORE_set_check_issued(X509_STORE *xs, 859623: X509_STORE_CTX_check_issued_fn check_issued); 859623: X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); 859623: void X509_STORE_set_check_revocation(X509_STORE *xs, 859623: X509_STORE_CTX_check_revocation_fn check_revocation); 859623: X509_STORE_CTX_check_revocation_fn 859623: X509_STORE_get_check_revocation(const X509_STORE *xs); 859623: void X509_STORE_set_get_crl(X509_STORE *xs, 859623: X509_STORE_CTX_get_crl_fn get_crl); 859623: X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); 859623: void X509_STORE_set_check_crl(X509_STORE *xs, 859623: X509_STORE_CTX_check_crl_fn check_crl); 859623: X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); 859623: void X509_STORE_set_cert_crl(X509_STORE *xs, 859623: X509_STORE_CTX_cert_crl_fn cert_crl); 859623: X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); 859623: void X509_STORE_set_check_policy(X509_STORE *xs, 859623: X509_STORE_CTX_check_policy_fn check_policy); 859623: X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); 859623: void X509_STORE_set_lookup_certs(X509_STORE *xs, 859623: X509_STORE_CTX_lookup_certs_fn lookup_certs); 859623: X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); 859623: void X509_STORE_set_lookup_crls(X509_STORE *xs, 859623: X509_STORE_CTX_lookup_crls_fn lookup_crls); 859623: 859623: 859623: X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); 859623: void X509_STORE_set_cleanup(X509_STORE *xs, 859623: X509_STORE_CTX_cleanup_fn cleanup); 859623: X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); 859623: 859623: 859623: 859623: int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); 859623: void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); 859623: 859623: X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); 859623: X509_STORE_CTX *X509_STORE_CTX_new(void); 859623: 859623: int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); 859623: 859623: void X509_STORE_CTX_free(X509_STORE_CTX *ctx); 859623: int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, 859623: X509 *target, struct stack_st_X509 *untrusted); 859623: int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, 859623: EVP_PKEY* rpk); 859623: void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, struct stack_st_X509 *sk); 859623: void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); 859623: 859623: X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); 859623: X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); 859623: EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); 859623: struct stack_st_X509* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); 859623: void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, struct stack_st_X509 *sk); 859623: void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, 859623: X509_STORE_CTX_verify_cb verify); 859623: X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); 859623: void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, 859623: X509_STORE_CTX_get_crl_fn get_crl); 859623: X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); 859623: # 610 "/usr/include/openssl/x509_vfy.h" 3 4 859623: X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); 859623: X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); 859623: X509_LOOKUP_METHOD *X509_LOOKUP_file(void); 859623: X509_LOOKUP_METHOD *X509_LOOKUP_store(void); 859623: 859623: typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, 859623: long argl, char **ret); 859623: typedef int (*X509_LOOKUP_ctrl_ex_fn)( 859623: X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, 859623: X509_LOOKUP_TYPE type, 859623: const X509_NAME *name, 859623: X509_OBJECT *ret); 859623: typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, 859623: X509_LOOKUP_TYPE type, 859623: const X509_NAME *name, 859623: X509_OBJECT *ret, 859623: OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, 859623: X509_LOOKUP_TYPE type, 859623: const X509_NAME *name, 859623: const ASN1_INTEGER *serial, 859623: X509_OBJECT *ret); 859623: typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, 859623: X509_LOOKUP_TYPE type, 859623: const unsigned char* bytes, 859623: int len, 859623: X509_OBJECT *ret); 859623: typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, 859623: X509_LOOKUP_TYPE type, 859623: const char *str, 859623: int len, 859623: X509_OBJECT *ret); 859623: 859623: X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); 859623: void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); 859623: 859623: int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, 859623: int (*new_item) (X509_LOOKUP *ctx)); 859623: int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method)) 859623: (X509_LOOKUP *ctx); 859623: 859623: int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, 859623: void (*free_fn) (X509_LOOKUP *ctx)); 859623: void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method)) 859623: (X509_LOOKUP *ctx); 859623: 859623: int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, 859623: int (*init) (X509_LOOKUP *ctx)); 859623: int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method)) 859623: (X509_LOOKUP *ctx); 859623: 859623: int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, 859623: int (*shutdown) (X509_LOOKUP *ctx)); 859623: int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method)) 859623: (X509_LOOKUP *ctx); 859623: 859623: int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, 859623: X509_LOOKUP_ctrl_fn ctrl_fn); 859623: X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); 859623: 859623: int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, 859623: X509_LOOKUP_get_by_subject_fn fn); 859623: X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( 859623: const X509_LOOKUP_METHOD *method); 859623: 859623: int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, 859623: X509_LOOKUP_get_by_issuer_serial_fn fn); 859623: X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( 859623: const X509_LOOKUP_METHOD *method); 859623: 859623: int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, 859623: X509_LOOKUP_get_by_fingerprint_fn fn); 859623: X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( 859623: const X509_LOOKUP_METHOD *method); 859623: 859623: int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, 859623: X509_LOOKUP_get_by_alias_fn fn); 859623: X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( 859623: const X509_LOOKUP_METHOD *method); 859623: 859623: 859623: int X509_STORE_add_cert(X509_STORE *xs, X509 *x); 859623: int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); 859623: 859623: int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, 859623: X509_LOOKUP_TYPE type, 859623: const X509_NAME *name, X509_OBJECT *ret); 859623: X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, 859623: X509_LOOKUP_TYPE type, 859623: const X509_NAME *name); 859623: 859623: int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, 859623: long argl, char **ret); 859623: int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, 859623: char **ret, OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); 859623: int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); 859623: int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); 859623: int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); 859623: void X509_LOOKUP_free(X509_LOOKUP *ctx); 859623: int X509_LOOKUP_init(X509_LOOKUP *ctx); 859623: int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, 859623: const X509_NAME *name, X509_OBJECT *ret); 859623: int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, 859623: const X509_NAME *name, X509_OBJECT *ret, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, 859623: const X509_NAME *name, 859623: const ASN1_INTEGER *serial, 859623: X509_OBJECT *ret); 859623: int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, 859623: const unsigned char *bytes, int len, 859623: X509_OBJECT *ret); 859623: int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, 859623: const char *str, int len, X509_OBJECT *ret); 859623: int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); 859623: void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); 859623: X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); 859623: int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); 859623: 859623: int X509_STORE_load_file(X509_STORE *xs, const char *file); 859623: int X509_STORE_load_path(X509_STORE *xs, const char *path); 859623: int X509_STORE_load_store(X509_STORE *xs, const char *store); 859623: int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); 859623: int X509_STORE_set_default_paths(X509_STORE *xs); 859623: 859623: int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int X509_STORE_load_locations_ex(X509_STORE *xs, 859623: const char *file, const char *dir, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int X509_STORE_set_default_paths_ex(X509_STORE *xs, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: 859623: 859623: int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); 859623: void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx); 859623: int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); 859623: void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); 859623: int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); 859623: void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); 859623: X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); 859623: void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); 859623: X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); 859623: X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); 859623: X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); 859623: struct stack_st_X509 *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); 859623: struct stack_st_X509 *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); 859623: void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); 859623: void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); 859623: void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, struct stack_st_X509 *sk); 859623: void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, struct stack_st_X509_CRL *sk); 859623: int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); 859623: int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); 859623: int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, 859623: int purpose, int trust); 859623: void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); 859623: void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, 859623: time_t t); 859623: void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, 859623: unsigned int current_reasons); 859623: 859623: X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); 859623: int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); 859623: int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); 859623: 859623: X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx); 859623: void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); 859623: int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); 859623: 859623: 859623: 859623: 859623: 859623: void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); 859623: 859623: 859623: 859623: 859623: X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); 859623: void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); 859623: int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, 859623: const X509_VERIFY_PARAM *from); 859623: int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, 859623: const X509_VERIFY_PARAM *from); 859623: int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); 859623: int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, 859623: unsigned long flags); 859623: int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, 859623: unsigned long flags); 859623: unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); 859623: int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); 859623: int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); 859623: int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); 859623: void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); 859623: void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); 859623: time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); 859623: void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); 859623: int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, 859623: ASN1_OBJECT *policy); 859623: int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, 859623: struct stack_st_ASN1_OBJECT *policies); 859623: 859623: int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, 859623: uint32_t flags); 859623: uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); 859623: 859623: char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); 859623: int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, 859623: const char *name, size_t namelen); 859623: int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, 859623: const char *name, size_t namelen); 859623: void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, 859623: unsigned int flags); 859623: unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); 859623: char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); 859623: void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); 859623: char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); 859623: int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, 859623: const char *email, size_t emaillen); 859623: char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); 859623: int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, 859623: const unsigned char *ip, size_t iplen); 859623: int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, 859623: const char *ipasc); 859623: 859623: int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); 859623: int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); 859623: const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); 859623: 859623: int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); 859623: int X509_VERIFY_PARAM_get_count(void); 859623: const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); 859623: const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); 859623: void X509_VERIFY_PARAM_table_cleanup(void); 859623: # 872 "/usr/include/openssl/x509_vfy.h" 3 4 859623: int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, 859623: struct stack_st_X509 *certs, 859623: struct stack_st_ASN1_OBJECT *policy_oids, unsigned int flags); 859623: 859623: void X509_policy_tree_free(X509_POLICY_TREE *tree); 859623: 859623: int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); 859623: X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, 859623: int i); 859623: 859623: struct stack_st_X509_POLICY_NODE 859623: *X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree); 859623: 859623: struct stack_st_X509_POLICY_NODE 859623: *X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree); 859623: 859623: int X509_policy_level_node_count(X509_POLICY_LEVEL *level); 859623: 859623: X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level, 859623: int i); 859623: 859623: const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); 859623: 859623: struct stack_st_POLICYQUALINFO 859623: *X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node); 859623: const X509_POLICY_NODE 859623: *X509_policy_node_get0_parent(const X509_POLICY_NODE *node); 859623: 859623: 859623: } 859623: # 496 "/usr/include/openssl/x509.h" 2 3 4 859623: # 1 "/usr/include/openssl/pkcs7.h" 1 3 4 859623: # 17 "/usr/include/openssl/pkcs7.h" 3 4 859623: 859623: # 29 "/usr/include/openssl/pkcs7.h" 3 4 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 30 "/usr/include/openssl/pkcs7.h" 2 3 4 859623: # 1 "/usr/include/openssl/pkcs7err.h" 1 3 4 859623: # 13 "/usr/include/openssl/pkcs7err.h" 3 4 859623: 859623: # 31 "/usr/include/openssl/pkcs7.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: # 47 "/usr/include/openssl/pkcs7.h" 3 4 859623: typedef struct PKCS7_CTX_st { 859623: OSSL_LIB_CTX *libctx; 859623: char *propq; 859623: } PKCS7_CTX; 859623: 859623: typedef struct pkcs7_issuer_and_serial_st { 859623: X509_NAME *issuer; 859623: ASN1_INTEGER *serial; 859623: } PKCS7_ISSUER_AND_SERIAL; 859623: 859623: typedef struct pkcs7_signer_info_st { 859623: ASN1_INTEGER *version; 859623: PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; 859623: X509_ALGOR *digest_alg; 859623: struct stack_st_X509_ATTRIBUTE *auth_attr; 859623: X509_ALGOR *digest_enc_alg; 859623: ASN1_OCTET_STRING *enc_digest; 859623: struct stack_st_X509_ATTRIBUTE *unauth_attr; 859623: 859623: EVP_PKEY *pkey; 859623: const PKCS7_CTX *ctx; 859623: } PKCS7_SIGNER_INFO; 859623: struct stack_st_PKCS7_SIGNER_INFO; typedef int (*sk_PKCS7_SIGNER_INFO_compfunc)(const PKCS7_SIGNER_INFO * const *a, const PKCS7_SIGNER_INFO *const *b); typedef void (*sk_PKCS7_SIGNER_INFO_freefunc)(PKCS7_SIGNER_INFO *a); typedef PKCS7_SIGNER_INFO * (*sk_PKCS7_SIGNER_INFO_copyfunc)(const PKCS7_SIGNER_INFO *a); static __attribute__((unused)) inline PKCS7_SIGNER_INFO *ossl_check_PKCS7_SIGNER_INFO_type(PKCS7_SIGNER_INFO *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_PKCS7_SIGNER_INFO_sk_type(const struct stack_st_PKCS7_SIGNER_INFO *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_PKCS7_SIGNER_INFO_sk_type(struct stack_st_PKCS7_SIGNER_INFO *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_PKCS7_SIGNER_INFO_compfunc_type(sk_PKCS7_SIGNER_INFO_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(sk_PKCS7_SIGNER_INFO_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_PKCS7_SIGNER_INFO_freefunc_type(sk_PKCS7_SIGNER_INFO_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 97 "/usr/include/openssl/pkcs7.h" 3 4 859623: typedef struct pkcs7_recip_info_st { 859623: ASN1_INTEGER *version; 859623: PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; 859623: X509_ALGOR *key_enc_algor; 859623: ASN1_OCTET_STRING *enc_key; 859623: X509 *cert; 859623: const PKCS7_CTX *ctx; 859623: } PKCS7_RECIP_INFO; 859623: struct stack_st_PKCS7_RECIP_INFO; typedef int (*sk_PKCS7_RECIP_INFO_compfunc)(const PKCS7_RECIP_INFO * const *a, const PKCS7_RECIP_INFO *const *b); typedef void (*sk_PKCS7_RECIP_INFO_freefunc)(PKCS7_RECIP_INFO *a); typedef PKCS7_RECIP_INFO * (*sk_PKCS7_RECIP_INFO_copyfunc)(const PKCS7_RECIP_INFO *a); static __attribute__((unused)) inline PKCS7_RECIP_INFO *ossl_check_PKCS7_RECIP_INFO_type(PKCS7_RECIP_INFO *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_PKCS7_RECIP_INFO_sk_type(const struct stack_st_PKCS7_RECIP_INFO *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_PKCS7_RECIP_INFO_sk_type(struct stack_st_PKCS7_RECIP_INFO *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_PKCS7_RECIP_INFO_compfunc_type(sk_PKCS7_RECIP_INFO_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_PKCS7_RECIP_INFO_copyfunc_type(sk_PKCS7_RECIP_INFO_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_PKCS7_RECIP_INFO_freefunc_type(sk_PKCS7_RECIP_INFO_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 134 "/usr/include/openssl/pkcs7.h" 3 4 859623: typedef struct pkcs7_signed_st { 859623: ASN1_INTEGER *version; 859623: struct stack_st_X509_ALGOR *md_algs; 859623: struct stack_st_X509 *cert; 859623: struct stack_st_X509_CRL *crl; 859623: struct stack_st_PKCS7_SIGNER_INFO *signer_info; 859623: struct pkcs7_st *contents; 859623: } PKCS7_SIGNED; 859623: 859623: 859623: 859623: 859623: 859623: typedef struct pkcs7_enc_content_st { 859623: ASN1_OBJECT *content_type; 859623: X509_ALGOR *algorithm; 859623: ASN1_OCTET_STRING *enc_data; 859623: const EVP_CIPHER *cipher; 859623: const PKCS7_CTX *ctx; 859623: } PKCS7_ENC_CONTENT; 859623: 859623: typedef struct pkcs7_enveloped_st { 859623: ASN1_INTEGER *version; 859623: struct stack_st_PKCS7_RECIP_INFO *recipientinfo; 859623: PKCS7_ENC_CONTENT *enc_data; 859623: } PKCS7_ENVELOPE; 859623: 859623: typedef struct pkcs7_signedandenveloped_st { 859623: ASN1_INTEGER *version; 859623: struct stack_st_X509_ALGOR *md_algs; 859623: struct stack_st_X509 *cert; 859623: struct stack_st_X509_CRL *crl; 859623: struct stack_st_PKCS7_SIGNER_INFO *signer_info; 859623: PKCS7_ENC_CONTENT *enc_data; 859623: struct stack_st_PKCS7_RECIP_INFO *recipientinfo; 859623: } PKCS7_SIGN_ENVELOPE; 859623: 859623: typedef struct pkcs7_digest_st { 859623: ASN1_INTEGER *version; 859623: X509_ALGOR *md; 859623: struct pkcs7_st *contents; 859623: ASN1_OCTET_STRING *digest; 859623: } PKCS7_DIGEST; 859623: 859623: typedef struct pkcs7_encrypted_st { 859623: ASN1_INTEGER *version; 859623: PKCS7_ENC_CONTENT *enc_data; 859623: } PKCS7_ENCRYPT; 859623: 859623: typedef struct pkcs7_st { 859623: 859623: 859623: 859623: 859623: unsigned char *asn1; 859623: long length; 859623: 859623: 859623: 859623: int state; 859623: int detached; 859623: ASN1_OBJECT *type; 859623: 859623: 859623: 859623: 859623: 859623: union { 859623: char *ptr; 859623: 859623: ASN1_OCTET_STRING *data; 859623: 859623: PKCS7_SIGNED *sign; 859623: 859623: PKCS7_ENVELOPE *enveloped; 859623: 859623: PKCS7_SIGN_ENVELOPE *signed_and_enveloped; 859623: 859623: PKCS7_DIGEST *digest; 859623: 859623: PKCS7_ENCRYPT *encrypted; 859623: 859623: ASN1_TYPE *other; 859623: } d; 859623: PKCS7_CTX ctx; 859623: } PKCS7; 859623: struct stack_st_PKCS7; typedef int (*sk_PKCS7_compfunc)(const PKCS7 * const *a, const PKCS7 *const *b); typedef void (*sk_PKCS7_freefunc)(PKCS7 *a); typedef PKCS7 * (*sk_PKCS7_copyfunc)(const PKCS7 *a); static __attribute__((unused)) inline PKCS7 *ossl_check_PKCS7_type(PKCS7 *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_PKCS7_sk_type(const struct stack_st_PKCS7 *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_PKCS7_sk_type(struct stack_st_PKCS7 *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_PKCS7_compfunc_type(sk_PKCS7_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_PKCS7_copyfunc_type(sk_PKCS7_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_PKCS7_freefunc_type(sk_PKCS7_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 305 "/usr/include/openssl/pkcs7.h" 3 4 859623: extern PKCS7_ISSUER_AND_SERIAL *PKCS7_ISSUER_AND_SERIAL_new(void); extern void PKCS7_ISSUER_AND_SERIAL_free(PKCS7_ISSUER_AND_SERIAL *a); extern PKCS7_ISSUER_AND_SERIAL *d2i_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL **a, const unsigned char **in, long len); extern int i2d_PKCS7_ISSUER_AND_SERIAL(const PKCS7_ISSUER_AND_SERIAL *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_ISSUER_AND_SERIAL_it(void); 859623: 859623: int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, 859623: const EVP_MD *type, unsigned char *md, 859623: unsigned int *len); 859623: 859623: PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); 859623: int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7); 859623: 859623: extern PKCS7 *PKCS7_dup(const PKCS7 *a); 859623: PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); 859623: int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7); 859623: int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); 859623: int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); 859623: 859623: extern PKCS7_SIGNER_INFO *PKCS7_SIGNER_INFO_new(void); extern void PKCS7_SIGNER_INFO_free(PKCS7_SIGNER_INFO *a); extern PKCS7_SIGNER_INFO *d2i_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO **a, const unsigned char **in, long len); extern int i2d_PKCS7_SIGNER_INFO(const PKCS7_SIGNER_INFO *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_SIGNER_INFO_it(void); 859623: extern PKCS7_RECIP_INFO *PKCS7_RECIP_INFO_new(void); extern void PKCS7_RECIP_INFO_free(PKCS7_RECIP_INFO *a); extern PKCS7_RECIP_INFO *d2i_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO **a, const unsigned char **in, long len); extern int i2d_PKCS7_RECIP_INFO(const PKCS7_RECIP_INFO *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_RECIP_INFO_it(void); 859623: extern PKCS7_SIGNED *PKCS7_SIGNED_new(void); extern void PKCS7_SIGNED_free(PKCS7_SIGNED *a); extern PKCS7_SIGNED *d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, const unsigned char **in, long len); extern int i2d_PKCS7_SIGNED(const PKCS7_SIGNED *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_SIGNED_it(void); 859623: extern PKCS7_ENC_CONTENT *PKCS7_ENC_CONTENT_new(void); extern void PKCS7_ENC_CONTENT_free(PKCS7_ENC_CONTENT *a); extern PKCS7_ENC_CONTENT *d2i_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT **a, const unsigned char **in, long len); extern int i2d_PKCS7_ENC_CONTENT(const PKCS7_ENC_CONTENT *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_ENC_CONTENT_it(void); 859623: extern PKCS7_ENVELOPE *PKCS7_ENVELOPE_new(void); extern void PKCS7_ENVELOPE_free(PKCS7_ENVELOPE *a); extern PKCS7_ENVELOPE *d2i_PKCS7_ENVELOPE(PKCS7_ENVELOPE **a, const unsigned char **in, long len); extern int i2d_PKCS7_ENVELOPE(const PKCS7_ENVELOPE *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_ENVELOPE_it(void); 859623: extern PKCS7_SIGN_ENVELOPE *PKCS7_SIGN_ENVELOPE_new(void); extern void PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a); extern PKCS7_SIGN_ENVELOPE *d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a, const unsigned char **in, long len); extern int i2d_PKCS7_SIGN_ENVELOPE(const PKCS7_SIGN_ENVELOPE *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_SIGN_ENVELOPE_it(void); 859623: extern PKCS7_DIGEST *PKCS7_DIGEST_new(void); extern void PKCS7_DIGEST_free(PKCS7_DIGEST *a); extern PKCS7_DIGEST *d2i_PKCS7_DIGEST(PKCS7_DIGEST **a, const unsigned char **in, long len); extern int i2d_PKCS7_DIGEST(const PKCS7_DIGEST *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_DIGEST_it(void); 859623: extern PKCS7_ENCRYPT *PKCS7_ENCRYPT_new(void); extern void PKCS7_ENCRYPT_free(PKCS7_ENCRYPT *a); extern PKCS7_ENCRYPT *d2i_PKCS7_ENCRYPT(PKCS7_ENCRYPT **a, const unsigned char **in, long len); extern int i2d_PKCS7_ENCRYPT(const PKCS7_ENCRYPT *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_ENCRYPT_it(void); 859623: extern PKCS7 *PKCS7_new(void); extern void PKCS7_free(PKCS7 *a); extern PKCS7 *d2i_PKCS7(PKCS7 **a, const unsigned char **in, long len); extern int i2d_PKCS7(const PKCS7 *a, unsigned char **out); extern const ASN1_ITEM * PKCS7_it(void); 859623: PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: extern const ASN1_ITEM * PKCS7_ATTR_SIGN_it(void); 859623: extern const ASN1_ITEM * PKCS7_ATTR_VERIFY_it(void); 859623: 859623: extern int i2d_PKCS7_NDEF(const PKCS7 *a, unsigned char **out); 859623: extern int PKCS7_print_ctx(BIO *out, const PKCS7 *x, int indent, const ASN1_PCTX *pctx); 859623: 859623: long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); 859623: 859623: int PKCS7_type_is_other(PKCS7 *p7); 859623: int PKCS7_set_type(PKCS7 *p7, int type); 859623: int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); 859623: int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); 859623: int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, 859623: const EVP_MD *dgst); 859623: int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); 859623: int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); 859623: int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); 859623: int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); 859623: int PKCS7_content_new(PKCS7 *p7, int nid); 859623: int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, 859623: BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); 859623: int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, 859623: X509 *signer); 859623: 859623: BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); 859623: int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); 859623: BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); 859623: 859623: PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, 859623: EVP_PKEY *pkey, const EVP_MD *dgst); 859623: X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); 859623: int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); 859623: struct stack_st_PKCS7_SIGNER_INFO *PKCS7_get_signer_info(PKCS7 *p7); 859623: 859623: PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); 859623: void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, 859623: X509_ALGOR **pdig, X509_ALGOR **psig); 859623: void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); 859623: int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); 859623: int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); 859623: int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); 859623: int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); 859623: 859623: PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); 859623: ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7); 859623: ASN1_OCTET_STRING *PKCS7_digest_from_attributes(struct stack_st_X509_ATTRIBUTE *sk); 859623: int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, 859623: void *data); 859623: int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, 859623: void *value); 859623: ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid); 859623: ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid); 859623: int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, 859623: struct stack_st_X509_ATTRIBUTE *sk); 859623: int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, 859623: struct stack_st_X509_ATTRIBUTE *sk); 859623: 859623: PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, struct stack_st_X509 *certs, 859623: BIO *data, int flags); 859623: PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, struct stack_st_X509 *certs, 859623: BIO *data, int flags, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: 859623: PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, 859623: X509 *signcert, EVP_PKEY *pkey, 859623: const EVP_MD *md, int flags); 859623: 859623: int PKCS7_final(PKCS7 *p7, BIO *data, int flags); 859623: int PKCS7_verify(PKCS7 *p7, struct stack_st_X509 *certs, X509_STORE *store, 859623: BIO *indata, BIO *out, int flags); 859623: struct stack_st_X509 *PKCS7_get0_signers(PKCS7 *p7, struct stack_st_X509 *certs, 859623: int flags); 859623: PKCS7 *PKCS7_encrypt(struct stack_st_X509 *certs, BIO *in, const EVP_CIPHER *cipher, 859623: int flags); 859623: PKCS7 *PKCS7_encrypt_ex(struct stack_st_X509 *certs, BIO *in, 859623: const EVP_CIPHER *cipher, int flags, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, 859623: int flags); 859623: 859623: int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, 859623: struct stack_st_X509_ALGOR *cap); 859623: struct stack_st_X509_ALGOR *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); 859623: int PKCS7_simple_smimecap(struct stack_st_X509_ALGOR *sk, int nid, int arg); 859623: 859623: int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); 859623: int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); 859623: int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, 859623: const unsigned char *md, int mdlen); 859623: 859623: int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); 859623: PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7); 859623: PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); 859623: 859623: BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); 859623: 859623: 859623: } 859623: # 497 "/usr/include/openssl/x509.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: # 509 "/usr/include/openssl/x509.h" 3 4 859623: void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); 859623: X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), 859623: int (*crl_free) (X509_CRL *crl), 859623: int (*crl_lookup) (X509_CRL *crl, 859623: X509_REVOKED **ret, 859623: const 859623: ASN1_INTEGER *serial, 859623: const 859623: X509_NAME *issuer), 859623: int (*crl_verify) (X509_CRL *crl, 859623: EVP_PKEY *pk)); 859623: void X509_CRL_METHOD_free(X509_CRL_METHOD *m); 859623: 859623: void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); 859623: void *X509_CRL_get_meth_data(X509_CRL *crl); 859623: 859623: const char *X509_verify_cert_error_string(long n); 859623: 859623: int X509_verify(X509 *a, EVP_PKEY *r); 859623: int X509_self_signed(X509 *cert, int verify_signature); 859623: 859623: int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); 859623: int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); 859623: int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); 859623: 859623: NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); 859623: char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); 859623: EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); 859623: int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); 859623: 859623: int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); 859623: 859623: int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); 859623: int X509_signature_print(BIO *bp, const X509_ALGOR *alg, 859623: const ASN1_STRING *sig); 859623: 859623: int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); 859623: int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); 859623: int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); 859623: int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); 859623: int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); 859623: int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); 859623: int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); 859623: 859623: int X509_pubkey_digest(const X509 *data, const EVP_MD *type, 859623: unsigned char *md, unsigned int *len); 859623: int X509_digest(const X509 *data, const EVP_MD *type, 859623: unsigned char *md, unsigned int *len); 859623: ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, 859623: EVP_MD **md_used, int *md_is_fallback); 859623: int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, 859623: unsigned char *md, unsigned int *len); 859623: int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, 859623: unsigned char *md, unsigned int *len); 859623: int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, 859623: unsigned char *md, unsigned int *len); 859623: 859623: X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); 859623: X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); 859623: 859623: # 1 "/usr/include/openssl/http.h" 1 3 4 859623: # 13 "/usr/include/openssl/http.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/conf.h" 1 3 4 859623: # 17 "/usr/include/openssl/conf.h" 3 4 859623: 859623: # 28 "/usr/include/openssl/conf.h" 3 4 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 29 "/usr/include/openssl/conf.h" 2 3 4 859623: # 1 "/usr/include/openssl/conferr.h" 1 3 4 859623: # 13 "/usr/include/openssl/conferr.h" 3 4 859623: 859623: # 30 "/usr/include/openssl/conf.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: typedef struct { 859623: char *section; 859623: char *name; 859623: char *value; 859623: } CONF_VALUE; 859623: 859623: struct stack_st_CONF_VALUE; typedef int (*sk_CONF_VALUE_compfunc)(const CONF_VALUE * const *a, const CONF_VALUE *const *b); typedef void (*sk_CONF_VALUE_freefunc)(CONF_VALUE *a); typedef CONF_VALUE * (*sk_CONF_VALUE_copyfunc)(const CONF_VALUE *a); static __attribute__((unused)) inline CONF_VALUE *ossl_check_CONF_VALUE_type(CONF_VALUE *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_CONF_VALUE_sk_type(const struct stack_st_CONF_VALUE *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_CONF_VALUE_sk_type(struct stack_st_CONF_VALUE *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_CONF_VALUE_compfunc_type(sk_CONF_VALUE_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_CONF_VALUE_copyfunc_type(sk_CONF_VALUE_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_CONF_VALUE_freefunc_type(sk_CONF_VALUE_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 70 "/usr/include/openssl/conf.h" 3 4 859623: struct lhash_st_CONF_VALUE { union lh_CONF_VALUE_dummy { void* d1; unsigned long d2; int d3; } dummy; }; typedef int (*lh_CONF_VALUE_compfunc)(const CONF_VALUE *a, const CONF_VALUE *b); typedef unsigned long (*lh_CONF_VALUE_hashfunc)(const CONF_VALUE *a); typedef void (*lh_CONF_VALUE_doallfunc)(CONF_VALUE *a); static inline unsigned long lh_CONF_VALUE_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) { unsigned long (*hfn_conv)(const CONF_VALUE *) = (unsigned long (*)(const CONF_VALUE *))hfn; return hfn_conv((const CONF_VALUE *)data); } static inline int lh_CONF_VALUE_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) { int (*cfn_conv)(const CONF_VALUE *, const CONF_VALUE *) = (int (*)(const CONF_VALUE *, const CONF_VALUE *))cfn; return cfn_conv((const CONF_VALUE *)da, (const CONF_VALUE *)db); } static inline void lh_CONF_VALUE_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) { void (*doall_conv)(CONF_VALUE *) = (void (*)(CONF_VALUE *))doall; doall_conv((CONF_VALUE *)node); } static inline void lh_CONF_VALUE_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) { void (*doall_conv)(CONF_VALUE *, void *) = (void (*)(CONF_VALUE *, void *))doall; doall_conv((CONF_VALUE *)node, arg); } static __attribute__((unused)) inline CONF_VALUE * ossl_check_CONF_VALUE_lh_plain_type(CONF_VALUE *ptr) { return ptr; } static __attribute__((unused)) inline const CONF_VALUE * ossl_check_const_CONF_VALUE_lh_plain_type(const CONF_VALUE *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_LHASH * ossl_check_const_CONF_VALUE_lh_type(const struct lhash_st_CONF_VALUE *lh) { return (const OPENSSL_LHASH *)lh; } static __attribute__((unused)) inline OPENSSL_LHASH * ossl_check_CONF_VALUE_lh_type(struct lhash_st_CONF_VALUE *lh) { return (OPENSSL_LHASH *)lh; } static __attribute__((unused)) inline OPENSSL_LH_COMPFUNC ossl_check_CONF_VALUE_lh_compfunc_type(lh_CONF_VALUE_compfunc cmp) { return (OPENSSL_LH_COMPFUNC)cmp; } static __attribute__((unused)) inline OPENSSL_LH_HASHFUNC ossl_check_CONF_VALUE_lh_hashfunc_type(lh_CONF_VALUE_hashfunc hfn) { return (OPENSSL_LH_HASHFUNC)hfn; } static __attribute__((unused)) inline OPENSSL_LH_DOALL_FUNC ossl_check_CONF_VALUE_lh_doallfunc_type(lh_CONF_VALUE_doallfunc dfn) { return (OPENSSL_LH_DOALL_FUNC)dfn; } struct lhash_st_CONF_VALUE; 859623: # 87 "/usr/include/openssl/conf.h" 3 4 859623: struct conf_st; 859623: struct conf_method_st; 859623: typedef struct conf_method_st CONF_METHOD; 859623: 859623: 859623: # 1 "/usr/include/openssl/conftypes.h" 1 3 4 859623: # 12 "/usr/include/openssl/conftypes.h" 3 4 859623: 859623: # 21 "/usr/include/openssl/conftypes.h" 3 4 859623: struct conf_method_st { 859623: const char *name; 859623: CONF *(*create) (CONF_METHOD *meth); 859623: int (*init) (CONF *conf); 859623: int (*destroy) (CONF *conf); 859623: int (*destroy_data) (CONF *conf); 859623: int (*load_bio) (CONF *conf, BIO *bp, long *eline); 859623: int (*dump) (const CONF *conf, BIO *bp); 859623: int (*is_number) (const CONF *conf, char c); 859623: int (*to_int) (const CONF *conf, char c); 859623: int (*load) (CONF *conf, const char *name, long *eline); 859623: }; 859623: 859623: struct conf_st { 859623: CONF_METHOD *meth; 859623: void *meth_data; 859623: struct lhash_st_CONF_VALUE *data; 859623: int flag_dollarid; 859623: int flag_abspath; 859623: char *includedir; 859623: OSSL_LIB_CTX *libctx; 859623: }; 859623: # 93 "/usr/include/openssl/conf.h" 2 3 4 859623: 859623: 859623: 859623: typedef struct conf_imodule_st CONF_IMODULE; 859623: typedef struct conf_module_st CONF_MODULE; 859623: 859623: struct stack_st_CONF_MODULE; 859623: struct stack_st_CONF_IMODULE; 859623: 859623: 859623: typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf); 859623: typedef void conf_finish_func (CONF_IMODULE *md); 859623: # 113 "/usr/include/openssl/conf.h" 3 4 859623: int CONF_set_default_method(CONF_METHOD *meth); 859623: void CONF_set_nconf(CONF *conf, struct lhash_st_CONF_VALUE *hash); 859623: struct lhash_st_CONF_VALUE *CONF_load(struct lhash_st_CONF_VALUE *conf, const char *file, 859623: long *eline); 859623: 859623: struct lhash_st_CONF_VALUE *CONF_load_fp(struct lhash_st_CONF_VALUE *conf, FILE *fp, 859623: long *eline); 859623: 859623: struct lhash_st_CONF_VALUE *CONF_load_bio(struct lhash_st_CONF_VALUE *conf, BIO *bp, 859623: long *eline); 859623: struct stack_st_CONF_VALUE *CONF_get_section(struct lhash_st_CONF_VALUE *conf, 859623: const char *section); 859623: char *CONF_get_string(struct lhash_st_CONF_VALUE *conf, const char *group, 859623: const char *name); 859623: long CONF_get_number(struct lhash_st_CONF_VALUE *conf, const char *group, 859623: const char *name); 859623: void CONF_free(struct lhash_st_CONF_VALUE *conf); 859623: 859623: int CONF_dump_fp(struct lhash_st_CONF_VALUE *conf, FILE *out); 859623: 859623: int CONF_dump_bio(struct lhash_st_CONF_VALUE *conf, BIO *out); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) void OPENSSL_config(const char *config_name); 859623: # 148 "/usr/include/openssl/conf.h" 3 4 859623: CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth); 859623: OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf); 859623: CONF *NCONF_new(CONF_METHOD *meth); 859623: CONF_METHOD *NCONF_default(void); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) CONF_METHOD *NCONF_WIN32(void); 859623: 859623: void NCONF_free(CONF *conf); 859623: void NCONF_free_data(CONF *conf); 859623: 859623: int NCONF_load(CONF *conf, const char *file, long *eline); 859623: 859623: int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); 859623: 859623: int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); 859623: struct stack_st_OPENSSL_CSTRING *NCONF_get_section_names(const CONF *conf); 859623: struct stack_st_CONF_VALUE *NCONF_get_section(const CONF *conf, 859623: const char *section); 859623: char *NCONF_get_string(const CONF *conf, const char *group, const char *name); 859623: int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, 859623: long *result); 859623: 859623: int NCONF_dump_fp(const CONF *conf, FILE *out); 859623: 859623: int NCONF_dump_bio(const CONF *conf, BIO *out); 859623: 859623: 859623: 859623: 859623: 859623: int CONF_modules_load(const CONF *cnf, const char *appname, 859623: unsigned long flags); 859623: int CONF_modules_load_file_ex(OSSL_LIB_CTX *libctx, const char *filename, 859623: const char *appname, unsigned long flags); 859623: int CONF_modules_load_file(const char *filename, const char *appname, 859623: unsigned long flags); 859623: void CONF_modules_unload(int all); 859623: void CONF_modules_finish(void); 859623: 859623: 859623: 859623: int CONF_module_add(const char *name, conf_init_func *ifunc, 859623: conf_finish_func *ffunc); 859623: 859623: const char *CONF_imodule_get_name(const CONF_IMODULE *md); 859623: const char *CONF_imodule_get_value(const CONF_IMODULE *md); 859623: void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); 859623: void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); 859623: CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); 859623: unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); 859623: void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); 859623: void *CONF_module_get_usr_data(CONF_MODULE *pmod); 859623: void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); 859623: 859623: char *CONF_get1_default_config_file(void); 859623: 859623: int CONF_parse_list(const char *list, int sep, int nospc, 859623: int (*list_cb) (const char *elem, int len, void *usr), 859623: void *arg); 859623: 859623: void OPENSSL_load_builtin_modules(void); 859623: 859623: 859623: 859623: } 859623: # 20 "/usr/include/openssl/http.h" 2 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: # 37 "/usr/include/openssl/http.h" 3 4 859623: int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, 859623: char **pport, int *pport_num, 859623: char **ppath, char **pquery, char **pfrag); 859623: # 50 "/usr/include/openssl/http.h" 3 4 859623: OSSL_HTTP_REQ_CTX *OSSL_HTTP_REQ_CTX_new(BIO *wbio, BIO *rbio, int buf_size); 859623: void OSSL_HTTP_REQ_CTX_free(OSSL_HTTP_REQ_CTX *rctx); 859623: int OSSL_HTTP_REQ_CTX_set_request_line(OSSL_HTTP_REQ_CTX *rctx, int method_POST, 859623: const char *server, const char *port, 859623: const char *path); 859623: int OSSL_HTTP_REQ_CTX_add1_header(OSSL_HTTP_REQ_CTX *rctx, 859623: const char *name, const char *value); 859623: int OSSL_HTTP_REQ_CTX_set_expected(OSSL_HTTP_REQ_CTX *rctx, 859623: const char *content_type, int asn1, 859623: int timeout, int keep_alive); 859623: int OSSL_HTTP_REQ_CTX_set1_req(OSSL_HTTP_REQ_CTX *rctx, const char *content_type, 859623: const ASN1_ITEM *it, const ASN1_VALUE *req); 859623: int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx); 859623: int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx, 859623: ASN1_VALUE **pval, const ASN1_ITEM *it); 859623: BIO *OSSL_HTTP_REQ_CTX_exchange(OSSL_HTTP_REQ_CTX *rctx); 859623: BIO *OSSL_HTTP_REQ_CTX_get0_mem_bio(const OSSL_HTTP_REQ_CTX *rctx); 859623: size_t OSSL_HTTP_REQ_CTX_get_resp_len(const OSSL_HTTP_REQ_CTX *rctx); 859623: void OSSL_HTTP_REQ_CTX_set_max_response_length(OSSL_HTTP_REQ_CTX *rctx, 859623: unsigned long len); 859623: void OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines(OSSL_HTTP_REQ_CTX *rctx, 859623: size_t count); 859623: int OSSL_HTTP_is_alive(const OSSL_HTTP_REQ_CTX *rctx); 859623: 859623: 859623: typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int detail); 859623: OSSL_HTTP_REQ_CTX *OSSL_HTTP_open(const char *server, const char *port, 859623: const char *proxy, const char *no_proxy, 859623: int use_ssl, BIO *bio, BIO *rbio, 859623: OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, 859623: int buf_size, int overall_timeout); 859623: int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port, 859623: const char *proxyuser, const char *proxypass, 859623: int timeout, BIO *bio_err, const char *prog); 859623: int OSSL_HTTP_set1_request(OSSL_HTTP_REQ_CTX *rctx, const char *path, 859623: const struct stack_st_CONF_VALUE *headers, 859623: const char *content_type, BIO *req, 859623: const char *expected_content_type, int expect_asn1, 859623: size_t max_resp_len, int timeout, int keep_alive); 859623: BIO *OSSL_HTTP_exchange(OSSL_HTTP_REQ_CTX *rctx, char **redirection_url); 859623: BIO *OSSL_HTTP_get(const char *url, const char *proxy, const char *no_proxy, 859623: BIO *bio, BIO *rbio, 859623: OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, 859623: int buf_size, const struct stack_st_CONF_VALUE *headers, 859623: const char *expected_content_type, int expect_asn1, 859623: size_t max_resp_len, int timeout); 859623: BIO *OSSL_HTTP_transfer(OSSL_HTTP_REQ_CTX **prctx, 859623: const char *server, const char *port, 859623: const char *path, int use_ssl, 859623: const char *proxy, const char *no_proxy, 859623: BIO *bio, BIO *rbio, 859623: OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, 859623: int buf_size, const struct stack_st_CONF_VALUE *headers, 859623: const char *content_type, BIO *req, 859623: const char *expected_content_type, int expect_asn1, 859623: size_t max_resp_len, int timeout, int keep_alive); 859623: int OSSL_HTTP_close(OSSL_HTTP_REQ_CTX *rctx, int ok); 859623: 859623: 859623: int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, 859623: char **pport, int *pport_num, 859623: char **ppath, char **pquery, char **pfrag); 859623: const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, 859623: const char *server, int use_ssl); 859623: 859623: 859623: 859623: } 859623: # 572 "/usr/include/openssl/x509.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: X509 *d2i_X509_fp(FILE *fp, X509 **x509); 859623: int i2d_X509_fp(FILE *fp, const X509 *x509); 859623: X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); 859623: int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); 859623: X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); 859623: int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); 859623: 859623: 859623: X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); 859623: int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); 859623: X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); 859623: int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); 859623: PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, 859623: PKCS8_PRIV_KEY_INFO **p8inf); 859623: int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf); 859623: int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); 859623: int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); 859623: EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); 859623: int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); 859623: EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); 859623: 859623: 859623: X509 *d2i_X509_bio(BIO *bp, X509 **x509); 859623: int i2d_X509_bio(BIO *bp, const X509 *x509); 859623: X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); 859623: int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); 859623: X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); 859623: int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); 859623: 859623: 859623: 859623: X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); 859623: int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); 859623: X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); 859623: int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); 859623: PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, 859623: PKCS8_PRIV_KEY_INFO **p8inf); 859623: int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf); 859623: int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); 859623: int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); 859623: EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); 859623: int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); 859623: EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); 859623: 859623: extern X509 *X509_dup(const X509 *a); 859623: extern X509_ALGOR *X509_ALGOR_dup(const X509_ALGOR *a); 859623: extern X509_ATTRIBUTE *X509_ATTRIBUTE_dup(const X509_ATTRIBUTE *a); 859623: extern X509_CRL *X509_CRL_dup(const X509_CRL *a); 859623: extern X509_EXTENSION *X509_EXTENSION_dup(const X509_EXTENSION *a); 859623: extern X509_PUBKEY *X509_PUBKEY_dup(const X509_PUBKEY *a); 859623: extern X509_REQ *X509_REQ_dup(const X509_REQ *a); 859623: extern X509_REVOKED *X509_REVOKED_dup(const X509_REVOKED *a); 859623: int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, 859623: void *pval); 859623: void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, 859623: const void **ppval, const X509_ALGOR *algor); 859623: void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); 859623: int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); 859623: int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); 859623: 859623: extern X509_NAME *X509_NAME_dup(const X509_NAME *a); 859623: extern X509_NAME_ENTRY *X509_NAME_ENTRY_dup(const X509_NAME_ENTRY *a); 859623: 859623: int X509_cmp_time(const ASN1_TIME *s, time_t *t); 859623: int X509_cmp_current_time(const ASN1_TIME *s); 859623: int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, 859623: const ASN1_TIME *start, const ASN1_TIME *end); 859623: ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); 859623: ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, 859623: int offset_day, long offset_sec, time_t *t); 859623: ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); 859623: 859623: const char *X509_get_default_cert_area(void); 859623: const char *X509_get_default_cert_dir(void); 859623: const char *X509_get_default_cert_file(void); 859623: const char *X509_get_default_cert_dir_env(void); 859623: const char *X509_get_default_cert_file_env(void); 859623: const char *X509_get_default_private_dir(void); 859623: 859623: X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); 859623: X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); 859623: 859623: extern X509_ALGOR *X509_ALGOR_new(void); extern void X509_ALGOR_free(X509_ALGOR *a); extern X509_ALGOR *d2i_X509_ALGOR(X509_ALGOR **a, const unsigned char **in, long len); extern int i2d_X509_ALGOR(const X509_ALGOR *a, unsigned char **out); extern const ASN1_ITEM * X509_ALGOR_it(void); 859623: extern X509_ALGORS *d2i_X509_ALGORS(X509_ALGORS **a, const unsigned char **in, long len); extern int i2d_X509_ALGORS(const X509_ALGORS *a, unsigned char **out); extern const ASN1_ITEM * X509_ALGORS_it(void); 859623: extern X509_VAL *X509_VAL_new(void); extern void X509_VAL_free(X509_VAL *a); extern X509_VAL *d2i_X509_VAL(X509_VAL **a, const unsigned char **in, long len); extern int i2d_X509_VAL(const X509_VAL *a, unsigned char **out); extern const ASN1_ITEM * X509_VAL_it(void); 859623: 859623: extern X509_PUBKEY *X509_PUBKEY_new(void); extern void X509_PUBKEY_free(X509_PUBKEY *a); extern X509_PUBKEY *d2i_X509_PUBKEY(X509_PUBKEY **a, const unsigned char **in, long len); extern int i2d_X509_PUBKEY(const X509_PUBKEY *a, unsigned char **out); extern const ASN1_ITEM * X509_PUBKEY_it(void); 859623: 859623: X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); 859623: int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); 859623: EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); 859623: EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); 859623: int X509_get_pubkey_parameters(EVP_PKEY *pkey, struct stack_st_X509 *chain); 859623: long X509_get_pathlen(X509 *x); 859623: extern EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **in, long len); extern int i2d_PUBKEY(const EVP_PKEY *a, unsigned char **out); 859623: EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_RSA_PUBKEY(const RSA *a, unsigned char **out); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_DSA_PUBKEY(const DSA *a, unsigned char **out); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **in, long len); __attribute__((deprecated("Since OpenSSL " "3.0"))) int i2d_EC_PUBKEY(const EC_KEY *a, unsigned char **out); 859623: 859623: 859623: 859623: extern X509_SIG *X509_SIG_new(void); extern void X509_SIG_free(X509_SIG *a); extern X509_SIG *d2i_X509_SIG(X509_SIG **a, const unsigned char **in, long len); extern int i2d_X509_SIG(const X509_SIG *a, unsigned char **out); extern const ASN1_ITEM * X509_SIG_it(void); 859623: void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, 859623: const ASN1_OCTET_STRING **pdigest); 859623: void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, 859623: ASN1_OCTET_STRING **pdigest); 859623: 859623: extern X509_REQ_INFO *X509_REQ_INFO_new(void); extern void X509_REQ_INFO_free(X509_REQ_INFO *a); extern X509_REQ_INFO *d2i_X509_REQ_INFO(X509_REQ_INFO **a, const unsigned char **in, long len); extern int i2d_X509_REQ_INFO(const X509_REQ_INFO *a, unsigned char **out); extern const ASN1_ITEM * X509_REQ_INFO_it(void); 859623: extern X509_REQ *X509_REQ_new(void); extern void X509_REQ_free(X509_REQ *a); extern X509_REQ *d2i_X509_REQ(X509_REQ **a, const unsigned char **in, long len); extern int i2d_X509_REQ(const X509_REQ *a, unsigned char **out); extern const ASN1_ITEM * X509_REQ_it(void); 859623: X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: extern X509_ATTRIBUTE *X509_ATTRIBUTE_new(void); extern void X509_ATTRIBUTE_free(X509_ATTRIBUTE *a); extern X509_ATTRIBUTE *d2i_X509_ATTRIBUTE(X509_ATTRIBUTE **a, const unsigned char **in, long len); extern int i2d_X509_ATTRIBUTE(const X509_ATTRIBUTE *a, unsigned char **out); extern const ASN1_ITEM * X509_ATTRIBUTE_it(void); 859623: X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); 859623: 859623: extern X509_EXTENSION *X509_EXTENSION_new(void); extern void X509_EXTENSION_free(X509_EXTENSION *a); extern X509_EXTENSION *d2i_X509_EXTENSION(X509_EXTENSION **a, const unsigned char **in, long len); extern int i2d_X509_EXTENSION(const X509_EXTENSION *a, unsigned char **out); extern const ASN1_ITEM * X509_EXTENSION_it(void); 859623: extern X509_EXTENSIONS *d2i_X509_EXTENSIONS(X509_EXTENSIONS **a, const unsigned char **in, long len); extern int i2d_X509_EXTENSIONS(const X509_EXTENSIONS *a, unsigned char **out); extern const ASN1_ITEM * X509_EXTENSIONS_it(void); 859623: 859623: extern X509_NAME_ENTRY *X509_NAME_ENTRY_new(void); extern void X509_NAME_ENTRY_free(X509_NAME_ENTRY *a); extern X509_NAME_ENTRY *d2i_X509_NAME_ENTRY(X509_NAME_ENTRY **a, const unsigned char **in, long len); extern int i2d_X509_NAME_ENTRY(const X509_NAME_ENTRY *a, unsigned char **out); extern const ASN1_ITEM * X509_NAME_ENTRY_it(void); 859623: 859623: extern X509_NAME *X509_NAME_new(void); extern void X509_NAME_free(X509_NAME *a); extern X509_NAME *d2i_X509_NAME(X509_NAME **a, const unsigned char **in, long len); extern int i2d_X509_NAME(const X509_NAME *a, unsigned char **out); extern const ASN1_ITEM * X509_NAME_it(void); 859623: 859623: int X509_NAME_set(X509_NAME **xn, const X509_NAME *name); 859623: 859623: extern X509_CINF *X509_CINF_new(void); extern void X509_CINF_free(X509_CINF *a); extern X509_CINF *d2i_X509_CINF(X509_CINF **a, const unsigned char **in, long len); extern int i2d_X509_CINF(const X509_CINF *a, unsigned char **out); extern const ASN1_ITEM * X509_CINF_it(void); 859623: extern X509 *X509_new(void); extern void X509_free(X509 *a); extern X509 *d2i_X509(X509 **a, const unsigned char **in, long len); extern int i2d_X509(const X509 *a, unsigned char **out); extern const ASN1_ITEM * X509_it(void); 859623: X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); 859623: extern X509_CERT_AUX *X509_CERT_AUX_new(void); extern void X509_CERT_AUX_free(X509_CERT_AUX *a); extern X509_CERT_AUX *d2i_X509_CERT_AUX(X509_CERT_AUX **a, const unsigned char **in, long len); extern int i2d_X509_CERT_AUX(const X509_CERT_AUX *a, unsigned char **out); extern const ASN1_ITEM * X509_CERT_AUX_it(void); 859623: 859623: 859623: 859623: int X509_set_ex_data(X509 *r, int idx, void *arg); 859623: void *X509_get_ex_data(const X509 *r, int idx); 859623: extern X509 *d2i_X509_AUX(X509 **a, const unsigned char **in, long len); extern int i2d_X509_AUX(const X509 *a, unsigned char **out); 859623: 859623: int i2d_re_X509_tbs(X509 *x, unsigned char **pp); 859623: 859623: int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, 859623: int *secbits, uint32_t *flags); 859623: void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, 859623: int secbits, uint32_t flags); 859623: 859623: int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, 859623: uint32_t *flags); 859623: 859623: void X509_get0_signature(const ASN1_BIT_STRING **psig, 859623: const X509_ALGOR **palg, const X509 *x); 859623: int X509_get_signature_nid(const X509 *x); 859623: 859623: void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); 859623: ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); 859623: void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); 859623: ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x); 859623: 859623: int X509_alias_set1(X509 *x, const unsigned char *name, int len); 859623: int X509_keyid_set1(X509 *x, const unsigned char *id, int len); 859623: unsigned char *X509_alias_get0(X509 *x, int *len); 859623: unsigned char *X509_keyid_get0(X509 *x, int *len); 859623: 859623: extern X509_REVOKED *X509_REVOKED_new(void); extern void X509_REVOKED_free(X509_REVOKED *a); extern X509_REVOKED *d2i_X509_REVOKED(X509_REVOKED **a, const unsigned char **in, long len); extern int i2d_X509_REVOKED(const X509_REVOKED *a, unsigned char **out); extern const ASN1_ITEM * X509_REVOKED_it(void); 859623: extern X509_CRL_INFO *X509_CRL_INFO_new(void); extern void X509_CRL_INFO_free(X509_CRL_INFO *a); extern X509_CRL_INFO *d2i_X509_CRL_INFO(X509_CRL_INFO **a, const unsigned char **in, long len); extern int i2d_X509_CRL_INFO(const X509_CRL_INFO *a, unsigned char **out); extern const ASN1_ITEM * X509_CRL_INFO_it(void); 859623: extern X509_CRL *X509_CRL_new(void); extern void X509_CRL_free(X509_CRL *a); extern X509_CRL *d2i_X509_CRL(X509_CRL **a, const unsigned char **in, long len); extern int i2d_X509_CRL(const X509_CRL *a, unsigned char **out); extern const ASN1_ITEM * X509_CRL_it(void); 859623: X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); 859623: int X509_CRL_get0_by_serial(X509_CRL *crl, 859623: X509_REVOKED **ret, const ASN1_INTEGER *serial); 859623: int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); 859623: 859623: X509_PKEY *X509_PKEY_new(void); 859623: void X509_PKEY_free(X509_PKEY *a); 859623: 859623: extern NETSCAPE_SPKI *NETSCAPE_SPKI_new(void); extern void NETSCAPE_SPKI_free(NETSCAPE_SPKI *a); extern NETSCAPE_SPKI *d2i_NETSCAPE_SPKI(NETSCAPE_SPKI **a, const unsigned char **in, long len); extern int i2d_NETSCAPE_SPKI(const NETSCAPE_SPKI *a, unsigned char **out); extern const ASN1_ITEM * NETSCAPE_SPKI_it(void); 859623: extern NETSCAPE_SPKAC *NETSCAPE_SPKAC_new(void); extern void NETSCAPE_SPKAC_free(NETSCAPE_SPKAC *a); extern NETSCAPE_SPKAC *d2i_NETSCAPE_SPKAC(NETSCAPE_SPKAC **a, const unsigned char **in, long len); extern int i2d_NETSCAPE_SPKAC(const NETSCAPE_SPKAC *a, unsigned char **out); extern const ASN1_ITEM * NETSCAPE_SPKAC_it(void); 859623: extern NETSCAPE_CERT_SEQUENCE *NETSCAPE_CERT_SEQUENCE_new(void); extern void NETSCAPE_CERT_SEQUENCE_free(NETSCAPE_CERT_SEQUENCE *a); extern NETSCAPE_CERT_SEQUENCE *d2i_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE **a, const unsigned char **in, long len); extern int i2d_NETSCAPE_CERT_SEQUENCE(const NETSCAPE_CERT_SEQUENCE *a, unsigned char **out); extern const ASN1_ITEM * NETSCAPE_CERT_SEQUENCE_it(void); 859623: 859623: X509_INFO *X509_INFO_new(void); 859623: void X509_INFO_free(X509_INFO *a); 859623: char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, 859623: ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, 859623: unsigned char *md, unsigned int *len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2, 859623: ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey, 859623: const EVP_MD *type); 859623: 859623: int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, 859623: unsigned char *md, unsigned int *len); 859623: int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg, 859623: const ASN1_BIT_STRING *signature, const void *data, 859623: EVP_PKEY *pkey); 859623: int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, 859623: const ASN1_BIT_STRING *signature, const void *data, 859623: EVP_MD_CTX *ctx); 859623: int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, 859623: ASN1_BIT_STRING *signature, const void *data, 859623: EVP_PKEY *pkey, const EVP_MD *md); 859623: int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, 859623: X509_ALGOR *algor2, ASN1_BIT_STRING *signature, 859623: const void *data, EVP_MD_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: long X509_get_version(const X509 *x); 859623: int X509_set_version(X509 *x, long version); 859623: int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); 859623: ASN1_INTEGER *X509_get_serialNumber(X509 *x); 859623: const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); 859623: int X509_set_issuer_name(X509 *x, const X509_NAME *name); 859623: X509_NAME *X509_get_issuer_name(const X509 *a); 859623: int X509_set_subject_name(X509 *x, const X509_NAME *name); 859623: X509_NAME *X509_get_subject_name(const X509 *a); 859623: const ASN1_TIME * X509_get0_notBefore(const X509 *x); 859623: ASN1_TIME *X509_getm_notBefore(const X509 *x); 859623: int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); 859623: const ASN1_TIME *X509_get0_notAfter(const X509 *x); 859623: ASN1_TIME *X509_getm_notAfter(const X509 *x); 859623: int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); 859623: int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); 859623: int X509_up_ref(X509 *x); 859623: int X509_get_signature_type(const X509 *x); 859623: # 883 "/usr/include/openssl/x509.h" 3 4 859623: X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); 859623: const struct stack_st_X509_EXTENSION *X509_get0_extensions(const X509 *x); 859623: void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, 859623: const ASN1_BIT_STRING **psuid); 859623: const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); 859623: 859623: EVP_PKEY *X509_get0_pubkey(const X509 *x); 859623: EVP_PKEY *X509_get_pubkey(X509 *x); 859623: ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); 859623: 859623: 859623: 859623: long X509_REQ_get_version(const X509_REQ *req); 859623: int X509_REQ_set_version(X509_REQ *x, long version); 859623: X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); 859623: int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name); 859623: void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, 859623: const X509_ALGOR **palg); 859623: void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); 859623: int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); 859623: int X509_REQ_get_signature_nid(const X509_REQ *req); 859623: int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); 859623: int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); 859623: EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); 859623: EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); 859623: X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); 859623: int X509_REQ_extension_nid(int nid); 859623: int *X509_REQ_get_extension_nids(void); 859623: void X509_REQ_set_extension_nids(int *nids); 859623: struct stack_st_X509_EXTENSION *X509_REQ_get_extensions( X509_REQ *req); 859623: int X509_REQ_add_extensions_nid(X509_REQ *req, 859623: const struct stack_st_X509_EXTENSION *exts, int nid); 859623: int X509_REQ_add_extensions(X509_REQ *req, const struct stack_st_X509_EXTENSION *ext); 859623: int X509_REQ_get_attr_count(const X509_REQ *req); 859623: int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); 859623: int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, 859623: int lastpos); 859623: X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); 859623: X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); 859623: int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); 859623: int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, 859623: const ASN1_OBJECT *obj, int type, 859623: const unsigned char *bytes, int len); 859623: int X509_REQ_add1_attr_by_NID(X509_REQ *req, 859623: int nid, int type, 859623: const unsigned char *bytes, int len); 859623: int X509_REQ_add1_attr_by_txt(X509_REQ *req, 859623: const char *attrname, int type, 859623: const unsigned char *bytes, int len); 859623: 859623: 859623: 859623: 859623: int X509_CRL_set_version(X509_CRL *x, long version); 859623: int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name); 859623: int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); 859623: int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); 859623: int X509_CRL_sort(X509_CRL *crl); 859623: int X509_CRL_up_ref(X509_CRL *crl); 859623: 859623: 859623: 859623: 859623: 859623: 859623: long X509_CRL_get_version(const X509_CRL *crl); 859623: const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); 859623: const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); 859623: 859623: X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); 859623: const struct stack_st_X509_EXTENSION *X509_CRL_get0_extensions(const X509_CRL *crl); 859623: struct stack_st_X509_REVOKED *X509_CRL_get_REVOKED(X509_CRL *crl); 859623: void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, 859623: const X509_ALGOR **palg); 859623: int X509_CRL_get_signature_nid(const X509_CRL *crl); 859623: int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); 859623: 859623: const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); 859623: int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); 859623: const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); 859623: int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); 859623: const struct stack_st_X509_EXTENSION * 859623: X509_REVOKED_get0_extensions(const X509_REVOKED *r); 859623: 859623: X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, 859623: EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); 859623: 859623: int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); 859623: 859623: int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); 859623: int X509_chain_check_suiteb(int *perror_depth, 859623: X509 *x, struct stack_st_X509 *chain, 859623: unsigned long flags); 859623: int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); 859623: void OSSL_STACK_OF_X509_free(struct stack_st_X509 *certs); 859623: struct stack_st_X509 *X509_chain_up_ref(struct stack_st_X509 *chain); 859623: 859623: int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); 859623: unsigned long X509_issuer_and_serial_hash(X509 *a); 859623: 859623: int X509_issuer_name_cmp(const X509 *a, const X509 *b); 859623: unsigned long X509_issuer_name_hash(X509 *a); 859623: 859623: int X509_subject_name_cmp(const X509 *a, const X509 *b); 859623: unsigned long X509_subject_name_hash(X509 *x); 859623: 859623: 859623: unsigned long X509_issuer_name_hash_old(X509 *a); 859623: unsigned long X509_subject_name_hash_old(X509 *x); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int X509_add_cert(struct stack_st_X509 *sk, X509 *cert, int flags); 859623: int X509_add_certs(struct stack_st_X509 *sk, struct stack_st_X509 *certs, int flags); 859623: 859623: int X509_cmp(const X509 *a, const X509 *b); 859623: int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int X509_certificate_type(const X509 *x, 859623: const EVP_PKEY *pubkey); 859623: 859623: unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, 859623: const char *propq, int *ok); 859623: unsigned long X509_NAME_hash_old(const X509_NAME *x); 859623: 859623: int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); 859623: int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); 859623: int X509_aux_print(BIO *out, X509 *x, int indent); 859623: 859623: int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, 859623: unsigned long cflag); 859623: int X509_print_fp(FILE *bp, X509 *x); 859623: int X509_CRL_print_fp(FILE *bp, X509_CRL *x); 859623: int X509_REQ_print_fp(FILE *bp, X509_REQ *req); 859623: int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, 859623: unsigned long flags); 859623: 859623: 859623: int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); 859623: int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, 859623: unsigned long flags); 859623: int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, 859623: unsigned long cflag); 859623: int X509_print(BIO *bp, X509 *x); 859623: int X509_ocspid_print(BIO *bp, X509 *x); 859623: int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); 859623: int X509_CRL_print(BIO *bp, X509_CRL *x); 859623: int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, 859623: unsigned long cflag); 859623: int X509_REQ_print(BIO *bp, X509_REQ *req); 859623: 859623: int X509_NAME_entry_count(const X509_NAME *name); 859623: int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, 859623: char *buf, int len); 859623: int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, 859623: char *buf, int len); 859623: 859623: 859623: 859623: 859623: 859623: int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos); 859623: int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, 859623: int lastpos); 859623: X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); 859623: X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); 859623: int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, 859623: int loc, int set); 859623: int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, 859623: const unsigned char *bytes, int len, int loc, 859623: int set); 859623: int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, 859623: const unsigned char *bytes, int len, int loc, 859623: int set); 859623: X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, 859623: const char *field, int type, 859623: const unsigned char *bytes, 859623: int len); 859623: X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, 859623: int type, 859623: const unsigned char *bytes, 859623: int len); 859623: int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, 859623: const unsigned char *bytes, int len, int loc, 859623: int set); 859623: X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, 859623: const ASN1_OBJECT *obj, int type, 859623: const unsigned char *bytes, 859623: int len); 859623: int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); 859623: int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, 859623: const unsigned char *bytes, int len); 859623: ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); 859623: ASN1_STRING * X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); 859623: int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); 859623: 859623: int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder, 859623: size_t *pderlen); 859623: 859623: int X509v3_get_ext_count(const struct stack_st_X509_EXTENSION *x); 859623: int X509v3_get_ext_by_NID(const struct stack_st_X509_EXTENSION *x, 859623: int nid, int lastpos); 859623: int X509v3_get_ext_by_OBJ(const struct stack_st_X509_EXTENSION *x, 859623: const ASN1_OBJECT *obj, int lastpos); 859623: int X509v3_get_ext_by_critical(const struct stack_st_X509_EXTENSION *x, 859623: int crit, int lastpos); 859623: X509_EXTENSION *X509v3_get_ext(const struct stack_st_X509_EXTENSION *x, int loc); 859623: X509_EXTENSION *X509v3_delete_ext(struct stack_st_X509_EXTENSION *x, int loc); 859623: struct stack_st_X509_EXTENSION *X509v3_add_ext(struct stack_st_X509_EXTENSION **x, 859623: X509_EXTENSION *ex, int loc); 859623: struct stack_st_X509_EXTENSION *X509v3_add_extensions(struct stack_st_X509_EXTENSION **target, 859623: const struct stack_st_X509_EXTENSION *exts); 859623: 859623: int X509_get_ext_count(const X509 *x); 859623: int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); 859623: int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); 859623: int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); 859623: X509_EXTENSION *X509_get_ext(const X509 *x, int loc); 859623: X509_EXTENSION *X509_delete_ext(X509 *x, int loc); 859623: int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); 859623: void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); 859623: int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, 859623: unsigned long flags); 859623: 859623: int X509_CRL_get_ext_count(const X509_CRL *x); 859623: int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); 859623: int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, 859623: int lastpos); 859623: int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); 859623: X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); 859623: X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); 859623: int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); 859623: void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); 859623: int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, 859623: unsigned long flags); 859623: 859623: int X509_REVOKED_get_ext_count(const X509_REVOKED *x); 859623: int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); 859623: int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, 859623: int lastpos); 859623: int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, 859623: int lastpos); 859623: X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); 859623: X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); 859623: int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); 859623: void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, 859623: int *idx); 859623: int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, 859623: unsigned long flags); 859623: 859623: X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, 859623: int nid, int crit, 859623: ASN1_OCTET_STRING *data); 859623: X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, 859623: const ASN1_OBJECT *obj, int crit, 859623: ASN1_OCTET_STRING *data); 859623: int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); 859623: int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); 859623: int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); 859623: ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); 859623: ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); 859623: int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); 859623: 859623: int X509at_get_attr_count(const struct stack_st_X509_ATTRIBUTE *x); 859623: int X509at_get_attr_by_NID(const struct stack_st_X509_ATTRIBUTE *x, int nid, 859623: int lastpos); 859623: int X509at_get_attr_by_OBJ(const struct stack_st_X509_ATTRIBUTE *sk, 859623: const ASN1_OBJECT *obj, int lastpos); 859623: X509_ATTRIBUTE *X509at_get_attr(const struct stack_st_X509_ATTRIBUTE *x, int loc); 859623: X509_ATTRIBUTE *X509at_delete_attr(struct stack_st_X509_ATTRIBUTE *x, int loc); 859623: struct stack_st_X509_ATTRIBUTE *X509at_add1_attr(struct stack_st_X509_ATTRIBUTE **x, 859623: X509_ATTRIBUTE *attr); 859623: struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_OBJ(struct stack_st_X509_ATTRIBUTE 859623: **x, const ASN1_OBJECT *obj, 859623: int type, 859623: const unsigned char *bytes, 859623: int len); 859623: struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_NID(struct stack_st_X509_ATTRIBUTE 859623: **x, int nid, int type, 859623: const unsigned char *bytes, 859623: int len); 859623: struct stack_st_X509_ATTRIBUTE *X509at_add1_attr_by_txt(struct stack_st_X509_ATTRIBUTE 859623: **x, const char *attrname, 859623: int type, 859623: const unsigned char *bytes, 859623: int len); 859623: void *X509at_get0_data_by_OBJ(const struct stack_st_X509_ATTRIBUTE *x, 859623: const ASN1_OBJECT *obj, int lastpos, int type); 859623: X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, 859623: int atrtype, const void *data, 859623: int len); 859623: X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, 859623: const ASN1_OBJECT *obj, 859623: int atrtype, const void *data, 859623: int len); 859623: X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, 859623: const char *atrname, int type, 859623: const unsigned char *bytes, 859623: int len); 859623: int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); 859623: int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, 859623: const void *data, int len); 859623: void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, 859623: void *data); 859623: int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); 859623: ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); 859623: ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); 859623: 859623: int EVP_PKEY_get_attr_count(const EVP_PKEY *key); 859623: int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); 859623: int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, 859623: int lastpos); 859623: X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); 859623: X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); 859623: int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); 859623: int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, 859623: const ASN1_OBJECT *obj, int type, 859623: const unsigned char *bytes, int len); 859623: int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, 859623: int nid, int type, 859623: const unsigned char *bytes, int len); 859623: int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, 859623: const char *attrname, int type, 859623: const unsigned char *bytes, int len); 859623: 859623: 859623: X509 *X509_find_by_issuer_and_serial(struct stack_st_X509 *sk, const X509_NAME *name, 859623: const ASN1_INTEGER *serial); 859623: X509 *X509_find_by_subject(struct stack_st_X509 *sk, const X509_NAME *name); 859623: 859623: extern PBEPARAM *PBEPARAM_new(void); extern void PBEPARAM_free(PBEPARAM *a); extern PBEPARAM *d2i_PBEPARAM(PBEPARAM **a, const unsigned char **in, long len); extern int i2d_PBEPARAM(const PBEPARAM *a, unsigned char **out); extern const ASN1_ITEM * PBEPARAM_it(void); 859623: extern PBE2PARAM *PBE2PARAM_new(void); extern void PBE2PARAM_free(PBE2PARAM *a); extern PBE2PARAM *d2i_PBE2PARAM(PBE2PARAM **a, const unsigned char **in, long len); extern int i2d_PBE2PARAM(const PBE2PARAM *a, unsigned char **out); extern const ASN1_ITEM * PBE2PARAM_it(void); 859623: extern PBKDF2PARAM *PBKDF2PARAM_new(void); extern void PBKDF2PARAM_free(PBKDF2PARAM *a); extern PBKDF2PARAM *d2i_PBKDF2PARAM(PBKDF2PARAM **a, const unsigned char **in, long len); extern int i2d_PBKDF2PARAM(const PBKDF2PARAM *a, unsigned char **out); extern const ASN1_ITEM * PBKDF2PARAM_it(void); 859623: extern PBMAC1PARAM *PBMAC1PARAM_new(void); extern void PBMAC1PARAM_free(PBMAC1PARAM *a); extern PBMAC1PARAM *d2i_PBMAC1PARAM(PBMAC1PARAM **a, const unsigned char **in, long len); extern int i2d_PBMAC1PARAM(const PBMAC1PARAM *a, unsigned char **out); extern const ASN1_ITEM * PBMAC1PARAM_it(void); 859623: 859623: extern SCRYPT_PARAMS *SCRYPT_PARAMS_new(void); extern void SCRYPT_PARAMS_free(SCRYPT_PARAMS *a); extern SCRYPT_PARAMS *d2i_SCRYPT_PARAMS(SCRYPT_PARAMS **a, const unsigned char **in, long len); extern int i2d_SCRYPT_PARAMS(const SCRYPT_PARAMS *a, unsigned char **out); extern const ASN1_ITEM * SCRYPT_PARAMS_it(void); 859623: 859623: 859623: int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, 859623: const unsigned char *salt, int saltlen); 859623: int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, 859623: const unsigned char *salt, int saltlen, 859623: OSSL_LIB_CTX *libctx); 859623: 859623: X509_ALGOR *PKCS5_pbe_set(int alg, int iter, 859623: const unsigned char *salt, int saltlen); 859623: X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, 859623: const unsigned char *salt, int saltlen, 859623: OSSL_LIB_CTX *libctx); 859623: 859623: X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, 859623: unsigned char *salt, int saltlen); 859623: X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, 859623: unsigned char *salt, int saltlen, 859623: unsigned char *aiv, int prf_nid); 859623: X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, 859623: unsigned char *salt, int saltlen, 859623: unsigned char *aiv, int prf_nid, 859623: OSSL_LIB_CTX *libctx); 859623: 859623: 859623: X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, 859623: const unsigned char *salt, int saltlen, 859623: unsigned char *aiv, uint64_t N, uint64_t r, 859623: uint64_t p); 859623: 859623: 859623: X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, 859623: int prf_nid, int keylen); 859623: X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, 859623: int prf_nid, int keylen, 859623: OSSL_LIB_CTX *libctx); 859623: 859623: PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); 859623: 859623: 859623: extern PKCS8_PRIV_KEY_INFO *PKCS8_PRIV_KEY_INFO_new(void); extern void PKCS8_PRIV_KEY_INFO_free(PKCS8_PRIV_KEY_INFO *a); extern PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO(PKCS8_PRIV_KEY_INFO **a, const unsigned char **in, long len); extern int i2d_PKCS8_PRIV_KEY_INFO(const PKCS8_PRIV_KEY_INFO *a, unsigned char **out); extern const ASN1_ITEM * PKCS8_PRIV_KEY_INFO_it(void); 859623: 859623: EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); 859623: EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey); 859623: 859623: int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, 859623: int version, int ptype, void *pval, 859623: unsigned char *penc, int penclen); 859623: int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, 859623: const unsigned char **pk, int *ppklen, 859623: const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); 859623: 859623: const struct stack_st_X509_ATTRIBUTE * 859623: PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); 859623: int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); 859623: int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, 859623: const unsigned char *bytes, int len); 859623: int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, 859623: int type, const unsigned char *bytes, int len); 859623: 859623: 859623: void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, 859623: unsigned char *penc, int penclen); 859623: int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, 859623: int ptype, void *pval, 859623: unsigned char *penc, int penclen); 859623: int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, 859623: const unsigned char **pk, int *ppklen, 859623: X509_ALGOR **pa, const X509_PUBKEY *pub); 859623: int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); 859623: 859623: 859623: } 859623: # 33 "/usr/include/openssl/ssl.h" 2 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/pem.h" 1 3 4 859623: # 12 "/usr/include/openssl/pem.h" 3 4 859623: 859623: # 24 "/usr/include/openssl/pem.h" 3 4 859623: # 1 "/usr/include/openssl/pemerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/pemerr.h" 3 4 859623: 859623: # 25 "/usr/include/openssl/pem.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: # 375 "/usr/include/openssl/pem.h" 3 4 859623: int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); 859623: int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, 859623: pem_password_cb *callback, void *u); 859623: 859623: int PEM_read_bio(BIO *bp, char **name, char **header, 859623: unsigned char **data, long *len); 859623: 859623: 859623: 859623: int PEM_read_bio_ex(BIO *bp, char **name, char **header, 859623: unsigned char **data, long *len, unsigned int flags); 859623: int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, 859623: const char *name, BIO *bp, pem_password_cb *cb, 859623: void *u); 859623: int PEM_write_bio(BIO *bp, const char *name, const char *hdr, 859623: const unsigned char *data, long len); 859623: int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, 859623: const char *name, BIO *bp, pem_password_cb *cb, 859623: void *u); 859623: void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, 859623: pem_password_cb *cb, void *u); 859623: int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, 859623: const void *x, const EVP_CIPHER *enc, 859623: const unsigned char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: int PEM_ASN1_write_bio_ctx(OSSL_i2d_of_void_ctx *i2d, void *vctx, 859623: const char *name, BIO *bp, const void *x, 859623: const EVP_CIPHER *enc, const unsigned char *kstr, 859623: int klen, pem_password_cb *cb, void *u); 859623: 859623: struct stack_st_X509_INFO *PEM_X509_INFO_read_bio(BIO *bp, struct stack_st_X509_INFO *sk, 859623: pem_password_cb *cb, void *u); 859623: struct stack_st_X509_INFO 859623: *PEM_X509_INFO_read_bio_ex(BIO *bp, struct stack_st_X509_INFO *sk, 859623: pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: 859623: int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, 859623: const unsigned char *kstr, int klen, 859623: pem_password_cb *cd, void *u); 859623: 859623: 859623: int PEM_read(FILE *fp, char **name, char **header, 859623: unsigned char **data, long *len); 859623: int PEM_write(FILE *fp, const char *name, const char *hdr, 859623: const unsigned char *data, long len); 859623: void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, 859623: pem_password_cb *cb, void *u); 859623: int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, 859623: const void *x, const EVP_CIPHER *enc, 859623: const unsigned char *kstr, int klen, 859623: pem_password_cb *callback, void *u); 859623: struct stack_st_X509_INFO *PEM_X509_INFO_read(FILE *fp, struct stack_st_X509_INFO *sk, 859623: pem_password_cb *cb, void *u); 859623: struct stack_st_X509_INFO 859623: *PEM_X509_INFO_read_ex(FILE *fp, struct stack_st_X509_INFO *sk, pem_password_cb *cb, 859623: void *u, OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: 859623: int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); 859623: int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); 859623: int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, 859623: unsigned int *siglen, EVP_PKEY *pkey); 859623: 859623: 859623: int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); 859623: void PEM_proc_type(char *buf, int type); 859623: void PEM_dek_info(char *buf, const char *type, int len, const char *str); 859623: 859623: 859623: 859623: extern X509 *PEM_read_bio_X509(BIO *out, X509 **x, pem_password_cb *cb, void *u); extern X509 *PEM_read_X509(FILE *out, X509 **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_X509(BIO *out, const X509 *x); extern int PEM_write_X509(FILE *out, const X509 *x); 859623: extern X509 *PEM_read_bio_X509_AUX(BIO *out, X509 **x, pem_password_cb *cb, void *u); extern X509 *PEM_read_X509_AUX(FILE *out, X509 **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_X509_AUX(BIO *out, const X509 *x); extern int PEM_write_X509_AUX(FILE *out, const X509 *x); 859623: extern X509_REQ *PEM_read_bio_X509_REQ(BIO *out, X509_REQ **x, pem_password_cb *cb, void *u); extern X509_REQ *PEM_read_X509_REQ(FILE *out, X509_REQ **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_X509_REQ(BIO *out, const X509_REQ *x); extern int PEM_write_X509_REQ(FILE *out, const X509_REQ *x); 859623: extern int PEM_write_bio_X509_REQ_NEW(BIO *out, const X509_REQ *x); extern int PEM_write_X509_REQ_NEW(FILE *out, const X509_REQ *x); 859623: extern X509_CRL *PEM_read_bio_X509_CRL(BIO *out, X509_CRL **x, pem_password_cb *cb, void *u); extern X509_CRL *PEM_read_X509_CRL(FILE *out, X509_CRL **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_X509_CRL(BIO *out, const X509_CRL *x); extern int PEM_write_X509_CRL(FILE *out, const X509_CRL *x); 859623: extern X509_PUBKEY *PEM_read_bio_X509_PUBKEY(BIO *out, X509_PUBKEY **x, pem_password_cb *cb, void *u); extern X509_PUBKEY *PEM_read_X509_PUBKEY(FILE *out, X509_PUBKEY **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_X509_PUBKEY(BIO *out, const X509_PUBKEY *x); extern int PEM_write_X509_PUBKEY(FILE *out, const X509_PUBKEY *x); 859623: extern PKCS7 *PEM_read_bio_PKCS7(BIO *out, PKCS7 **x, pem_password_cb *cb, void *u); extern PKCS7 *PEM_read_PKCS7(FILE *out, PKCS7 **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_PKCS7(BIO *out, const PKCS7 *x); extern int PEM_write_PKCS7(FILE *out, const PKCS7 *x); 859623: extern NETSCAPE_CERT_SEQUENCE *PEM_read_bio_NETSCAPE_CERT_SEQUENCE(BIO *out, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u); extern NETSCAPE_CERT_SEQUENCE *PEM_read_NETSCAPE_CERT_SEQUENCE(FILE *out, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_NETSCAPE_CERT_SEQUENCE(BIO *out, const NETSCAPE_CERT_SEQUENCE *x); extern int PEM_write_NETSCAPE_CERT_SEQUENCE(FILE *out, const NETSCAPE_CERT_SEQUENCE *x); 859623: extern X509_SIG *PEM_read_bio_PKCS8(BIO *out, X509_SIG **x, pem_password_cb *cb, void *u); extern X509_SIG *PEM_read_PKCS8(FILE *out, X509_SIG **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_PKCS8(BIO *out, const X509_SIG *x); extern int PEM_write_PKCS8(FILE *out, const X509_SIG *x); 859623: extern PKCS8_PRIV_KEY_INFO *PEM_read_bio_PKCS8_PRIV_KEY_INFO(BIO *out, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u); extern PKCS8_PRIV_KEY_INFO *PEM_read_PKCS8_PRIV_KEY_INFO(FILE *out, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_PKCS8_PRIV_KEY_INFO(BIO *out, const PKCS8_PRIV_KEY_INFO *x); extern int PEM_write_PKCS8_PRIV_KEY_INFO(FILE *out, const PKCS8_PRIV_KEY_INFO *x); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *PEM_read_bio_RSAPrivateKey(BIO *out, RSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *PEM_read_RSAPrivateKey(FILE *out, RSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_RSAPrivateKey(BIO *out, const RSA *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_RSAPrivateKey(FILE *out, const RSA *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *PEM_read_bio_RSAPublicKey(BIO *out, RSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *PEM_read_RSAPublicKey(FILE *out, RSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_RSAPublicKey(BIO *out, const RSA *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_RSAPublicKey(FILE *out, const RSA *x); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *PEM_read_bio_RSA_PUBKEY(BIO *out, RSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) RSA *PEM_read_RSA_PUBKEY(FILE *out, RSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_RSA_PUBKEY(BIO *out, const RSA *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_RSA_PUBKEY(FILE *out, const RSA *x); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *PEM_read_bio_DSAPrivateKey(BIO *out, DSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *PEM_read_DSAPrivateKey(FILE *out, DSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_DSAPrivateKey(BIO *out, const DSA *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_DSAPrivateKey(FILE *out, const DSA *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *PEM_read_bio_DSA_PUBKEY(BIO *out, DSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *PEM_read_DSA_PUBKEY(FILE *out, DSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_DSA_PUBKEY(BIO *out, const DSA *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_DSA_PUBKEY(FILE *out, const DSA *x); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *PEM_read_bio_DSAparams(BIO *out, DSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) DSA *PEM_read_DSAparams(FILE *out, DSA **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_DSAparams(BIO *out, const DSA *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_DSAparams(FILE *out, const DSA *x); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_GROUP *PEM_read_bio_ECPKParameters(BIO *out, EC_GROUP **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_GROUP *PEM_read_ECPKParameters(FILE *out, EC_GROUP **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_ECPKParameters(BIO *out, const EC_GROUP *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_ECPKParameters(FILE *out, const EC_GROUP *x); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *PEM_read_bio_ECPrivateKey(BIO *out, EC_KEY **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *PEM_read_ECPrivateKey(FILE *out, EC_KEY **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_ECPrivateKey(BIO *out, const EC_KEY *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_ECPrivateKey(FILE *out, const EC_KEY *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *PEM_read_bio_EC_PUBKEY(BIO *out, EC_KEY **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) EC_KEY *PEM_read_EC_PUBKEY(FILE *out, EC_KEY **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_EC_PUBKEY(BIO *out, const EC_KEY *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_EC_PUBKEY(FILE *out, const EC_KEY *x); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *PEM_read_bio_DHparams(BIO *out, DH **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) DH *PEM_read_DHparams(FILE *out, DH **x, pem_password_cb *cb, void *u); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_DHparams(BIO *out, const DH *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_DHparams(FILE *out, const DH *x); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_bio_DHxparams(BIO *out, const DH *x); __attribute__((deprecated("Since OpenSSL " "3.0"))) int PEM_write_DHxparams(FILE *out, const DH *x); 859623: 859623: 859623: extern EVP_PKEY *PEM_read_bio_PrivateKey(BIO *out, EVP_PKEY **x, pem_password_cb *cb, void *u); extern EVP_PKEY *PEM_read_bio_PrivateKey_ex(BIO *out, EVP_PKEY **x, pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, const char *propq); extern EVP_PKEY *PEM_read_PrivateKey(FILE *out, EVP_PKEY **x, pem_password_cb *cb, void *u); extern EVP_PKEY *PEM_read_PrivateKey_ex(FILE *out, EVP_PKEY **x, pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, const char *propq); extern int PEM_write_bio_PrivateKey(BIO *out, const EVP_PKEY *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); extern int PEM_write_bio_PrivateKey_ex(BIO *out, const EVP_PKEY *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, const char *propq); extern int PEM_write_PrivateKey(FILE *out, const EVP_PKEY *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u); extern int PEM_write_PrivateKey_ex(FILE *out, const EVP_PKEY *x, const EVP_CIPHER *enc, const unsigned char *kstr, int klen, pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, const char *propq); 859623: extern EVP_PKEY *PEM_read_bio_PUBKEY(BIO *out, EVP_PKEY **x, pem_password_cb *cb, void *u); extern EVP_PKEY *PEM_read_bio_PUBKEY_ex(BIO *out, EVP_PKEY **x, pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, const char *propq); extern EVP_PKEY *PEM_read_PUBKEY(FILE *out, EVP_PKEY **x, pem_password_cb *cb, void *u); extern EVP_PKEY *PEM_read_PUBKEY_ex(FILE *out, EVP_PKEY **x, pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, const char *propq); extern int PEM_write_bio_PUBKEY(BIO *out, const EVP_PKEY *x); extern int PEM_write_bio_PUBKEY_ex(BIO *out, const EVP_PKEY *x, OSSL_LIB_CTX *libctx, const char *propq); extern int PEM_write_PUBKEY(FILE *out, const EVP_PKEY *x); extern int PEM_write_PUBKEY_ex(FILE *out, const EVP_PKEY *x, OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, 859623: const EVP_CIPHER *enc, 859623: const unsigned char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: 859623: 859623: int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, 859623: const char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, 859623: const char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, 859623: const char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, 859623: const char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, 859623: void *u); 859623: 859623: 859623: int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, 859623: const char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, 859623: const char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, 859623: const char *kstr, int klen, 859623: pem_password_cb *cb, void *u); 859623: 859623: EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, 859623: void *u); 859623: 859623: int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, 859623: const char *kstr, int klen, 859623: pem_password_cb *cd, void *u); 859623: 859623: EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); 859623: int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); 859623: 859623: EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); 859623: EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); 859623: EVP_PKEY *b2i_PrivateKey_bio(BIO *in); 859623: EVP_PKEY *b2i_PublicKey_bio(BIO *in); 859623: int i2b_PrivateKey_bio(BIO *out, const EVP_PKEY *pk); 859623: int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); 859623: EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); 859623: EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, 859623: pem_password_cb *cb, void *u); 859623: int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, 859623: pem_password_cb *cb, void *u, 859623: OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: 859623: } 859623: # 38 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/hmac.h" 1 3 4 859623: # 12 "/usr/include/openssl/hmac.h" 3 4 859623: 859623: # 28 "/usr/include/openssl/hmac.h" 3 4 859623: extern "C" { 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) size_t HMAC_size(const HMAC_CTX *e); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) HMAC_CTX *HMAC_CTX_new(void); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int HMAC_CTX_reset(HMAC_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void HMAC_CTX_free(HMAC_CTX *ctx); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) int HMAC_Init(HMAC_CTX *ctx, 859623: const void *key, int len, 859623: const EVP_MD *md); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, 859623: const EVP_MD *md, ENGINE *impl); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, 859623: size_t len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, 859623: unsigned int *len); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); 859623: 859623: 859623: unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, 859623: const unsigned char *data, size_t data_len, 859623: unsigned char *md, unsigned int *md_len); 859623: 859623: 859623: } 859623: # 39 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/async.h" 1 3 4 859623: # 10 "/usr/include/openssl/async.h" 3 4 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 1 3 4 859623: # 11 "/usr/include/openssl/async.h" 2 3 4 859623: 859623: 859623: 859623: 859623: # 31 "/usr/include/openssl/async.h" 3 4 859623: # 1 "/usr/include/openssl/asyncerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/asyncerr.h" 3 4 859623: 859623: # 32 "/usr/include/openssl/async.h" 2 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: typedef struct async_job_st ASYNC_JOB; 859623: typedef struct async_wait_ctx_st ASYNC_WAIT_CTX; 859623: typedef int (*ASYNC_callback_fn)(void *arg); 859623: # 52 "/usr/include/openssl/async.h" 3 4 859623: int ASYNC_init_thread(size_t max_size, size_t init_size); 859623: void ASYNC_cleanup_thread(void); 859623: 859623: 859623: ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void); 859623: void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx); 859623: int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key, 859623: int fd, 859623: void *custom_data, 859623: void (*cleanup)(ASYNC_WAIT_CTX *, const void *, 859623: int, void *)); 859623: int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key, 859623: int *fd, void **custom_data); 859623: int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, int *fd, 859623: size_t *numfds); 859623: int ASYNC_WAIT_CTX_get_callback(ASYNC_WAIT_CTX *ctx, 859623: ASYNC_callback_fn *callback, 859623: void **callback_arg); 859623: int ASYNC_WAIT_CTX_set_callback(ASYNC_WAIT_CTX *ctx, 859623: ASYNC_callback_fn callback, 859623: void *callback_arg); 859623: int ASYNC_WAIT_CTX_set_status(ASYNC_WAIT_CTX *ctx, int status); 859623: int ASYNC_WAIT_CTX_get_status(ASYNC_WAIT_CTX *ctx); 859623: int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, int *addfd, 859623: size_t *numaddfds, int *delfd, 859623: size_t *numdelfds); 859623: int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); 859623: 859623: 859623: int ASYNC_is_capable(void); 859623: 859623: typedef void *(*ASYNC_stack_alloc_fn)(size_t *num); 859623: typedef void (*ASYNC_stack_free_fn)(void *addr); 859623: 859623: int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn, 859623: ASYNC_stack_free_fn free_fn); 859623: void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn, 859623: ASYNC_stack_free_fn *free_fn); 859623: 859623: int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, 859623: int (*func)(void *), void *args, size_t size); 859623: int ASYNC_pause_job(void); 859623: 859623: ASYNC_JOB *ASYNC_get_current_job(void); 859623: ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); 859623: void ASYNC_block_pause(void); 859623: void ASYNC_unblock_pause(void); 859623: 859623: 859623: 859623: } 859623: # 40 "/usr/include/openssl/ssl.h" 2 3 4 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/ct.h" 1 3 4 859623: # 17 "/usr/include/openssl/ct.h" 3 4 859623: 859623: # 27 "/usr/include/openssl/ct.h" 3 4 859623: # 1 "/usr/include/openssl/types.h" 1 3 4 859623: # 28 "/usr/include/openssl/ct.h" 2 3 4 859623: 859623: 859623: # 1 "/usr/include/openssl/cterr.h" 1 3 4 859623: # 13 "/usr/include/openssl/cterr.h" 3 4 859623: 859623: # 31 "/usr/include/openssl/ct.h" 2 3 4 859623: 859623: extern "C" { 859623: # 42 "/usr/include/openssl/ct.h" 3 4 859623: struct stack_st_SCT; typedef int (*sk_SCT_compfunc)(const SCT * const *a, const SCT *const *b); typedef void (*sk_SCT_freefunc)(SCT *a); typedef SCT * (*sk_SCT_copyfunc)(const SCT *a); static __attribute__((unused)) inline SCT *ossl_check_SCT_type(SCT *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_SCT_sk_type(const struct stack_st_SCT *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_SCT_sk_type(struct stack_st_SCT *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_SCT_compfunc_type(sk_SCT_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_SCT_copyfunc_type(sk_SCT_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_SCT_freefunc_type(sk_SCT_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 68 "/usr/include/openssl/ct.h" 3 4 859623: struct stack_st_CTLOG; typedef int (*sk_CTLOG_compfunc)(const CTLOG * const *a, const CTLOG *const *b); typedef void (*sk_CTLOG_freefunc)(CTLOG *a); typedef CTLOG * (*sk_CTLOG_copyfunc)(const CTLOG *a); static __attribute__((unused)) inline CTLOG *ossl_check_CTLOG_type(CTLOG *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_CTLOG_sk_type(const struct stack_st_CTLOG *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_CTLOG_sk_type(struct stack_st_CTLOG *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_CTLOG_compfunc_type(sk_CTLOG_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_CTLOG_copyfunc_type(sk_CTLOG_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_CTLOG_freefunc_type(sk_CTLOG_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 97 "/usr/include/openssl/ct.h" 3 4 859623: typedef enum { 859623: CT_LOG_ENTRY_TYPE_NOT_SET = -1, 859623: CT_LOG_ENTRY_TYPE_X509 = 0, 859623: CT_LOG_ENTRY_TYPE_PRECERT = 1 859623: } ct_log_entry_type_t; 859623: 859623: typedef enum { 859623: SCT_VERSION_NOT_SET = -1, 859623: SCT_VERSION_V1 = 0 859623: } sct_version_t; 859623: 859623: typedef enum { 859623: SCT_SOURCE_UNKNOWN, 859623: SCT_SOURCE_TLS_EXTENSION, 859623: SCT_SOURCE_X509V3_EXTENSION, 859623: SCT_SOURCE_OCSP_STAPLED_RESPONSE 859623: } sct_source_t; 859623: 859623: typedef enum { 859623: SCT_VALIDATION_STATUS_NOT_SET, 859623: SCT_VALIDATION_STATUS_UNKNOWN_LOG, 859623: SCT_VALIDATION_STATUS_VALID, 859623: SCT_VALIDATION_STATUS_INVALID, 859623: SCT_VALIDATION_STATUS_UNVERIFIED, 859623: SCT_VALIDATION_STATUS_UNKNOWN_VERSION 859623: } sct_validation_status_t; 859623: # 134 "/usr/include/openssl/ct.h" 3 4 859623: CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: 859623: 859623: 859623: 859623: 859623: CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); 859623: 859623: 859623: void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); 859623: 859623: 859623: X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); 859623: 859623: 859623: X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); 859623: 859623: 859623: const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); 859623: 859623: 859623: void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, 859623: CTLOG_STORE *log_store); 859623: 859623: 859623: 859623: 859623: 859623: 859623: uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); 859623: # 196 "/usr/include/openssl/ct.h" 3 4 859623: SCT *SCT_new(void); 859623: 859623: 859623: 859623: 859623: 859623: SCT *SCT_new_from_base64(unsigned char version, 859623: const char *logid_base64, 859623: ct_log_entry_type_t entry_type, 859623: uint64_t timestamp, 859623: const char *extensions_base64, 859623: const char *signature_base64); 859623: 859623: 859623: 859623: 859623: void SCT_free(SCT *sct); 859623: 859623: 859623: 859623: 859623: 859623: void SCT_LIST_free(struct stack_st_SCT *a); 859623: 859623: 859623: 859623: 859623: sct_version_t SCT_get_version(const SCT *sct); 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set_version(SCT *sct, sct_version_t version); 859623: 859623: 859623: 859623: 859623: ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, 859623: size_t log_id_len); 859623: 859623: 859623: 859623: 859623: uint64_t SCT_get_timestamp(const SCT *sct); 859623: 859623: 859623: 859623: 859623: void SCT_set_timestamp(SCT *sct, uint64_t timestamp); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SCT_get_signature_nid(const SCT *sct); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set_signature_nid(SCT *sct, int nid); 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); 859623: 859623: 859623: 859623: 859623: 859623: void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set1_extensions(SCT *sct, const unsigned char *ext, 859623: size_t ext_len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); 859623: 859623: 859623: 859623: 859623: 859623: void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set1_signature(SCT *sct, const unsigned char *sig, 859623: size_t sig_len); 859623: 859623: 859623: 859623: 859623: sct_source_t SCT_get_source(const SCT *sct); 859623: 859623: 859623: 859623: 859623: 859623: int SCT_set_source(SCT *sct, sct_source_t source); 859623: 859623: 859623: 859623: 859623: const char *SCT_validation_status_string(const SCT *sct); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); 859623: # 361 "/usr/include/openssl/ct.h" 3 4 859623: void SCT_LIST_print(const struct stack_st_SCT *sct_list, BIO *out, int indent, 859623: const char *separator, const CTLOG_STORE *logs); 859623: 859623: 859623: 859623: 859623: 859623: sct_validation_status_t SCT_get_validation_status(const SCT *sct); 859623: # 377 "/usr/include/openssl/ct.h" 3 4 859623: int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); 859623: # 386 "/usr/include/openssl/ct.h" 3 4 859623: int SCT_LIST_validate(const struct stack_st_SCT *scts, 859623: CT_POLICY_EVAL_CTX *ctx); 859623: # 406 "/usr/include/openssl/ct.h" 3 4 859623: int i2o_SCT_LIST(const struct stack_st_SCT *a, unsigned char **pp); 859623: # 418 "/usr/include/openssl/ct.h" 3 4 859623: struct stack_st_SCT *o2i_SCT_LIST(struct stack_st_SCT **a, const unsigned char **pp, 859623: size_t len); 859623: # 433 "/usr/include/openssl/ct.h" 3 4 859623: int i2d_SCT_LIST(const struct stack_st_SCT *a, unsigned char **pp); 859623: # 445 "/usr/include/openssl/ct.h" 3 4 859623: struct stack_st_SCT *d2i_SCT_LIST(struct stack_st_SCT **a, const unsigned char **pp, 859623: long len); 859623: # 457 "/usr/include/openssl/ct.h" 3 4 859623: int i2o_SCT(const SCT *sct, unsigned char **out); 859623: # 470 "/usr/include/openssl/ct.h" 3 4 859623: SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); 859623: # 484 "/usr/include/openssl/ct.h" 3 4 859623: CTLOG *CTLOG_new_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: 859623: 859623: 859623: 859623: 859623: CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); 859623: # 501 "/usr/include/openssl/ct.h" 3 4 859623: int CTLOG_new_from_base64_ex(CTLOG **ct_log, const char *pkey_base64, 859623: const char *name, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: 859623: 859623: 859623: 859623: 859623: 859623: int CTLOG_new_from_base64(CTLOG ** ct_log, 859623: const char *pkey_base64, const char *name); 859623: 859623: 859623: 859623: 859623: void CTLOG_free(CTLOG *log); 859623: 859623: 859623: const char *CTLOG_get0_name(const CTLOG *log); 859623: 859623: void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, 859623: size_t *log_id_len); 859623: 859623: EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); 859623: # 535 "/usr/include/openssl/ct.h" 3 4 859623: CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq); 859623: 859623: 859623: 859623: 859623: 859623: 859623: CTLOG_STORE *CTLOG_STORE_new(void); 859623: 859623: 859623: 859623: 859623: void CTLOG_STORE_free(CTLOG_STORE *store); 859623: 859623: 859623: 859623: 859623: 859623: const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, 859623: const uint8_t *log_id, 859623: size_t log_id_len); 859623: 859623: 859623: 859623: 859623: 859623: int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); 859623: 859623: 859623: 859623: 859623: 859623: int CTLOG_STORE_load_default_file(CTLOG_STORE *store); 859623: 859623: 859623: } 859623: # 44 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/sslerr.h" 1 3 4 859623: # 13 "/usr/include/openssl/sslerr.h" 3 4 859623: 859623: 859623: 859623: 859623: # 1 "/usr/include/openssl/sslerr_legacy.h" 1 3 4 859623: # 19 "/usr/include/openssl/sslerr_legacy.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int ERR_load_SSL_strings(void); 859623: # 465 "/usr/include/openssl/sslerr_legacy.h" 3 4 859623: } 859623: # 18 "/usr/include/openssl/sslerr.h" 2 3 4 859623: # 45 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/prov_ssl.h" 1 3 4 859623: # 12 "/usr/include/openssl/prov_ssl.h" 3 4 859623: 859623: 859623: 859623: extern "C" { 859623: # 36 "/usr/include/openssl/prov_ssl.h" 3 4 859623: } 859623: # 46 "/usr/include/openssl/ssl.h" 2 3 4 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: # 217 "/usr/include/openssl/ssl.h" 3 4 859623: } 859623: 859623: 859623: 859623: extern "C" { 859623: # 231 "/usr/include/openssl/ssl.h" 3 4 859623: typedef struct ssl_st *ssl_crock_st; 859623: typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; 859623: typedef struct ssl_method_st SSL_METHOD; 859623: typedef struct ssl_cipher_st SSL_CIPHER; 859623: typedef struct ssl_session_st SSL_SESSION; 859623: typedef struct tls_sigalgs_st TLS_SIGALGS; 859623: typedef struct ssl_conf_ctx_st SSL_CONF_CTX; 859623: 859623: struct stack_st_SSL_CIPHER; 859623: 859623: 859623: typedef struct srtp_protection_profile_st { 859623: const char *name; 859623: unsigned long id; 859623: } SRTP_PROTECTION_PROFILE; 859623: struct stack_st_SRTP_PROTECTION_PROFILE; typedef int (*sk_SRTP_PROTECTION_PROFILE_compfunc)(const SRTP_PROTECTION_PROFILE * const *a, const SRTP_PROTECTION_PROFILE *const *b); typedef void (*sk_SRTP_PROTECTION_PROFILE_freefunc)(SRTP_PROTECTION_PROFILE *a); typedef SRTP_PROTECTION_PROFILE * (*sk_SRTP_PROTECTION_PROFILE_copyfunc)(const SRTP_PROTECTION_PROFILE *a); static __attribute__((unused)) inline SRTP_PROTECTION_PROFILE *ossl_check_SRTP_PROTECTION_PROFILE_type(SRTP_PROTECTION_PROFILE *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(const struct stack_st_SRTP_PROTECTION_PROFILE *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_SRTP_PROTECTION_PROFILE_sk_type(struct stack_st_SRTP_PROTECTION_PROFILE *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(sk_SRTP_PROTECTION_PROFILE_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(sk_SRTP_PROTECTION_PROFILE_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(sk_SRTP_PROTECTION_PROFILE_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 275 "/usr/include/openssl/ssl.h" 3 4 859623: typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, 859623: int len, void *arg); 859623: typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, 859623: struct stack_st_SSL_CIPHER *peer_ciphers, 859623: const SSL_CIPHER **cipher, void *arg); 859623: # 311 "/usr/include/openssl/ssl.h" 3 4 859623: typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, 859623: const unsigned char **out, size_t *outlen, 859623: int *al, void *add_arg); 859623: 859623: typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, 859623: const unsigned char *out, void *add_arg); 859623: 859623: typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, 859623: const unsigned char *in, size_t inlen, 859623: int *al, void *parse_arg); 859623: 859623: 859623: typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, 859623: unsigned int context, 859623: const unsigned char **out, 859623: size_t *outlen, X509 *x, 859623: size_t chainidx, 859623: int *al, void *add_arg); 859623: 859623: typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, 859623: unsigned int context, 859623: const unsigned char *out, 859623: void *add_arg); 859623: 859623: typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, 859623: unsigned int context, 859623: const unsigned char *in, 859623: size_t inlen, X509 *x, 859623: size_t chainidx, 859623: int *al, void *parse_arg); 859623: 859623: 859623: typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); 859623: 859623: 859623: typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); 859623: # 621 "/usr/include/openssl/ssl.h" 3 4 859623: uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); 859623: uint64_t SSL_get_options(const SSL *s); 859623: uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); 859623: uint64_t SSL_clear_options(SSL *s, uint64_t op); 859623: uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); 859623: uint64_t SSL_set_options(SSL *s, uint64_t op); 859623: # 659 "/usr/include/openssl/ssl.h" 3 4 859623: void SSL_CTX_set_msg_callback(SSL_CTX *ctx, 859623: void (*cb) (int write_p, int version, 859623: int content_type, const void *buf, 859623: size_t len, SSL *ssl, void *arg)); 859623: void SSL_set_msg_callback(SSL *ssl, 859623: void (*cb) (int write_p, int version, 859623: int content_type, const void *buf, 859623: size_t len, SSL *ssl, void *arg)); 859623: # 676 "/usr/include/openssl/ssl.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_SRP_CTX_init(SSL *s); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_SRP_CTX_free(SSL *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_srp_server_param_with_username(SSL *s, 859623: int *ad); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SRP_Calc_A_param(SSL *s); 859623: # 703 "/usr/include/openssl/ssl.h" 3 4 859623: typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id, 859623: unsigned int *id_len); 859623: # 718 "/usr/include/openssl/ssl.h" 3 4 859623: struct lhash_st_SSL_SESSION *SSL_CTX_sessions(SSL_CTX *ctx); 859623: # 744 "/usr/include/openssl/ssl.h" 3 4 859623: void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, 859623: int (*new_session_cb) (struct ssl_st *ssl, 859623: SSL_SESSION *sess)); 859623: int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, 859623: SSL_SESSION *sess); 859623: void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, 859623: void (*remove_session_cb) (struct ssl_ctx_st 859623: *ctx, 859623: SSL_SESSION *sess)); 859623: void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, 859623: SSL_SESSION *sess); 859623: void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, 859623: SSL_SESSION *(*get_session_cb) (struct ssl_st 859623: *ssl, 859623: const unsigned char 859623: *data, int len, 859623: int *copy)); 859623: SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, 859623: const unsigned char *data, 859623: int len, int *copy); 859623: void SSL_CTX_set_info_callback(SSL_CTX *ctx, 859623: void (*cb) (const SSL *ssl, int type, int val)); 859623: void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, 859623: int val); 859623: void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, 859623: int (*client_cert_cb) (SSL *ssl, X509 **x509, 859623: EVP_PKEY **pkey)); 859623: int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, 859623: EVP_PKEY **pkey); 859623: 859623: int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); 859623: 859623: void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, 859623: int (*app_gen_cookie_cb) (SSL *ssl, 859623: unsigned char 859623: *cookie, 859623: unsigned int 859623: *cookie_len)); 859623: void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, 859623: int (*app_verify_cookie_cb) (SSL *ssl, 859623: const unsigned 859623: char *cookie, 859623: unsigned int 859623: cookie_len)); 859623: 859623: void SSL_CTX_set_stateless_cookie_generate_cb( 859623: SSL_CTX *ctx, 859623: int (*gen_stateless_cookie_cb) (SSL *ssl, 859623: unsigned char *cookie, 859623: size_t *cookie_len)); 859623: void SSL_CTX_set_stateless_cookie_verify_cb( 859623: SSL_CTX *ctx, 859623: int (*verify_stateless_cookie_cb) (SSL *ssl, 859623: const unsigned char *cookie, 859623: size_t cookie_len)); 859623: 859623: 859623: typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, 859623: const unsigned char **out, 859623: unsigned int *outlen, 859623: void *arg); 859623: void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, 859623: SSL_CTX_npn_advertised_cb_func cb, 859623: void *arg); 859623: 859623: 859623: typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, 859623: unsigned char **out, 859623: unsigned char *outlen, 859623: const unsigned char *in, 859623: unsigned int inlen, 859623: void *arg); 859623: void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, 859623: SSL_CTX_npn_select_cb_func cb, 859623: void *arg); 859623: 859623: 859623: void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, 859623: unsigned *len); 859623: 859623: 859623: 859623: int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, 859623: const unsigned char *in, unsigned int inlen, 859623: const unsigned char *client, 859623: unsigned int client_len); 859623: 859623: 859623: 859623: 859623: 859623: int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, 859623: unsigned int protos_len); 859623: int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, 859623: unsigned int protos_len); 859623: typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, 859623: const unsigned char **out, 859623: unsigned char *outlen, 859623: const unsigned char *in, 859623: unsigned int inlen, 859623: void *arg); 859623: void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, 859623: SSL_CTX_alpn_select_cb_func cb, 859623: void *arg); 859623: void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, 859623: unsigned int *len); 859623: # 858 "/usr/include/openssl/ssl.h" 3 4 859623: typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, 859623: const char *hint, 859623: char *identity, 859623: unsigned int max_identity_len, 859623: unsigned char *psk, 859623: unsigned int max_psk_len); 859623: void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); 859623: void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); 859623: 859623: typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, 859623: const char *identity, 859623: unsigned char *psk, 859623: unsigned int max_psk_len); 859623: void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); 859623: void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); 859623: 859623: int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); 859623: int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); 859623: const char *SSL_get_psk_identity_hint(const SSL *s); 859623: const char *SSL_get_psk_identity(const SSL *s); 859623: 859623: 859623: typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, 859623: const unsigned char *identity, 859623: size_t identity_len, 859623: SSL_SESSION **sess); 859623: typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, 859623: const unsigned char **id, 859623: size_t *idlen, 859623: SSL_SESSION **sess); 859623: 859623: void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); 859623: void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, 859623: SSL_psk_find_session_cb_func cb); 859623: void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); 859623: void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, 859623: SSL_psk_use_session_cb_func cb); 859623: 859623: 859623: 859623: int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, 859623: unsigned int ext_type); 859623: 859623: int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, 859623: unsigned int ext_type, 859623: custom_ext_add_cb add_cb, 859623: custom_ext_free_cb free_cb, 859623: void *add_arg, 859623: custom_ext_parse_cb parse_cb, 859623: void *parse_arg); 859623: 859623: int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, 859623: unsigned int ext_type, 859623: custom_ext_add_cb add_cb, 859623: custom_ext_free_cb free_cb, 859623: void *add_arg, 859623: custom_ext_parse_cb parse_cb, 859623: void *parse_arg); 859623: 859623: int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, 859623: unsigned int context, 859623: SSL_custom_ext_add_cb_ex add_cb, 859623: SSL_custom_ext_free_cb_ex free_cb, 859623: void *add_arg, 859623: SSL_custom_ext_parse_cb_ex parse_cb, 859623: void *parse_arg); 859623: 859623: int SSL_extension_supported(unsigned int ext_type); 859623: # 955 "/usr/include/openssl/ssl.h" 3 4 859623: typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); 859623: 859623: 859623: 859623: 859623: 859623: 859623: void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); 859623: 859623: 859623: 859623: 859623: 859623: SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); 859623: 859623: int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); 859623: uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); 859623: int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); 859623: uint32_t SSL_get_max_early_data(const SSL *s); 859623: int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); 859623: uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); 859623: int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); 859623: uint32_t SSL_get_recv_max_early_data(const SSL *s); 859623: 859623: 859623: } 859623: 859623: 859623: # 1 "/usr/include/openssl/ssl2.h" 1 3 4 859623: # 12 "/usr/include/openssl/ssl2.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: # 984 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/ssl3.h" 1 3 4 859623: # 13 "/usr/include/openssl/ssl3.h" 3 4 859623: 859623: # 26 "/usr/include/openssl/ssl3.h" 3 4 859623: extern "C" { 859623: # 356 "/usr/include/openssl/ssl3.h" 3 4 859623: } 859623: # 985 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/tls1.h" 1 3 4 859623: # 14 "/usr/include/openssl/tls1.h" 3 4 859623: 859623: # 26 "/usr/include/openssl/tls1.h" 3 4 859623: extern "C" { 859623: # 246 "/usr/include/openssl/tls1.h" 3 4 859623: int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); 859623: int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); 859623: 859623: 859623: 859623: const char *SSL_get_servername(const SSL *s, const int type); 859623: int SSL_get_servername_type(const SSL *s); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, 859623: const char *label, size_t llen, 859623: const unsigned char *context, 859623: size_t contextlen, int use_context); 859623: # 272 "/usr/include/openssl/tls1.h" 3 4 859623: int SSL_export_keying_material_early(SSL *s, unsigned char *out, 859623: size_t olen, const char *label, 859623: size_t llen, 859623: const unsigned char *context, 859623: size_t contextlen); 859623: 859623: int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); 859623: int SSL_get_signature_type_nid(const SSL *s, int *pnid); 859623: 859623: int SSL_get_sigalgs(SSL *s, int idx, 859623: int *psign, int *phash, int *psignandhash, 859623: unsigned char *rsig, unsigned char *rhash); 859623: 859623: char *SSL_get1_builtin_sigalgs(OSSL_LIB_CTX *libctx); 859623: 859623: int SSL_get_shared_sigalgs(SSL *s, int idx, 859623: int *psign, int *phash, int *psignandhash, 859623: unsigned char *rsig, unsigned char *rhash); 859623: 859623: int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, struct stack_st_X509 *chain); 859623: # 367 "/usr/include/openssl/tls1.h" 3 4 859623: int SSL_CTX_set_tlsext_ticket_key_evp_cb 859623: (SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *, 859623: EVP_CIPHER_CTX *, EVP_MAC_CTX *, int)); 859623: # 1212 "/usr/include/openssl/tls1.h" 3 4 859623: struct tls_session_ticket_ext_st { 859623: unsigned short length; 859623: void *data; 859623: }; 859623: 859623: 859623: } 859623: # 986 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/dtls1.h" 1 3 4 859623: # 12 "/usr/include/openssl/dtls1.h" 3 4 859623: 859623: # 22 "/usr/include/openssl/dtls1.h" 3 4 859623: extern "C" { 859623: # 55 "/usr/include/openssl/dtls1.h" 3 4 859623: } 859623: # 987 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/srtp.h" 1 3 4 859623: # 18 "/usr/include/openssl/srtp.h" 3 4 859623: 859623: # 28 "/usr/include/openssl/srtp.h" 3 4 859623: extern "C" { 859623: # 56 "/usr/include/openssl/srtp.h" 3 4 859623: int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); 859623: int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); 859623: 859623: struct stack_st_SRTP_PROTECTION_PROFILE *SSL_get_srtp_profiles(SSL *ssl); 859623: SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); 859623: 859623: 859623: 859623: 859623: } 859623: # 988 "/usr/include/openssl/ssl.h" 2 3 4 859623: # 1 "/usr/include/openssl/quic.h" 1 3 4 859623: # 12 "/usr/include/openssl/quic.h" 3 4 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: const SSL_METHOD *OSSL_QUIC_client_method(void); 859623: 859623: 859623: 859623: 859623: const SSL_METHOD *OSSL_QUIC_client_thread_method(void); 859623: # 68 "/usr/include/openssl/quic.h" 3 4 859623: const SSL_METHOD *OSSL_QUIC_server_method(void); 859623: 859623: 859623: } 859623: # 989 "/usr/include/openssl/ssl.h" 2 3 4 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct stack_st_SSL_CIPHER; typedef int (*sk_SSL_CIPHER_compfunc)(const SSL_CIPHER * const *a, const SSL_CIPHER *const *b); typedef void (*sk_SSL_CIPHER_freefunc)(SSL_CIPHER *a); typedef SSL_CIPHER * (*sk_SSL_CIPHER_copyfunc)(const SSL_CIPHER *a); static __attribute__((unused)) inline const SSL_CIPHER *ossl_check_SSL_CIPHER_type(const SSL_CIPHER *ptr) { return ptr; } static __attribute__((unused)) inline const OPENSSL_STACK *ossl_check_const_SSL_CIPHER_sk_type(const struct stack_st_SSL_CIPHER *sk) { return (const OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_STACK *ossl_check_SSL_CIPHER_sk_type(struct stack_st_SSL_CIPHER *sk) { return (OPENSSL_STACK *)sk; } static __attribute__((unused)) inline OPENSSL_sk_compfunc ossl_check_SSL_CIPHER_compfunc_type(sk_SSL_CIPHER_compfunc cmp) { return (OPENSSL_sk_compfunc)cmp; } static __attribute__((unused)) inline OPENSSL_sk_copyfunc ossl_check_SSL_CIPHER_copyfunc_type(sk_SSL_CIPHER_copyfunc cpy) { return (OPENSSL_sk_copyfunc)cpy; } static __attribute__((unused)) inline OPENSSL_sk_freefunc ossl_check_SSL_CIPHER_freefunc_type(sk_SSL_CIPHER_freefunc fr) { return (OPENSSL_sk_freefunc)fr; } 859623: # 1036 "/usr/include/openssl/ssl.h" 3 4 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) void SSL_set_debug(SSL *s, int debug); 859623: # 1058 "/usr/include/openssl/ssl.h" 3 4 859623: typedef enum { 859623: TLS_ST_BEFORE, 859623: TLS_ST_OK, 859623: DTLS_ST_CR_HELLO_VERIFY_REQUEST, 859623: TLS_ST_CR_SRVR_HELLO, 859623: TLS_ST_CR_CERT, 859623: TLS_ST_CR_COMP_CERT, 859623: TLS_ST_CR_CERT_STATUS, 859623: TLS_ST_CR_KEY_EXCH, 859623: TLS_ST_CR_CERT_REQ, 859623: TLS_ST_CR_SRVR_DONE, 859623: TLS_ST_CR_SESSION_TICKET, 859623: TLS_ST_CR_CHANGE, 859623: TLS_ST_CR_FINISHED, 859623: TLS_ST_CW_CLNT_HELLO, 859623: TLS_ST_CW_CERT, 859623: TLS_ST_CW_COMP_CERT, 859623: TLS_ST_CW_KEY_EXCH, 859623: TLS_ST_CW_CERT_VRFY, 859623: TLS_ST_CW_CHANGE, 859623: TLS_ST_CW_NEXT_PROTO, 859623: TLS_ST_CW_FINISHED, 859623: TLS_ST_SW_HELLO_REQ, 859623: TLS_ST_SR_CLNT_HELLO, 859623: DTLS_ST_SW_HELLO_VERIFY_REQUEST, 859623: TLS_ST_SW_SRVR_HELLO, 859623: TLS_ST_SW_CERT, 859623: TLS_ST_SW_COMP_CERT, 859623: TLS_ST_SW_KEY_EXCH, 859623: TLS_ST_SW_CERT_REQ, 859623: TLS_ST_SW_SRVR_DONE, 859623: TLS_ST_SR_CERT, 859623: TLS_ST_SR_COMP_CERT, 859623: TLS_ST_SR_KEY_EXCH, 859623: TLS_ST_SR_CERT_VRFY, 859623: TLS_ST_SR_NEXT_PROTO, 859623: TLS_ST_SR_CHANGE, 859623: TLS_ST_SR_FINISHED, 859623: TLS_ST_SW_SESSION_TICKET, 859623: TLS_ST_SW_CERT_STATUS, 859623: TLS_ST_SW_CHANGE, 859623: TLS_ST_SW_FINISHED, 859623: TLS_ST_SW_ENCRYPTED_EXTENSIONS, 859623: TLS_ST_CR_ENCRYPTED_EXTENSIONS, 859623: TLS_ST_CR_CERT_VRFY, 859623: TLS_ST_SW_CERT_VRFY, 859623: TLS_ST_CR_HELLO_REQ, 859623: TLS_ST_SW_KEY_UPDATE, 859623: TLS_ST_CW_KEY_UPDATE, 859623: TLS_ST_SR_KEY_UPDATE, 859623: TLS_ST_CR_KEY_UPDATE, 859623: TLS_ST_EARLY_DATA, 859623: TLS_ST_PENDING_EARLY_DATA_END, 859623: TLS_ST_CW_END_OF_EARLY_DATA, 859623: TLS_ST_SR_END_OF_EARLY_DATA 859623: } OSSL_HANDSHAKE_STATE; 859623: # 1145 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_in_init(const SSL *s); 859623: int SSL_in_before(const SSL *s); 859623: int SSL_is_init_finished(const SSL *s); 859623: # 1163 "/usr/include/openssl/ssl.h" 3 4 859623: size_t SSL_get_finished(const SSL *s, void *buf, size_t count); 859623: size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); 859623: # 1198 "/usr/include/openssl/ssl.h" 3 4 859623: extern SSL_SESSION *PEM_read_bio_SSL_SESSION(BIO *out, SSL_SESSION **x, pem_password_cb *cb, void *u); extern SSL_SESSION *PEM_read_SSL_SESSION(FILE *out, SSL_SESSION **x, pem_password_cb *cb, void *u); extern int PEM_write_bio_SSL_SESSION(BIO *out, const SSL_SESSION *x); extern int PEM_write_SSL_SESSION(FILE *out, const SSL_SESSION *x); 859623: # 1564 "/usr/include/openssl/ssl.h" 3 4 859623: const char *SSL_get0_group_name(SSL *s); 859623: const char *SSL_group_to_name(SSL *s, int id); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); 859623: int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); 859623: # 1608 "/usr/include/openssl/ssl.h" 3 4 859623: const BIO_METHOD *BIO_f_ssl(void); 859623: BIO *BIO_new_ssl(SSL_CTX *ctx, int client); 859623: BIO *BIO_new_ssl_connect(SSL_CTX *ctx); 859623: BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); 859623: int BIO_ssl_copy_session_id(BIO *to, BIO *from); 859623: void BIO_ssl_shutdown(BIO *ssl_bio); 859623: 859623: int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); 859623: SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); 859623: SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, 859623: const SSL_METHOD *meth); 859623: int SSL_CTX_up_ref(SSL_CTX *ctx); 859623: void SSL_CTX_free(SSL_CTX *); 859623: long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); 859623: long SSL_CTX_get_timeout(const SSL_CTX *ctx); 859623: X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); 859623: void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); 859623: void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); 859623: int SSL_want(const SSL *s); 859623: int SSL_clear(SSL *s); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.4" ";" "not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()"))) 859623: void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); 859623: 859623: void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); 859623: 859623: const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); 859623: const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); 859623: int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); 859623: const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); 859623: const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); 859623: const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); 859623: const char *OPENSSL_cipher_name(const char *rfc_name); 859623: uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); 859623: uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); 859623: int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); 859623: int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); 859623: const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); 859623: int SSL_CIPHER_is_aead(const SSL_CIPHER *c); 859623: 859623: int SSL_get_fd(const SSL *s); 859623: int SSL_get_rfd(const SSL *s); 859623: int SSL_get_wfd(const SSL *s); 859623: const char *SSL_get_cipher_list(const SSL *s, int n); 859623: char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); 859623: int SSL_get_read_ahead(const SSL *s); 859623: int SSL_pending(const SSL *s); 859623: int SSL_has_pending(const SSL *s); 859623: 859623: int SSL_set_fd(SSL *s, int fd); 859623: int SSL_set_rfd(SSL *s, int fd); 859623: int SSL_set_wfd(SSL *s, int fd); 859623: 859623: void SSL_set0_rbio(SSL *s, BIO *rbio); 859623: void SSL_set0_wbio(SSL *s, BIO *wbio); 859623: void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); 859623: BIO *SSL_get_rbio(const SSL *s); 859623: BIO *SSL_get_wbio(const SSL *s); 859623: int SSL_set_cipher_list(SSL *s, const char *str); 859623: int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); 859623: int SSL_set_ciphersuites(SSL *s, const char *str); 859623: void SSL_set_read_ahead(SSL *s, int yes); 859623: int SSL_get_verify_mode(const SSL *s); 859623: int SSL_get_verify_depth(const SSL *s); 859623: SSL_verify_cb SSL_get_verify_callback(const SSL *s); 859623: void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); 859623: void SSL_set_verify_depth(SSL *s, int depth); 859623: void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, 859623: const unsigned char *d, long len); 859623: 859623: int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); 859623: int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, 859623: long len); 859623: int SSL_use_certificate(SSL *ssl, X509 *x); 859623: int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); 859623: int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, 859623: struct stack_st_X509 *chain, int override); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, 859623: size_t serverinfo_length); 859623: int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, 859623: const unsigned char *serverinfo, 859623: size_t serverinfo_length); 859623: int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); 859623: 859623: 859623: int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); 859623: int SSL_use_certificate_file(SSL *ssl, const char *file, int type); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, 859623: int type); 859623: 859623: int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, 859623: int type); 859623: int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, 859623: int type); 859623: 859623: int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); 859623: int SSL_use_certificate_chain_file(SSL *ssl, const char *file); 859623: struct stack_st_X509_NAME *SSL_load_client_CA_file(const char *file); 859623: struct stack_st_X509_NAME 859623: *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: int SSL_add_file_cert_subjects_to_stack(struct stack_st_X509_NAME *stackCAs, 859623: const char *file); 859623: int SSL_add_dir_cert_subjects_to_stack(struct stack_st_X509_NAME *stackCAs, 859623: const char *dir); 859623: int SSL_add_store_cert_subjects_to_stack(struct stack_st_X509_NAME *stackCAs, 859623: const char *uri); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: const char *SSL_state_string(const SSL *s); 859623: const char *SSL_rstate_string(const SSL *s); 859623: const char *SSL_state_string_long(const SSL *s); 859623: const char *SSL_rstate_string_long(const SSL *s); 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.4" ";" "not Y2038-safe, replace with SSL_SESSION_get_time_ex()"))) 859623: long SSL_SESSION_get_time(const SSL_SESSION *s); 859623: __attribute__((deprecated("Since OpenSSL " "3.4" ";" "not Y2038-safe, replace with SSL_SESSION_set_time_ex()"))) 859623: long SSL_SESSION_set_time(SSL_SESSION *s, long t); 859623: 859623: long SSL_SESSION_get_timeout(const SSL_SESSION *s); 859623: long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); 859623: int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); 859623: int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); 859623: 859623: time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); 859623: time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); 859623: 859623: const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); 859623: int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); 859623: void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, 859623: const unsigned char **alpn, 859623: size_t *len); 859623: int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, 859623: const unsigned char *alpn, 859623: size_t len); 859623: const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); 859623: int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); 859623: int SSL_SESSION_has_ticket(const SSL_SESSION *s); 859623: unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); 859623: void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, 859623: size_t *len); 859623: uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); 859623: int SSL_SESSION_set_max_early_data(SSL_SESSION *s, 859623: uint32_t max_early_data); 859623: int SSL_copy_session_id(SSL *to, const SSL *from); 859623: X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); 859623: int SSL_SESSION_set1_id_context(SSL_SESSION *s, 859623: const unsigned char *sid_ctx, 859623: unsigned int sid_ctx_len); 859623: int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, 859623: unsigned int sid_len); 859623: int SSL_SESSION_is_resumable(const SSL_SESSION *s); 859623: 859623: SSL_SESSION *SSL_SESSION_new(void); 859623: SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); 859623: const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, 859623: unsigned int *len); 859623: const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, 859623: unsigned int *len); 859623: unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); 859623: 859623: int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); 859623: 859623: int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); 859623: int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); 859623: int SSL_SESSION_up_ref(SSL_SESSION *ses); 859623: void SSL_SESSION_free(SSL_SESSION *ses); 859623: int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); 859623: int SSL_set_session(SSL *to, SSL_SESSION *session); 859623: int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); 859623: int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); 859623: int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); 859623: int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); 859623: int SSL_has_matching_session_id(const SSL *s, 859623: const unsigned char *id, 859623: unsigned int id_len); 859623: SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, 859623: long length); 859623: SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, 859623: long length, OSSL_LIB_CTX *libctx, 859623: const char *propq); 859623: 859623: 859623: X509 *SSL_get0_peer_certificate(const SSL *s); 859623: X509 *SSL_get1_peer_certificate(const SSL *s); 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct stack_st_X509 *SSL_get_peer_cert_chain(const SSL *s); 859623: 859623: int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); 859623: int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); 859623: SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); 859623: void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); 859623: void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); 859623: void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, 859623: int (*cb) (X509_STORE_CTX *, void *), 859623: void *arg); 859623: void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), 859623: void *arg); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, 859623: long len); 859623: 859623: int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); 859623: int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, 859623: const unsigned char *d, long len); 859623: int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); 859623: int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, 859623: const unsigned char *d); 859623: int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, 859623: struct stack_st_X509 *chain, int override); 859623: 859623: void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); 859623: void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); 859623: pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); 859623: void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); 859623: void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); 859623: void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); 859623: pem_password_cb *SSL_get_default_passwd_cb(SSL *s); 859623: void *SSL_get_default_passwd_cb_userdata(SSL *s); 859623: 859623: int SSL_CTX_check_private_key(const SSL_CTX *ctx); 859623: int SSL_check_private_key(const SSL *ctx); 859623: 859623: int SSL_CTX_set_session_id_context(SSL_CTX *ctx, 859623: const unsigned char *sid_ctx, 859623: unsigned int sid_ctx_len); 859623: 859623: SSL *SSL_new(SSL_CTX *ctx); 859623: int SSL_up_ref(SSL *s); 859623: int SSL_is_dtls(const SSL *s); 859623: int SSL_is_tls(const SSL *s); 859623: int SSL_is_quic(const SSL *s); 859623: int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, 859623: unsigned int sid_ctx_len); 859623: 859623: int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); 859623: int SSL_set_purpose(SSL *ssl, int purpose); 859623: int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); 859623: int SSL_set_trust(SSL *ssl, int trust); 859623: 859623: int SSL_set1_host(SSL *s, const char *host); 859623: int SSL_add1_host(SSL *s, const char *host); 859623: const char *SSL_get0_peername(SSL *s); 859623: void SSL_set_hostflags(SSL *s, unsigned int flags); 859623: 859623: int SSL_CTX_dane_enable(SSL_CTX *ctx); 859623: int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, 859623: uint8_t mtype, uint8_t ord); 859623: int SSL_dane_enable(SSL *s, const char *basedomain); 859623: int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, 859623: uint8_t mtype, const unsigned char *data, size_t dlen); 859623: int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); 859623: int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, 859623: uint8_t *mtype, const unsigned char **data, 859623: size_t *dlen); 859623: 859623: 859623: 859623: 859623: SSL_DANE *SSL_get0_dane(SSL *ssl); 859623: 859623: 859623: 859623: unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); 859623: unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); 859623: unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); 859623: unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); 859623: 859623: int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); 859623: int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); 859623: 859623: X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); 859623: X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, 859623: char *(*cb) (SSL *, void *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, 859623: int (*cb) (SSL *, void *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, 859623: int (*cb) (SSL *, int *, void *)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, 859623: BIGNUM *sa, BIGNUM *v, char *info); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, 859623: const char *grp); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) BIGNUM *SSL_get_srp_g(SSL *s); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) BIGNUM *SSL_get_srp_N(SSL *s); 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) char *SSL_get_srp_username(SSL *s); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) char *SSL_get_srp_userinfo(SSL *s); 859623: # 1954 "/usr/include/openssl/ssl.h" 3 4 859623: typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); 859623: void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, 859623: void *arg); 859623: typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl, 859623: void *arg); 859623: void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, 859623: void *arg); 859623: 859623: int SSL_client_hello_isv2(SSL *s); 859623: unsigned int SSL_client_hello_get0_legacy_version(SSL *s); 859623: size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); 859623: size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); 859623: size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); 859623: size_t SSL_client_hello_get0_compression_methods(SSL *s, 859623: const unsigned char **out); 859623: int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); 859623: int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, 859623: size_t *num_exts); 859623: int SSL_client_hello_get0_ext(SSL *s, unsigned int type, 859623: const unsigned char **out, size_t *outlen); 859623: 859623: void SSL_certs_clear(SSL *s); 859623: void SSL_free(SSL *ssl); 859623: 859623: 859623: 859623: 859623: int SSL_waiting_for_async(SSL *s); 859623: int SSL_get_all_async_fds(SSL *s, int *fds, size_t *numfds); 859623: int SSL_get_changed_async_fds(SSL *s, int *addfd, 859623: size_t *numaddfds, int *delfd, 859623: size_t *numdelfds); 859623: int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); 859623: int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); 859623: int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); 859623: int SSL_set_async_callback_arg(SSL *s, void *arg); 859623: int SSL_get_async_status(SSL *s, int *status); 859623: 859623: 859623: int SSL_accept(SSL *ssl); 859623: int SSL_stateless(SSL *s); 859623: int SSL_connect(SSL *ssl); 859623: int SSL_read(SSL *ssl, void *buf, int num); 859623: int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); 859623: 859623: 859623: 859623: 859623: 859623: int SSL_read_early_data(SSL *s, void *buf, size_t num, 859623: size_t *readbytes); 859623: int SSL_peek(SSL *ssl, void *buf, int num); 859623: int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); 859623: ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, 859623: int flags); 859623: int SSL_write(SSL *ssl, const void *buf, int num); 859623: int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); 859623: int SSL_write_early_data(SSL *s, const void *buf, size_t num, 859623: size_t *written); 859623: long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); 859623: long SSL_callback_ctrl(SSL *, int, void (*)(void)); 859623: long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); 859623: long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); 859623: 859623: 859623: 859623: int SSL_write_ex2(SSL *s, const void *buf, size_t num, 859623: uint64_t flags, 859623: size_t *written); 859623: 859623: 859623: 859623: 859623: 859623: int SSL_get_early_data_status(const SSL *s); 859623: 859623: int SSL_get_error(const SSL *s, int ret_code); 859623: const char *SSL_get_version(const SSL *s); 859623: int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); 859623: # 2053 "/usr/include/openssl/ssl.h" 3 4 859623: const SSL_METHOD *TLS_method(void); 859623: const SSL_METHOD *TLS_server_method(void); 859623: const SSL_METHOD *TLS_client_method(void); 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_server_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_client_method(void); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_1_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_1_server_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_1_client_method(void); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_2_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_2_server_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *TLSv1_2_client_method(void); 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *DTLSv1_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *DTLSv1_server_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *DTLSv1_client_method(void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *DTLSv1_2_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *DTLSv1_2_server_method(void); 859623: __attribute__((deprecated("Since OpenSSL " "1.1.0"))) const SSL_METHOD *DTLSv1_2_client_method(void); 859623: 859623: 859623: 859623: const SSL_METHOD *DTLS_method(void); 859623: const SSL_METHOD *DTLS_server_method(void); 859623: const SSL_METHOD *DTLS_client_method(void); 859623: 859623: size_t DTLS_get_data_mtu(const SSL *s); 859623: 859623: struct stack_st_SSL_CIPHER *SSL_get_ciphers(const SSL *s); 859623: struct stack_st_SSL_CIPHER *SSL_CTX_get_ciphers(const SSL_CTX *ctx); 859623: struct stack_st_SSL_CIPHER *SSL_get_client_ciphers(const SSL *s); 859623: struct stack_st_SSL_CIPHER *SSL_get1_supported_ciphers(SSL *s); 859623: 859623: int SSL_do_handshake(SSL *s); 859623: int SSL_key_update(SSL *s, int updatetype); 859623: int SSL_get_key_update_type(const SSL *s); 859623: int SSL_renegotiate(SSL *s); 859623: int SSL_renegotiate_abbreviated(SSL *s); 859623: int SSL_renegotiate_pending(const SSL *s); 859623: int SSL_new_session_ticket(SSL *s); 859623: int SSL_shutdown(SSL *s); 859623: int SSL_verify_client_post_handshake(SSL *s); 859623: void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); 859623: void SSL_set_post_handshake_auth(SSL *s, int val); 859623: 859623: const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); 859623: const SSL_METHOD *SSL_get_ssl_method(const SSL *s); 859623: int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); 859623: const char *SSL_alert_type_string_long(int value); 859623: const char *SSL_alert_type_string(int value); 859623: const char *SSL_alert_desc_string_long(int value); 859623: const char *SSL_alert_desc_string(int value); 859623: 859623: void SSL_set0_CA_list(SSL *s, struct stack_st_X509_NAME *name_list); 859623: void SSL_CTX_set0_CA_list(SSL_CTX *ctx, struct stack_st_X509_NAME *name_list); 859623: const struct stack_st_X509_NAME *SSL_get0_CA_list(const SSL *s); 859623: const struct stack_st_X509_NAME *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); 859623: int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); 859623: int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); 859623: const struct stack_st_X509_NAME *SSL_get0_peer_CA_list(const SSL *s); 859623: 859623: void SSL_set_client_CA_list(SSL *s, struct stack_st_X509_NAME *name_list); 859623: void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, struct stack_st_X509_NAME *name_list); 859623: struct stack_st_X509_NAME *SSL_get_client_CA_list(const SSL *s); 859623: struct stack_st_X509_NAME *SSL_CTX_get_client_CA_list(const SSL_CTX *s); 859623: int SSL_add_client_CA(SSL *ssl, X509 *x); 859623: int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); 859623: 859623: void SSL_set_connect_state(SSL *s); 859623: void SSL_set_accept_state(SSL *s); 859623: 859623: long SSL_get_default_timeout(const SSL *s); 859623: 859623: 859623: 859623: 859623: 859623: char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); 859623: struct stack_st_X509_NAME *SSL_dup_CA_list(const struct stack_st_X509_NAME *sk); 859623: 859623: SSL *SSL_dup(SSL *ssl); 859623: 859623: X509 *SSL_get_certificate(const SSL *ssl); 859623: 859623: 859623: 859623: struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); 859623: 859623: X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); 859623: EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); 859623: 859623: void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); 859623: int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); 859623: void SSL_set_quiet_shutdown(SSL *ssl, int mode); 859623: int SSL_get_quiet_shutdown(const SSL *ssl); 859623: void SSL_set_shutdown(SSL *ssl, int mode); 859623: int SSL_get_shutdown(const SSL *ssl); 859623: int SSL_version(const SSL *ssl); 859623: int SSL_client_version(const SSL *s); 859623: int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); 859623: int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); 859623: int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); 859623: int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); 859623: int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); 859623: int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); 859623: int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); 859623: int SSL_CTX_load_verify_locations(SSL_CTX *ctx, 859623: const char *CAfile, 859623: const char *CApath); 859623: 859623: SSL_SESSION *SSL_get_session(const SSL *ssl); 859623: SSL_SESSION *SSL_get1_session(SSL *ssl); 859623: SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); 859623: SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); 859623: void SSL_set_info_callback(SSL *ssl, 859623: void (*cb) (const SSL *ssl, int type, int val)); 859623: void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, 859623: int val); 859623: OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); 859623: 859623: void SSL_set_verify_result(SSL *ssl, long v); 859623: long SSL_get_verify_result(const SSL *ssl); 859623: struct stack_st_X509 *SSL_get0_verified_chain(const SSL *s); 859623: 859623: size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, 859623: size_t outlen); 859623: size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, 859623: size_t outlen); 859623: size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, 859623: unsigned char *out, size_t outlen); 859623: int SSL_SESSION_set1_master_key(SSL_SESSION *sess, 859623: const unsigned char *in, size_t len); 859623: uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); 859623: 859623: 859623: 859623: int SSL_set_ex_data(SSL *ssl, int idx, void *data); 859623: void *SSL_get_ex_data(const SSL *ssl, int idx); 859623: 859623: 859623: int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); 859623: void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); 859623: 859623: 859623: int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); 859623: void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); 859623: 859623: int SSL_get_ex_data_X509_STORE_CTX_idx(void); 859623: # 2264 "/usr/include/openssl/ssl.h" 3 4 859623: void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); 859623: void SSL_set_default_read_buffer_len(SSL *s, size_t len); 859623: 859623: 859623: 859623: 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, 859623: DH *(*dh) (SSL *ssl, int is_export, 859623: int keylength)); 859623: __attribute__((deprecated("Since OpenSSL " "3.0"))) 859623: void SSL_set_tmp_dh_callback(SSL *ssl, 859623: DH *(*dh) (SSL *ssl, int is_export, 859623: int keylength)); 859623: 859623: 859623: 859623: const COMP_METHOD *SSL_get_current_compression(const SSL *s); 859623: const COMP_METHOD *SSL_get_current_expansion(const SSL *s); 859623: const char *SSL_COMP_get_name(const COMP_METHOD *comp); 859623: const char *SSL_COMP_get0_name(const SSL_COMP *comp); 859623: int SSL_COMP_get_id(const SSL_COMP *comp); 859623: struct stack_st_SSL_COMP *SSL_COMP_get_compression_methods(void); 859623: struct stack_st_SSL_COMP *SSL_COMP_set0_compression_methods(struct stack_st_SSL_COMP 859623: *meths); 859623: 859623: 859623: 859623: int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); 859623: 859623: const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); 859623: int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); 859623: int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); 859623: int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, 859623: int isv2format, struct stack_st_SSL_CIPHER **sk, 859623: struct stack_st_SSL_CIPHER **scsvs); 859623: 859623: 859623: int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); 859623: 859623: int SSL_set_session_ticket_ext_cb(SSL *s, 859623: tls_session_ticket_ext_cb_fn cb, 859623: void *arg); 859623: 859623: 859623: int SSL_set_session_secret_cb(SSL *s, 859623: tls_session_secret_cb_fn session_secret_cb, 859623: void *arg); 859623: 859623: void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, 859623: int (*cb) (SSL *ssl, 859623: int 859623: is_forward_secure)); 859623: 859623: void SSL_set_not_resumable_session_callback(SSL *ssl, 859623: int (*cb) (SSL *ssl, 859623: int is_forward_secure)); 859623: 859623: void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, 859623: size_t (*cb) (SSL *ssl, int type, 859623: size_t len, void *arg)); 859623: void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); 859623: void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); 859623: int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); 859623: int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, 859623: size_t hs_block_size); 859623: 859623: int SSL_set_record_padding_callback(SSL *ssl, 859623: size_t (*cb) (SSL *ssl, int type, 859623: size_t len, void *arg)); 859623: void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); 859623: void *SSL_get_record_padding_callback_arg(const SSL *ssl); 859623: int SSL_set_block_padding(SSL *ssl, size_t block_size); 859623: int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, 859623: size_t hs_block_size); 859623: int SSL_set_num_tickets(SSL *s, size_t num_tickets); 859623: size_t SSL_get_num_tickets(const SSL *s); 859623: int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); 859623: size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); 859623: 859623: 859623: int SSL_handle_events(SSL *s); 859623: int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); 859623: int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); 859623: int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); 859623: int SSL_net_read_desired(SSL *s); 859623: int SSL_net_write_desired(SSL *s); 859623: int SSL_set_blocking_mode(SSL *s, int blocking); 859623: int SSL_get_blocking_mode(SSL *s); 859623: int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); 859623: SSL *SSL_get0_connection(SSL *s); 859623: int SSL_is_connection(SSL *s); 859623: 859623: int SSL_is_listener(SSL *ssl); 859623: SSL *SSL_get0_listener(SSL *s); 859623: 859623: SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); 859623: SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); 859623: SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); 859623: 859623: SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); 859623: size_t SSL_get_accept_connection_queue_len(SSL *ssl); 859623: int SSL_listen(SSL *ssl); 859623: 859623: int SSL_is_domain(SSL *s); 859623: SSL *SSL_get0_domain(SSL *s); 859623: SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); 859623: int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); 859623: int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); 859623: 859623: 859623: 859623: 859623: 859623: int SSL_get_stream_type(SSL *s); 859623: 859623: uint64_t SSL_get_stream_id(SSL *s); 859623: int SSL_is_stream_local(SSL *s); 859623: 859623: 859623: 859623: 859623: int SSL_set_default_stream_mode(SSL *s, uint32_t mode); 859623: 859623: 859623: 859623: 859623: SSL *SSL_new_stream(SSL *s, uint64_t flags); 859623: 859623: 859623: 859623: 859623: int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); 859623: 859623: 859623: SSL *SSL_accept_stream(SSL *s, uint64_t flags); 859623: size_t SSL_get_accept_stream_queue_len(SSL *s); 859623: 859623: 859623: int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, 859623: size_t buf_len, 859623: const BIO_ADDR *peer, 859623: const BIO_ADDR *local); 859623: 859623: 859623: typedef struct ssl_shutdown_ex_args_st { 859623: uint64_t quic_error_code; 859623: const char *quic_reason; 859623: } SSL_SHUTDOWN_EX_ARGS; 859623: 859623: 859623: 859623: 859623: 859623: 859623: int SSL_shutdown_ex(SSL *ssl, uint64_t flags, 859623: const SSL_SHUTDOWN_EX_ARGS *args, 859623: size_t args_len); 859623: 859623: int SSL_stream_conclude(SSL *ssl, uint64_t flags); 859623: 859623: typedef struct ssl_stream_reset_args_st { 859623: uint64_t quic_error_code; 859623: } SSL_STREAM_RESET_ARGS; 859623: 859623: int SSL_stream_reset(SSL *ssl, 859623: const SSL_STREAM_RESET_ARGS *args, 859623: size_t args_len); 859623: # 2448 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_get_stream_read_state(SSL *ssl); 859623: int SSL_get_stream_write_state(SSL *ssl); 859623: 859623: int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); 859623: int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); 859623: 859623: 859623: 859623: 859623: typedef struct ssl_conn_close_info_st { 859623: uint64_t error_code, frame_type; 859623: const char *reason; 859623: size_t reason_len; 859623: uint32_t flags; 859623: } SSL_CONN_CLOSE_INFO; 859623: 859623: int SSL_get_conn_close_info(SSL *ssl, 859623: SSL_CONN_CLOSE_INFO *info, 859623: size_t info_len); 859623: # 2488 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); 859623: int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); 859623: # 2562 "/usr/include/openssl/ssl.h" 3 4 859623: typedef struct ssl_poll_item_st { 859623: BIO_POLL_DESCRIPTOR desc; 859623: uint64_t events, revents; 859623: } SSL_POLL_ITEM; 859623: 859623: 859623: 859623: int SSL_poll(SSL_POLL_ITEM *items, 859623: size_t num_items, 859623: size_t stride, 859623: const struct timeval *timeout, 859623: uint64_t flags, 859623: size_t *result_count); 859623: 859623: static inline __attribute__((unused)) BIO_POLL_DESCRIPTOR 859623: SSL_as_poll_descriptor(SSL *s) 859623: { 859623: BIO_POLL_DESCRIPTOR d; 859623: 859623: d.type = 2; 859623: d.value.ssl = s; 859623: return d; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: int SSL_session_reused(const SSL *s); 859623: int SSL_is_server(const SSL *s); 859623: 859623: SSL_CONF_CTX *SSL_CONF_CTX_new(void); 859623: int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); 859623: void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); 859623: unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); 859623: unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, 859623: unsigned int flags); 859623: int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); 859623: 859623: void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); 859623: void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); 859623: 859623: int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); 859623: int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); 859623: int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); 859623: 859623: void SSL_add_ssl_module(void); 859623: int SSL_config(SSL *s, const char *name); 859623: int SSL_CTX_config(SSL_CTX *ctx, const char *name); 859623: 859623: 859623: void SSL_trace(int write_p, int version, int content_type, 859623: const void *buf, size_t len, SSL *ssl, void *arg); 859623: 859623: 859623: 859623: int DTLSv1_listen(SSL *s, BIO_ADDR *client); 859623: # 2629 "/usr/include/openssl/ssl.h" 3 4 859623: typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, 859623: const struct stack_st_SCT *scts, void *arg); 859623: # 2644 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, 859623: void *arg); 859623: int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, 859623: ssl_ct_validation_cb callback, 859623: void *arg); 859623: # 2659 "/usr/include/openssl/ssl.h" 3 4 859623: enum { 859623: SSL_CT_VALIDATION_PERMISSIVE = 0, 859623: SSL_CT_VALIDATION_STRICT 859623: }; 859623: # 2672 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_enable_ct(SSL *s, int validation_mode); 859623: int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); 859623: 859623: 859623: 859623: 859623: int SSL_ct_is_enabled(const SSL *s); 859623: int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); 859623: 859623: 859623: const struct stack_st_SCT *SSL_get0_peer_scts(SSL *s); 859623: # 2691 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); 859623: # 2700 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); 859623: 859623: 859623: 859623: 859623: 859623: void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); 859623: # 2715 "/usr/include/openssl/ssl.h" 3 4 859623: const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); 859623: # 2777 "/usr/include/openssl/ssl.h" 3 4 859623: void SSL_set_security_level(SSL *s, int level); 859623: int SSL_get_security_level(const SSL *s); 859623: void SSL_set_security_callback(SSL *s, 859623: int (*cb) (const SSL *s, const SSL_CTX *ctx, 859623: int op, int bits, int nid, 859623: void *other, void *ex)); 859623: int (*SSL_get_security_callback(const SSL *s)) (const SSL *s, 859623: const SSL_CTX *ctx, int op, 859623: int bits, int nid, void *other, 859623: void *ex); 859623: void SSL_set0_security_ex_data(SSL *s, void *ex); 859623: void *SSL_get0_security_ex_data(const SSL *s); 859623: 859623: void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); 859623: int SSL_CTX_get_security_level(const SSL_CTX *ctx); 859623: void SSL_CTX_set_security_callback(SSL_CTX *ctx, 859623: int (*cb) (const SSL *s, const SSL_CTX *ctx, 859623: int op, int bits, int nid, 859623: void *other, void *ex)); 859623: int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s, 859623: const SSL_CTX *ctx, 859623: int op, int bits, 859623: int nid, 859623: void *other, 859623: void *ex); 859623: void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); 859623: void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); 859623: # 2812 "/usr/include/openssl/ssl.h" 3 4 859623: int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); 859623: 859623: 859623: const struct openssl_ssl_test_functions *SSL_test_functions(void); 859623: 859623: 859623: int SSL_free_buffers(SSL *ssl); 859623: int SSL_alloc_buffers(SSL *ssl); 859623: 859623: 859623: 859623: typedef int SSL_TICKET_STATUS; 859623: # 2842 "/usr/include/openssl/ssl.h" 3 4 859623: typedef int SSL_TICKET_RETURN; 859623: # 2855 "/usr/include/openssl/ssl.h" 3 4 859623: typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); 859623: typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, 859623: const unsigned char *keyname, 859623: size_t keyname_length, 859623: SSL_TICKET_STATUS status, 859623: void *arg); 859623: int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, 859623: SSL_CTX_generate_session_ticket_fn gen_cb, 859623: SSL_CTX_decrypt_session_ticket_fn dec_cb, 859623: void *arg); 859623: int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); 859623: int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); 859623: 859623: typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); 859623: 859623: void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); 859623: 859623: 859623: typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); 859623: void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, 859623: SSL_allow_early_data_cb_fn cb, 859623: void *arg); 859623: void SSL_set_allow_early_data_cb(SSL *s, 859623: SSL_allow_early_data_cb_fn cb, 859623: void *arg); 859623: 859623: 859623: const char *OSSL_default_cipher_list(void); 859623: const char *OSSL_default_ciphersuites(void); 859623: 859623: 859623: 859623: int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); 859623: int SSL_compress_certs(SSL *ssl, int alg); 859623: 859623: int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); 859623: int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); 859623: 859623: int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, 859623: size_t comp_length, size_t orig_length); 859623: int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, 859623: size_t comp_length, size_t orig_length); 859623: size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); 859623: size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); 859623: 859623: int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); 859623: EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); 859623: EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); 859623: int SSL_get_negotiated_client_cert_type(const SSL *s); 859623: int SSL_get_negotiated_server_cert_type(const SSL *s); 859623: 859623: int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); 859623: int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); 859623: int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); 859623: int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); 859623: int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); 859623: int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); 859623: int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); 859623: int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); 859623: # 2923 "/usr/include/openssl/ssl.h" 3 4 859623: int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); 859623: int SSL_set_quic_tls_transport_params(SSL *s, 859623: const unsigned char *params, 859623: size_t params_len); 859623: 859623: int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); 859623: 859623: 859623: } 859623: # 26 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/<>/_include/workflow/json_parser.h" 1 859623: # 22 "/<>/_include/workflow/json_parser.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 23 "/<>/_include/workflow/json_parser.h" 2 859623: # 32 "/<>/_include/workflow/json_parser.h" 859623: 859623: # 32 "/<>/_include/workflow/json_parser.h" 859623: typedef struct __json_value json_value_t; 859623: typedef struct __json_object json_object_t; 859623: typedef struct __json_array json_array_t; 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: json_value_t *json_value_parse(const char *text); 859623: json_value_t *json_value_create(int type, ...); 859623: json_value_t *json_value_copy(const json_value_t *val); 859623: void json_value_destroy(json_value_t *val); 859623: 859623: int json_value_type(const json_value_t *val); 859623: const char *json_value_string(const json_value_t *val); 859623: double json_value_number(const json_value_t *val); 859623: json_object_t *json_value_object(const json_value_t *val); 859623: json_array_t *json_value_array(const json_value_t *val); 859623: 859623: const json_value_t *json_object_find(const char *name, 859623: const json_object_t *obj); 859623: size_t json_object_size(const json_object_t *obj); 859623: const char *json_object_next_name(const char *name, 859623: const json_object_t *obj); 859623: const json_value_t *json_object_next_value(const json_value_t *val, 859623: const json_object_t *obj); 859623: const char *json_object_prev_name(const char *name, 859623: const json_object_t *obj); 859623: const json_value_t *json_object_prev_value(const json_value_t *val, 859623: const json_object_t *obj); 859623: const char *json_object_value_name(const json_value_t *val, 859623: const json_object_t *obj); 859623: const json_value_t *json_object_append(json_object_t *obj, 859623: const char *name, 859623: int type, ...); 859623: const json_value_t *json_object_insert_after(const json_value_t *val, 859623: json_object_t *obj, 859623: const char *name, 859623: int type, ...); 859623: const json_value_t *json_object_insert_before(const json_value_t *val, 859623: json_object_t *obj, 859623: const char *name, 859623: int type, ...); 859623: json_value_t *json_object_remove(const json_value_t *val, 859623: json_object_t *obj); 859623: 859623: size_t json_array_size(const json_array_t *arr); 859623: const json_value_t *json_array_next_value(const json_value_t *val, 859623: const json_array_t *arr); 859623: const json_value_t *json_array_prev_value(const json_value_t *val, 859623: const json_array_t *arr); 859623: const json_value_t *json_array_append(json_array_t *arry, 859623: int type, ...); 859623: const json_value_t *json_array_insert_after(const json_value_t *val, 859623: json_array_t *arr, 859623: int type, ...); 859623: const json_value_t *json_array_insert_before(const json_value_t *val, 859623: json_array_t *arr, 859623: int type, ...); 859623: json_value_t *json_array_remove(const json_value_t *val, 859623: json_array_t *arr); 859623: 859623: 859623: } 859623: # 27 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/<>/_include/workflow/StringUtil.h" 1 859623: # 31 "/<>/_include/workflow/StringUtil.h" 859623: class StringUtil 859623: { 859623: public: 859623: static void url_decode(std::string& str); 859623: static std::string url_encode(const std::string& str); 859623: static std::string url_encode_component(const std::string& str); 859623: static std::vector split(const std::string& str, char sep); 859623: static std::string strip(const std::string& str); 859623: static bool start_with(const std::string& str, const std::string& prefix); 859623: 859623: 859623: static std::vector split_filter_empty(const std::string& str, char sep); 859623: }; 859623: # 28 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/<>/_include/workflow/URIParser.h" 1 859623: # 23 "/<>/_include/workflow/URIParser.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 1 3 859623: # 24 "/<>/_include/workflow/URIParser.h" 2 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/map" 1 3 859623: # 64 "/usr/arm-linux-gnueabi/include/c++/15/map" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 1 3 859623: # 72 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ext/aligned_buffer.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/ext/aligned_buffer.h" 3 859623: 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/ext/aligned_buffer.h" 3 859623: namespace __gnu_cxx 859623: { 859623: 859623: 859623: 859623: 859623: template 859623: struct __aligned_membuf 859623: { 859623: # 60 "/usr/arm-linux-gnueabi/include/c++/15/ext/aligned_buffer.h" 3 859623: alignas(_Tp) 859623: 859623: unsigned char _M_storage[sizeof(_Tp)]; 859623: 859623: __aligned_membuf() = default; 859623: 859623: 859623: __aligned_membuf(std::nullptr_t) { } 859623: 859623: void* 859623: _M_addr() noexcept 859623: { return static_cast(&_M_storage); } 859623: 859623: const void* 859623: _M_addr() const noexcept 859623: { return static_cast(&_M_storage); } 859623: 859623: _Tp* 859623: _M_ptr() noexcept 859623: { return static_cast<_Tp*>(_M_addr()); } 859623: 859623: const _Tp* 859623: _M_ptr() const noexcept 859623: { return static_cast(_M_addr()); } 859623: }; 859623: # 95 "/usr/arm-linux-gnueabi/include/c++/15/ext/aligned_buffer.h" 3 859623: template 859623: struct __aligned_buffer 859623: { 859623: 859623: alignas(__alignof__(_Tp)) unsigned char _M_storage[sizeof(_Tp)]; 859623: 859623: __aligned_buffer() = default; 859623: 859623: 859623: __aligned_buffer(std::nullptr_t) { } 859623: 859623: void* 859623: _M_addr() noexcept 859623: { 859623: return static_cast(&_M_storage); 859623: } 859623: 859623: const void* 859623: _M_addr() const noexcept 859623: { 859623: return static_cast(&_M_storage); 859623: } 859623: 859623: _Tp* 859623: _M_ptr() noexcept 859623: { return static_cast<_Tp*>(_M_addr()); } 859623: 859623: const _Tp* 859623: _M_ptr() const noexcept 859623: { return static_cast(_M_addr()); } 859623: }; 859623: 859623: 859623: } 859623: # 73 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 2 3 859623: # 85 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 105 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: enum _Rb_tree_color { _S_red = false, _S_black = true }; 859623: 859623: struct _Rb_tree_node_base 859623: { 859623: typedef _Rb_tree_node_base* _Base_ptr; 859623: 859623: _Rb_tree_color _M_color; 859623: _Base_ptr _M_parent; 859623: _Base_ptr _M_left; 859623: _Base_ptr _M_right; 859623: 859623: static _Base_ptr 859623: _S_minimum(_Base_ptr __x) noexcept 859623: { 859623: while (__x->_M_left != 0) __x = __x->_M_left; 859623: return __x; 859623: } 859623: 859623: static _Base_ptr 859623: _S_maximum(_Base_ptr __x) noexcept 859623: { 859623: while (__x->_M_right != 0) __x = __x->_M_right; 859623: return __x; 859623: } 859623: 859623: 859623: 859623: 859623: _Base_ptr 859623: _M_base_ptr() const noexcept 859623: { return const_cast<_Rb_tree_node_base*>(this); } 859623: }; 859623: 859623: 859623: template 859623: struct _Rb_tree_key_compare 859623: { 859623: _Key_compare _M_key_compare; 859623: 859623: _Rb_tree_key_compare() 859623: noexcept(is_nothrow_default_constructible<_Key_compare>::value) 859623: 859623: : _M_key_compare() 859623: { } 859623: 859623: _Rb_tree_key_compare(const _Key_compare& __comp) 859623: : _M_key_compare(__comp) 859623: { } 859623: 859623: 859623: 859623: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default; 859623: 859623: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x) 859623: noexcept(is_nothrow_copy_constructible<_Key_compare>::value) 859623: : _M_key_compare(__x._M_key_compare) 859623: { } 859623: 859623: }; 859623: 859623: 859623: struct _Rb_tree_header 859623: { 859623: _Rb_tree_node_base _M_header; 859623: size_t _M_node_count; 859623: 859623: _Rb_tree_header() noexcept 859623: { 859623: _M_header._M_color = _S_red; 859623: _M_reset(); 859623: } 859623: 859623: 859623: _Rb_tree_header(_Rb_tree_header&& __x) noexcept 859623: { 859623: if (__x._M_header._M_parent != nullptr) 859623: _M_move_data(__x); 859623: else 859623: { 859623: _M_header._M_color = _S_red; 859623: _M_reset(); 859623: } 859623: } 859623: 859623: 859623: void 859623: _M_move_data(_Rb_tree_header& __from) 859623: { 859623: _M_header._M_color = __from._M_header._M_color; 859623: _M_header._M_parent = __from._M_header._M_parent; 859623: _M_header._M_left = __from._M_header._M_left; 859623: _M_header._M_right = __from._M_header._M_right; 859623: _M_header._M_parent->_M_parent = &_M_header; 859623: _M_node_count = __from._M_node_count; 859623: 859623: __from._M_reset(); 859623: } 859623: 859623: void 859623: _M_reset() 859623: { 859623: _M_header._M_parent = 0; 859623: _M_header._M_left = &_M_header; 859623: _M_header._M_right = &_M_header; 859623: _M_node_count = 0; 859623: } 859623: }; 859623: 859623: template 859623: struct _Rb_tree_node : public _Rb_tree_node_base 859623: { 859623: # 227 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: __gnu_cxx::__aligned_membuf<_Val> _M_storage; 859623: 859623: _Val* 859623: _M_valptr() 859623: { return _M_storage._M_ptr(); } 859623: 859623: const _Val* 859623: _M_valptr() const 859623: { return _M_storage._M_ptr(); } 859623: 859623: 859623: _Rb_tree_node* 859623: _M_node_ptr() noexcept 859623: { return this; } 859623: }; 859623: 859623: 859623: namespace __rb_tree 859623: { 859623: template 859623: struct _Node_base 859623: { 859623: using _Base_ptr = __ptr_rebind<_VoidPtr, _Node_base>; 859623: 859623: _Rb_tree_color _M_color; 859623: _Base_ptr _M_parent; 859623: _Base_ptr _M_left; 859623: _Base_ptr _M_right; 859623: 859623: static _Base_ptr 859623: _S_minimum(_Base_ptr __x) noexcept 859623: { 859623: while (__x->_M_left) __x = __x->_M_left; 859623: return __x; 859623: } 859623: 859623: static _Base_ptr 859623: _S_maximum(_Base_ptr __x) noexcept 859623: { 859623: while (__x->_M_right) __x = __x->_M_right; 859623: return __x; 859623: } 859623: 859623: 859623: 859623: 859623: _Base_ptr 859623: _M_base_ptr() const noexcept 859623: { 859623: return pointer_traits<_Base_ptr>::pointer_to 859623: (*const_cast<_Node_base*>(this)); 859623: } 859623: }; 859623: 859623: 859623: template 859623: struct _Header 859623: { 859623: private: 859623: using _Base_ptr = typename _NodeBase::_Base_ptr; 859623: 859623: public: 859623: _NodeBase _M_header; 859623: size_t _M_node_count; 859623: 859623: _Header() noexcept 859623: { 859623: _M_header._M_color = _S_red; 859623: _M_reset(); 859623: } 859623: 859623: _Header(_Header&& __x) noexcept 859623: { 859623: if (__x._M_header._M_parent) 859623: _M_move_data(__x); 859623: else 859623: { 859623: _M_header._M_color = _S_red; 859623: _M_reset(); 859623: } 859623: } 859623: 859623: void 859623: _M_move_data(_Header& __from) 859623: { 859623: _M_header._M_color = __from._M_header._M_color; 859623: _M_header._M_parent = __from._M_header._M_parent; 859623: _M_header._M_left = __from._M_header._M_left; 859623: _M_header._M_right = __from._M_header._M_right; 859623: _M_header._M_parent->_M_parent = _M_header._M_base_ptr(); 859623: _M_node_count = __from._M_node_count; 859623: 859623: __from._M_reset(); 859623: } 859623: 859623: void 859623: _M_reset() 859623: { 859623: _M_header._M_parent = nullptr; 859623: _M_header._M_left = _M_header._M_right = _M_header._M_base_ptr(); 859623: _M_node_count = 0; 859623: } 859623: }; 859623: 859623: template 859623: struct _Node : public __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>> 859623: { 859623: using value_type = typename pointer_traits<_ValPtr>::element_type; 859623: using _Node_ptr = __ptr_rebind<_ValPtr, _Node>; 859623: 859623: _Node() noexcept { } 859623: ~_Node() { } 859623: _Node(_Node&&) = delete; 859623: 859623: union _Uninit_storage 859623: { 859623: _Uninit_storage() noexcept { } 859623: ~_Uninit_storage() { } 859623: 859623: value_type _M_data; 859623: }; 859623: _Uninit_storage _M_u; 859623: 859623: value_type* 859623: _M_valptr() 859623: { return std::addressof(_M_u._M_data); } 859623: 859623: value_type const* 859623: _M_valptr() const 859623: { return std::addressof(_M_u._M_data); } 859623: 859623: _Node_ptr 859623: _M_node_ptr() noexcept 859623: { return pointer_traits<_Node_ptr>::pointer_to(*this); } 859623: }; 859623: } 859623: 859623: 859623: __attribute__ ((__pure__)) _Rb_tree_node_base* 859623: _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); 859623: 859623: __attribute__ ((__pure__)) _Rb_tree_node_base* 859623: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); 859623: 859623: template 859623: struct _Rb_tree_iterator 859623: { 859623: typedef _Tp value_type; 859623: typedef _Tp& reference; 859623: typedef _Tp* pointer; 859623: 859623: typedef bidirectional_iterator_tag iterator_category; 859623: typedef ptrdiff_t difference_type; 859623: 859623: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; 859623: typedef _Rb_tree_node<_Tp>* _Node_ptr; 859623: 859623: _Rb_tree_iterator() noexcept 859623: : _M_node() { } 859623: 859623: explicit 859623: _Rb_tree_iterator(_Base_ptr __x) noexcept 859623: : _M_node(__x) { } 859623: 859623: reference 859623: operator*() const noexcept 859623: { return *static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 859623: 859623: pointer 859623: operator->() const noexcept 859623: { return static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 859623: 859623: _Rb_tree_iterator& 859623: operator++() noexcept 859623: { 859623: _M_node = _Rb_tree_increment(_M_node); 859623: return *this; 859623: } 859623: 859623: _Rb_tree_iterator 859623: operator++(int) noexcept 859623: { 859623: _Rb_tree_iterator __tmp = *this; 859623: _M_node = _Rb_tree_increment(_M_node); 859623: return __tmp; 859623: } 859623: 859623: _Rb_tree_iterator& 859623: operator--() noexcept 859623: { 859623: _M_node = _Rb_tree_decrement(_M_node); 859623: return *this; 859623: } 859623: 859623: _Rb_tree_iterator 859623: operator--(int) noexcept 859623: { 859623: _Rb_tree_iterator __tmp = *this; 859623: _M_node = _Rb_tree_decrement(_M_node); 859623: return __tmp; 859623: } 859623: 859623: friend bool 859623: operator==(const _Rb_tree_iterator& __x, 859623: const _Rb_tree_iterator& __y) noexcept 859623: { return __x._M_node == __y._M_node; } 859623: 859623: 859623: friend bool 859623: operator!=(const _Rb_tree_iterator& __x, 859623: const _Rb_tree_iterator& __y) noexcept 859623: { return __x._M_node != __y._M_node; } 859623: 859623: 859623: _Base_ptr _M_node; 859623: }; 859623: 859623: template 859623: struct _Rb_tree_const_iterator 859623: { 859623: typedef _Tp value_type; 859623: typedef const _Tp& reference; 859623: typedef const _Tp* pointer; 859623: 859623: typedef _Rb_tree_iterator<_Tp> iterator; 859623: 859623: typedef bidirectional_iterator_tag iterator_category; 859623: typedef ptrdiff_t difference_type; 859623: 859623: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; 859623: typedef const _Rb_tree_node<_Tp>* _Node_ptr; 859623: 859623: _Rb_tree_const_iterator() noexcept 859623: : _M_node() { } 859623: 859623: explicit 859623: _Rb_tree_const_iterator(_Base_ptr __x) noexcept 859623: : _M_node(__x) { } 859623: 859623: _Rb_tree_const_iterator(const iterator& __it) noexcept 859623: : _M_node(__it._M_node) { } 859623: 859623: reference 859623: operator*() const noexcept 859623: { return *static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 859623: 859623: pointer 859623: operator->() const noexcept 859623: { return static_cast<_Node_ptr>(_M_node)->_M_valptr(); } 859623: 859623: _Rb_tree_const_iterator& 859623: operator++() noexcept 859623: { 859623: _M_node = _Rb_tree_increment(_M_node); 859623: return *this; 859623: } 859623: 859623: _Rb_tree_const_iterator 859623: operator++(int) noexcept 859623: { 859623: _Rb_tree_const_iterator __tmp = *this; 859623: _M_node = _Rb_tree_increment(_M_node); 859623: return __tmp; 859623: } 859623: 859623: _Rb_tree_const_iterator& 859623: operator--() noexcept 859623: { 859623: _M_node = _Rb_tree_decrement(_M_node); 859623: return *this; 859623: } 859623: 859623: _Rb_tree_const_iterator 859623: operator--(int) noexcept 859623: { 859623: _Rb_tree_const_iterator __tmp = *this; 859623: _M_node = _Rb_tree_decrement(_M_node); 859623: return __tmp; 859623: } 859623: 859623: friend bool 859623: operator==(const _Rb_tree_const_iterator& __x, 859623: const _Rb_tree_const_iterator& __y) noexcept 859623: { return __x._M_node == __y._M_node; } 859623: 859623: 859623: friend bool 859623: operator!=(const _Rb_tree_const_iterator& __x, 859623: const _Rb_tree_const_iterator& __y) noexcept 859623: { return __x._M_node != __y._M_node; } 859623: 859623: 859623: _Base_ptr _M_node; 859623: }; 859623: 859623: __attribute__((__nonnull__)) 859623: void 859623: _Rb_tree_insert_and_rebalance(const bool __insert_left, 859623: _Rb_tree_node_base* __x, 859623: _Rb_tree_node_base* __p, 859623: _Rb_tree_node_base& __header) throw (); 859623: 859623: __attribute__((__nonnull__,__returns_nonnull__)) 859623: _Rb_tree_node_base* 859623: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, 859623: _Rb_tree_node_base& __header) throw (); 859623: 859623: namespace __rb_tree 859623: { 859623: 859623: template 859623: struct _Iterator 859623: { 859623: template 859623: using __maybe_const = __conditional_t<_Const, const _Tp, _Tp>; 859623: 859623: using __ptr_traits = pointer_traits<_ValPtr>; 859623: using value_type = typename __ptr_traits::element_type; 859623: using reference = __maybe_const&; 859623: using pointer = __maybe_const*; 859623: 859623: using iterator_category = bidirectional_iterator_tag; 859623: using difference_type = ptrdiff_t; 859623: 859623: using _Node = __rb_tree::_Node<_ValPtr>; 859623: using _Node_base = __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>>; 859623: using _Base_ptr = typename _Node_base::_Base_ptr; 859623: 859623: _Iterator() noexcept 859623: : _M_node() { } 859623: 859623: constexpr explicit 859623: _Iterator(_Base_ptr __x) noexcept 859623: : _M_node(__x) { } 859623: 859623: _Iterator(const _Iterator&) = default; 859623: _Iterator& operator=(const _Iterator&) = default; 859623: 859623: 859623: 859623: 859623: 859623: template> 859623: constexpr 859623: _Iterator(const _Iterator<_OtherConst, _ValPtr>& __it) 859623: 859623: : _M_node(__it._M_node) { } 859623: 859623: [[__nodiscard__]] 859623: reference 859623: operator*() const noexcept 859623: { return *static_cast<_Node&>(*_M_node)._M_valptr(); } 859623: 859623: [[__nodiscard__]] 859623: pointer 859623: operator->() const noexcept 859623: { return static_cast<_Node&>(*_M_node)._M_valptr(); } 859623: 859623: _Iterator& 859623: operator++() noexcept 859623: { 859623: if (_M_node->_M_right) 859623: { 859623: _M_node = _M_node->_M_right; 859623: while (_M_node->_M_left) 859623: _M_node = _M_node->_M_left; 859623: } 859623: else 859623: { 859623: _Base_ptr __y = _M_node->_M_parent; 859623: while (_M_node == __y->_M_right) 859623: { 859623: _M_node = __y; 859623: __y = __y->_M_parent; 859623: } 859623: if (_M_node->_M_right != __y) 859623: _M_node = __y; 859623: } 859623: 859623: return *this; 859623: } 859623: 859623: _Iterator 859623: operator++(int) noexcept 859623: { 859623: _Iterator __tmp(this->_M_node); 859623: ++*this; 859623: return __tmp; 859623: } 859623: 859623: _Iterator& 859623: operator--() noexcept 859623: { 859623: if (_M_node->_M_color == _S_red 859623: && _M_node->_M_parent->_M_parent == _M_node) 859623: _M_node = _M_node->_M_right; 859623: else if (_M_node->_M_left) 859623: { 859623: _Base_ptr __y = _M_node->_M_left; 859623: while (__y->_M_right) 859623: __y = __y->_M_right; 859623: _M_node = __y; 859623: } 859623: else 859623: { 859623: _Base_ptr __y = _M_node->_M_parent; 859623: while (_M_node == __y->_M_left) 859623: { 859623: _M_node = __y; 859623: __y = __y->_M_parent; 859623: } 859623: _M_node = __y; 859623: } 859623: return *this; 859623: } 859623: 859623: _Iterator 859623: operator--(int) noexcept 859623: { 859623: _Iterator __tmp(this->_M_node); 859623: --*this; 859623: return __tmp; 859623: } 859623: 859623: [[__nodiscard__]] 859623: friend bool 859623: operator==(const _Iterator& __x, const _Iterator& __y) noexcept 859623: { return __x._M_node == __y._M_node; } 859623: 859623: 859623: [[__nodiscard__]] 859623: friend bool 859623: operator!=(const _Iterator& __x, const _Iterator& __y) noexcept 859623: { return __x._M_node != __y._M_node; } 859623: 859623: 859623: _Base_ptr _M_node; 859623: }; 859623: 859623: 859623: 859623: template 859623: struct _Node_traits; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Node_traits<_Val, _Val*> 859623: { 859623: typedef _Rb_tree_node<_Val> _Node; 859623: typedef _Node* _Node_ptr; 859623: typedef _Rb_tree_node_base _Node_base; 859623: typedef _Node_base* _Base_ptr; 859623: typedef _Rb_tree_header _Header_t; 859623: typedef _Rb_tree_iterator<_Val> _Iterator; 859623: typedef _Rb_tree_const_iterator<_Val> _Const_iterator; 859623: 859623: __attribute__((__nonnull__)) 859623: static void 859623: _S_insert_and_rebalance(const bool __insert_left, 859623: _Node_base* __x, _Node_base* __p, 859623: _Node_base& __header) noexcept 859623: { 859623: return _Rb_tree_insert_and_rebalance(__insert_left, __x, __p, __header); 859623: } 859623: 859623: __attribute__((__nonnull__,__returns_nonnull__)) 859623: static _Node_base* 859623: _S_rebalance_for_erase(_Node_base* const __z, 859623: _Node_base& __header) noexcept 859623: { return _Rb_tree_rebalance_for_erase(__z, __header); } 859623: }; 859623: # 712 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: template 859623: struct _Node_traits 859623: { 859623: using _Node = __rb_tree::_Node<_ValPtr>; 859623: using _Node_ptr = __ptr_rebind<_ValPtr, _Node>; 859623: using _Node_base = __rb_tree::_Node_base<__ptr_rebind<_ValPtr, void>>; 859623: using _Base_ptr = __ptr_rebind<_ValPtr, _Node_base>; 859623: using _Header_t = __rb_tree::_Header<_Node_base>; 859623: using _Iterator = __rb_tree::_Iterator; 859623: using _Const_iterator = __rb_tree::_Iterator; 859623: 859623: static void 859623: _Rotate_left(_Base_ptr __x, _Base_ptr& __root) 859623: { 859623: const _Base_ptr __y = __x->_M_right; 859623: 859623: __x->_M_right = __y->_M_left; 859623: if (__y->_M_left) 859623: __y->_M_left->_M_parent = __x; 859623: __y->_M_parent = __x->_M_parent; 859623: 859623: if (__x == __root) 859623: __root = __y; 859623: else if (__x == __x->_M_parent->_M_left) 859623: __x->_M_parent->_M_left = __y; 859623: else 859623: __x->_M_parent->_M_right = __y; 859623: __y->_M_left = __x; 859623: __x->_M_parent = __y; 859623: } 859623: 859623: static void 859623: _Rotate_right(_Base_ptr __x, _Base_ptr& __root) 859623: { 859623: const _Base_ptr __y = __x->_M_left; 859623: 859623: __x->_M_left = __y->_M_right; 859623: if (__y->_M_right) 859623: __y->_M_right->_M_parent = __x; 859623: __y->_M_parent = __x->_M_parent; 859623: 859623: if (__x == __root) 859623: __root = __y; 859623: else if (__x == __x->_M_parent->_M_right) 859623: __x->_M_parent->_M_right = __y; 859623: else 859623: __x->_M_parent->_M_left = __y; 859623: __y->_M_right = __x; 859623: __x->_M_parent = __y; 859623: } 859623: 859623: static void 859623: _S_insert_and_rebalance(const bool __insert_left, 859623: _Base_ptr __x, _Base_ptr __p, 859623: _Node_base& __header) 859623: { 859623: _Base_ptr& __root = __header._M_parent; 859623: 859623: 859623: __x->_M_parent = __p; 859623: __x->_M_left = __x->_M_right = nullptr; 859623: __x->_M_color = _S_red; 859623: 859623: 859623: 859623: 859623: 859623: if (__insert_left) 859623: { 859623: __p->_M_left = __x; 859623: 859623: if (std::__to_address(__p) == std::addressof(__header)) 859623: { 859623: __header._M_parent = __x; 859623: __header._M_right = __x; 859623: } 859623: else if (__p == __header._M_left) 859623: __header._M_left = __x; 859623: } 859623: else 859623: { 859623: __p->_M_right = __x; 859623: 859623: if (__p == __header._M_right) 859623: __header._M_right = __x; 859623: } 859623: 859623: while (__x != __root 859623: && __x->_M_parent->_M_color == _S_red) 859623: { 859623: const _Base_ptr __xpp = __x->_M_parent->_M_parent; 859623: 859623: if (__x->_M_parent == __xpp->_M_left) 859623: { 859623: const _Base_ptr __y = __xpp->_M_right; 859623: if (__y && __y->_M_color == _S_red) 859623: { 859623: __x->_M_parent->_M_color = _S_black; 859623: __y->_M_color = _S_black; 859623: __xpp->_M_color = _S_red; 859623: __x = __xpp; 859623: } 859623: else 859623: { 859623: if (__x == __x->_M_parent->_M_right) 859623: { 859623: __x = __x->_M_parent; 859623: _Rotate_left(__x, __root); 859623: } 859623: __x->_M_parent->_M_color = _S_black; 859623: __xpp->_M_color = _S_red; 859623: _Rotate_right(__xpp, __root); 859623: } 859623: } 859623: else 859623: { 859623: const _Base_ptr __y = __xpp->_M_left; 859623: if (__y && __y->_M_color == _S_red) 859623: { 859623: __x->_M_parent->_M_color = _S_black; 859623: __y->_M_color = _S_black; 859623: __xpp->_M_color = _S_red; 859623: __x = __xpp; 859623: } 859623: else 859623: { 859623: if (__x == __x->_M_parent->_M_left) 859623: { 859623: __x = __x->_M_parent; 859623: _Rotate_right(__x, __root); 859623: } 859623: __x->_M_parent->_M_color = _S_black; 859623: __xpp->_M_color = _S_red; 859623: _Rotate_left(__xpp, __root); 859623: } 859623: } 859623: } 859623: __root->_M_color = _S_black; 859623: } 859623: 859623: static _Base_ptr 859623: _S_rebalance_for_erase(_Base_ptr __z, _Node_base& __header) 859623: { 859623: _Base_ptr& __root = __header._M_parent; 859623: _Base_ptr& __leftmost = __header._M_left; 859623: _Base_ptr& __rightmost = __header._M_right; 859623: _Base_ptr __y = __z; 859623: _Base_ptr __x{}; 859623: _Base_ptr __x_parent{}; 859623: 859623: if (!__y->_M_left) 859623: __x = __y->_M_right; 859623: else 859623: if (!__y->_M_right) 859623: __x = __y->_M_left; 859623: else 859623: { 859623: 859623: __y = __y->_M_right; 859623: while (__y->_M_left) 859623: __y = __y->_M_left; 859623: __x = __y->_M_right; 859623: } 859623: if (__y != __z) 859623: { 859623: 859623: __z->_M_left->_M_parent = __y; 859623: __y->_M_left = __z->_M_left; 859623: if (__y != __z->_M_right) 859623: { 859623: __x_parent = __y->_M_parent; 859623: if (__x) 859623: __x->_M_parent = __y->_M_parent; 859623: __y->_M_parent->_M_left = __x; 859623: __y->_M_right = __z->_M_right; 859623: __z->_M_right->_M_parent = __y; 859623: } 859623: else 859623: __x_parent = __y; 859623: if (__root == __z) 859623: __root = __y; 859623: else if (__z->_M_parent->_M_left == __z) 859623: __z->_M_parent->_M_left = __y; 859623: else 859623: __z->_M_parent->_M_right = __y; 859623: __y->_M_parent = __z->_M_parent; 859623: std::swap(__y->_M_color, __z->_M_color); 859623: __y = __z; 859623: 859623: } 859623: else 859623: { 859623: __x_parent = __y->_M_parent; 859623: if (__x) 859623: __x->_M_parent = __y->_M_parent; 859623: if (__root == __z) 859623: __root = __x; 859623: else 859623: if (__z->_M_parent->_M_left == __z) 859623: __z->_M_parent->_M_left = __x; 859623: else 859623: __z->_M_parent->_M_right = __x; 859623: if (__leftmost == __z) 859623: { 859623: if (!__z->_M_right) 859623: __leftmost = __z->_M_parent; 859623: 859623: else 859623: __leftmost = _Node_base::_S_minimum(__x); 859623: } 859623: if (__rightmost == __z) 859623: { 859623: if (__z->_M_left == 0) 859623: __rightmost = __z->_M_parent; 859623: 859623: else 859623: __rightmost = _Node_base::_S_maximum(__x); 859623: } 859623: } 859623: if (__y->_M_color != _S_red) 859623: { 859623: while (__x != __root && (__x == 0 || __x->_M_color == _S_black)) 859623: if (__x == __x_parent->_M_left) 859623: { 859623: _Base_ptr __w = __x_parent->_M_right; 859623: if (__w->_M_color == _S_red) 859623: { 859623: __w->_M_color = _S_black; 859623: __x_parent->_M_color = _S_red; 859623: _Rotate_left(__x_parent, __root); 859623: __w = __x_parent->_M_right; 859623: } 859623: if ((!__w->_M_left || __w->_M_left->_M_color == _S_black) && 859623: (!__w->_M_right || __w->_M_right->_M_color == _S_black)) 859623: { 859623: __w->_M_color = _S_red; 859623: __x = __x_parent; 859623: __x_parent = __x_parent->_M_parent; 859623: } 859623: else 859623: { 859623: if (!__w->_M_right || __w->_M_right->_M_color == _S_black) 859623: { 859623: __w->_M_left->_M_color = _S_black; 859623: __w->_M_color = _S_red; 859623: _Rotate_right(__w, __root); 859623: __w = __x_parent->_M_right; 859623: } 859623: __w->_M_color = __x_parent->_M_color; 859623: __x_parent->_M_color = _S_black; 859623: if (__w->_M_right) 859623: __w->_M_right->_M_color = _S_black; 859623: _Rotate_left(__x_parent, __root); 859623: break; 859623: } 859623: } 859623: else 859623: { 859623: 859623: _Base_ptr __w = __x_parent->_M_left; 859623: if (__w->_M_color == _S_red) 859623: { 859623: __w->_M_color = _S_black; 859623: __x_parent->_M_color = _S_red; 859623: _Rotate_right(__x_parent, __root); 859623: __w = __x_parent->_M_left; 859623: } 859623: if ((!__w->_M_right || __w->_M_right->_M_color == _S_black) && 859623: (!__w->_M_left || __w->_M_left->_M_color == _S_black)) 859623: { 859623: __w->_M_color = _S_red; 859623: __x = __x_parent; 859623: __x_parent = __x_parent->_M_parent; 859623: } 859623: else 859623: { 859623: if (!__w->_M_left || __w->_M_left->_M_color == _S_black) 859623: { 859623: __w->_M_right->_M_color = _S_black; 859623: __w->_M_color = _S_red; 859623: _Rotate_left(__w, __root); 859623: __w = __x_parent->_M_left; 859623: } 859623: __w->_M_color = __x_parent->_M_color; 859623: __x_parent->_M_color = _S_black; 859623: if (__w->_M_left) 859623: __w->_M_left->_M_color = _S_black; 859623: _Rotate_right(__x_parent, __root); 859623: break; 859623: } 859623: } 859623: if (__x) 859623: __x->_M_color = _S_black; 859623: } 859623: 859623: return __y; 859623: } 859623: }; 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: template > 859623: class _Rb_tree 859623: { 859623: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 859623: rebind<_Val>::other _Val_alloc_type; 859623: 859623: typedef __gnu_cxx::__alloc_traits<_Val_alloc_type> _Val_alloc_traits; 859623: typedef typename _Val_alloc_traits::pointer _ValPtr; 859623: typedef __rb_tree::_Node_traits<_Val, _ValPtr> _Node_traits; 859623: 859623: typedef typename _Node_traits::_Node_base _Node_base; 859623: typedef typename _Node_traits::_Node _Node; 859623: 859623: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 859623: rebind<_Node>::other _Node_allocator; 859623: 859623: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Node_alloc_traits; 859623: 859623: protected: 859623: typedef typename _Node_traits::_Base_ptr _Base_ptr; 859623: typedef typename _Node_traits::_Node_ptr _Node_ptr; 859623: 859623: private: 859623: 859623: 859623: struct _Reuse_or_alloc_node 859623: { 859623: _Reuse_or_alloc_node(_Rb_tree& __t) 859623: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) 859623: { 859623: if (_M_root) 859623: { 859623: _M_root->_M_parent = _Base_ptr(); 859623: 859623: if (_M_nodes->_M_left) 859623: _M_nodes = _M_nodes->_M_left; 859623: } 859623: else 859623: _M_nodes = _Base_ptr(); 859623: } 859623: 859623: 859623: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; 859623: 859623: 859623: ~_Reuse_or_alloc_node() 859623: { 859623: if (_M_root) 859623: _M_t._M_erase(static_cast<_Node&>(*_M_root)._M_node_ptr()); 859623: } 859623: 859623: template 859623: _Node_ptr 859623: operator()(_Arg&& __arg) 859623: { 859623: _Base_ptr __base = _M_extract(); 859623: if (__base) 859623: { 859623: _Node_ptr __node = static_cast<_Node&>(*__base)._M_node_ptr(); 859623: _M_t._M_destroy_node(__node); 859623: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); 859623: return __node; 859623: } 859623: 859623: return _M_t._M_create_node(std::forward<_Arg>(__arg)); 859623: } 859623: 859623: private: 859623: _Base_ptr 859623: _M_extract() 859623: { 859623: if (!_M_nodes) 859623: return _M_nodes; 859623: 859623: _Base_ptr __node = _M_nodes; 859623: _M_nodes = _M_nodes->_M_parent; 859623: if (_M_nodes) 859623: { 859623: if (_M_nodes->_M_right == __node) 859623: { 859623: _M_nodes->_M_right = _Base_ptr(); 859623: 859623: if (_M_nodes->_M_left) 859623: { 859623: _M_nodes = _M_nodes->_M_left; 859623: 859623: while (_M_nodes->_M_right) 859623: _M_nodes = _M_nodes->_M_right; 859623: 859623: if (_M_nodes->_M_left) 859623: _M_nodes = _M_nodes->_M_left; 859623: } 859623: } 859623: else 859623: _M_nodes->_M_left = _Base_ptr(); 859623: } 859623: else 859623: _M_root = _Base_ptr(); 859623: 859623: return __node; 859623: } 859623: 859623: _Base_ptr _M_root; 859623: _Base_ptr _M_nodes; 859623: _Rb_tree& _M_t; 859623: }; 859623: 859623: 859623: 859623: struct _Alloc_node 859623: { 859623: _Alloc_node(_Rb_tree& __t) 859623: : _M_t(__t) { } 859623: 859623: template 859623: _Node_ptr 859623: operator()(_Arg&& __arg) const 859623: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } 859623: 859623: private: 859623: _Rb_tree& _M_t; 859623: }; 859623: 859623: public: 859623: typedef _Key key_type; 859623: typedef _Val value_type; 859623: typedef value_type* pointer; 859623: typedef const value_type* const_pointer; 859623: typedef value_type& reference; 859623: typedef const value_type& const_reference; 859623: typedef size_t size_type; 859623: typedef ptrdiff_t difference_type; 859623: typedef _Alloc allocator_type; 859623: 859623: _Node_allocator& 859623: _M_get_Node_allocator() noexcept 859623: { return this->_M_impl; } 859623: 859623: const _Node_allocator& 859623: _M_get_Node_allocator() const noexcept 859623: { return this->_M_impl; } 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return allocator_type(_M_get_Node_allocator()); } 859623: 859623: protected: 859623: _Node_ptr 859623: _M_get_node() 859623: { 859623: 859623: return _Node_alloc_traits::allocate(_M_get_Node_allocator(), 1); 859623: # 1185 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: } 859623: 859623: void 859623: _M_put_node(_Node_ptr __p) noexcept 859623: { 859623: 859623: _Node_alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); 859623: # 1207 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: } 859623: # 1230 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: template 859623: void 859623: _M_construct_node(_Node_ptr __node, _Args&&... __args) 859623: { 859623: if (true) 859623: { 859623: ::new(std::addressof(*__node)) _Node; 859623: _Node_alloc_traits::construct(_M_get_Node_allocator(), 859623: __node->_M_valptr(), 859623: std::forward<_Args>(__args)...); 859623: } 859623: if (false) 859623: { 859623: __node->~_Node(); 859623: _M_put_node(__node); 859623: ; 859623: } 859623: } 859623: 859623: template 859623: _Node_ptr 859623: _M_create_node(_Args&&... __args) 859623: { 859623: _Node_ptr __tmp = _M_get_node(); 859623: _M_construct_node(__tmp, std::forward<_Args>(__args)...); 859623: return __tmp; 859623: } 859623: 859623: 859623: void 859623: _M_destroy_node(_Node_ptr __p) noexcept 859623: { 859623: 859623: 859623: 859623: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); 859623: __p->~_Node(); 859623: 859623: } 859623: 859623: void 859623: _M_drop_node(_Node_ptr __p) noexcept 859623: { 859623: _M_destroy_node(__p); 859623: _M_put_node(__p); 859623: } 859623: 859623: template 859623: _Node_ptr 859623: _M_clone_node(_Node_ptr __x, _NodeGen& __node_gen) 859623: { 859623: 859623: using _Vp = __conditional_t<_MoveValue, 859623: value_type&&, 859623: const value_type&>; 859623: 859623: _Node_ptr __tmp 859623: = __node_gen(std::forward<_Vp>(*__x->_M_valptr())); 859623: __tmp->_M_color = __x->_M_color; 859623: __tmp->_M_left = __tmp->_M_right = _Base_ptr(); 859623: return __tmp; 859623: } 859623: 859623: protected: 859623: typedef typename _Node_traits::_Header_t _Header_t; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: 859623: struct _Rb_tree_impl 859623: : public _Node_allocator 859623: , public _Rb_tree_key_compare<_Key_compare> 859623: , public _Header_t 859623: { 859623: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; 859623: 859623: _Rb_tree_impl() 859623: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value) 859623: 859623: 859623: : _Node_allocator() 859623: { } 859623: 859623: _Rb_tree_impl(const _Rb_tree_impl& __x) 859623: : _Node_allocator(_Node_alloc_traits::_S_select_on_copy(__x)) 859623: , _Base_key_compare(__x._M_key_compare) 859623: , _Header_t() 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: 859623: _Rb_tree_impl(_Rb_tree_impl&&) 859623: noexcept( is_nothrow_move_constructible<_Base_key_compare>::value ) 859623: = default; 859623: 859623: explicit 859623: _Rb_tree_impl(_Node_allocator&& __a) 859623: : _Node_allocator(std::move(__a)) 859623: { } 859623: 859623: _Rb_tree_impl(_Rb_tree_impl&& __x, _Node_allocator&& __a) 859623: : _Node_allocator(std::move(__a)), 859623: _Base_key_compare(std::move(__x)), 859623: _Header_t(std::move(__x)) 859623: { } 859623: 859623: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) 859623: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) 859623: { } 859623: 859623: }; 859623: 859623: _Rb_tree_impl<_Compare> _M_impl; 859623: 859623: protected: 859623: _Base_ptr& 859623: _M_root() noexcept 859623: { return this->_M_impl._M_header._M_parent; } 859623: 859623: _Base_ptr 859623: _M_root() const noexcept 859623: { return this->_M_impl._M_header._M_parent; } 859623: 859623: _Base_ptr& 859623: _M_leftmost() noexcept 859623: { return this->_M_impl._M_header._M_left; } 859623: 859623: _Base_ptr 859623: _M_leftmost() const noexcept 859623: { return this->_M_impl._M_header._M_left; } 859623: 859623: _Base_ptr& 859623: _M_rightmost() noexcept 859623: { return this->_M_impl._M_header._M_right; } 859623: 859623: _Base_ptr 859623: _M_rightmost() const noexcept 859623: { return this->_M_impl._M_header._M_right; } 859623: 859623: _Base_ptr 859623: _M_begin() const noexcept 859623: { return this->_M_impl._M_header._M_parent; } 859623: 859623: _Node_ptr 859623: _M_begin_node() const noexcept 859623: { 859623: _Base_ptr __begin = this->_M_impl._M_header._M_parent; 859623: return __begin 859623: ? static_cast<_Node&>(*__begin)._M_node_ptr() 859623: : _Node_ptr(); 859623: } 859623: 859623: _Base_ptr 859623: _M_end() const noexcept 859623: { return this->_M_impl._M_header._M_base_ptr(); } 859623: 859623: static const _Key& 859623: _S_key(const _Node& __node) 859623: { 859623: 859623: 859623: 859623: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, 859623: "comparison object must be invocable " 859623: "with two arguments of key type"); 859623: # 1412 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: return _KeyOfValue()(*__node._M_valptr()); 859623: } 859623: 859623: static const _Key& 859623: _S_key(_Base_ptr __x) 859623: { return _S_key(static_cast(*__x)); } 859623: 859623: static const _Key& 859623: _S_key(_Node_ptr __x) 859623: { return _S_key(*__x); } 859623: 859623: static _Base_ptr 859623: _S_left(_Base_ptr __x) noexcept 859623: { return __x->_M_left; } 859623: 859623: static _Node_ptr 859623: _S_left(_Node_ptr __x) 859623: { 859623: return __x->_M_left 859623: ? static_cast<_Node&>(*__x->_M_left)._M_node_ptr() 859623: : _Node_ptr(); 859623: } 859623: 859623: static _Base_ptr 859623: _S_right(_Base_ptr __x) noexcept 859623: { return __x->_M_right; } 859623: 859623: static _Node_ptr 859623: _S_right(_Node_ptr __x) noexcept 859623: { 859623: return __x->_M_right 859623: ? static_cast<_Node&>(*__x->_M_right)._M_node_ptr() 859623: : _Node_ptr(); 859623: } 859623: 859623: public: 859623: typedef typename _Node_traits::_Iterator iterator; 859623: typedef typename _Node_traits::_Const_iterator const_iterator; 859623: 859623: typedef std::reverse_iterator reverse_iterator; 859623: typedef std::reverse_iterator const_reverse_iterator; 859623: # 1461 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: pair<_Base_ptr, _Base_ptr> 859623: _M_get_insert_unique_pos(const key_type& __k); 859623: 859623: pair<_Base_ptr, _Base_ptr> 859623: _M_get_insert_equal_pos(const key_type& __k); 859623: 859623: pair<_Base_ptr, _Base_ptr> 859623: _M_get_insert_hint_unique_pos(const_iterator __pos, 859623: const key_type& __k); 859623: 859623: pair<_Base_ptr, _Base_ptr> 859623: _M_get_insert_hint_equal_pos(const_iterator __pos, 859623: const key_type& __k); 859623: 859623: private: 859623: 859623: template 859623: iterator 859623: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); 859623: 859623: iterator 859623: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Node_ptr __z); 859623: 859623: template 859623: iterator 859623: _M_insert_lower(_Base_ptr __y, _Arg&& __v); 859623: 859623: template 859623: iterator 859623: _M_insert_equal_lower(_Arg&& __x); 859623: 859623: iterator 859623: _M_insert_lower_node(_Base_ptr __p, _Node_ptr __z); 859623: 859623: iterator 859623: _M_insert_equal_lower_node(_Node_ptr __z); 859623: # 1512 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: enum { __as_lvalue, __as_rvalue }; 859623: 859623: template 859623: _Base_ptr 859623: _M_copy(_Node_ptr, _Base_ptr, _NodeGen&); 859623: 859623: template 859623: _Base_ptr 859623: _M_copy(const _Rb_tree& __x, _NodeGen& __gen) 859623: { 859623: _Base_ptr __root = 859623: _M_copy<_MoveValues>(__x._M_begin_node(), _M_end(), __gen); 859623: _M_leftmost() = _Node_base::_S_minimum(__root); 859623: _M_rightmost() = _Node_base::_S_maximum(__root); 859623: _M_impl._M_node_count = __x._M_impl._M_node_count; 859623: return __root; 859623: } 859623: 859623: _Base_ptr 859623: _M_copy(const _Rb_tree& __x) 859623: { 859623: _Alloc_node __an(*this); 859623: return _M_copy<__as_lvalue>(__x, __an); 859623: } 859623: 859623: void 859623: _M_erase(_Node_ptr __x); 859623: 859623: _Base_ptr 859623: _M_lower_bound(_Base_ptr __x, _Base_ptr __y, 859623: const _Key& __k) const; 859623: 859623: _Base_ptr 859623: _M_upper_bound(_Base_ptr __x, _Base_ptr __y, 859623: const _Key& __k) const; 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: _Rb_tree() = default; 859623: 859623: 859623: _Rb_tree(const _Compare& __comp, 859623: const allocator_type& __a = allocator_type()) 859623: : _M_impl(__comp, _Node_allocator(__a)) { } 859623: 859623: _Rb_tree(const _Rb_tree& __x) 859623: : _M_impl(__x._M_impl) 859623: { 859623: if (__x._M_root()) 859623: _M_root() = _M_copy(__x); 859623: } 859623: 859623: 859623: _Rb_tree(const allocator_type& __a) 859623: : _M_impl(_Node_allocator(__a)) 859623: { } 859623: 859623: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) 859623: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) 859623: { 859623: if (__x._M_root()) 859623: _M_root() = _M_copy(__x); 859623: } 859623: 859623: _Rb_tree(_Rb_tree&&) = default; 859623: 859623: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) 859623: : _Rb_tree(std::move(__x), _Node_allocator(__a)) 859623: { } 859623: 859623: private: 859623: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, true_type) 859623: noexcept(is_nothrow_default_constructible<_Compare>::value) 859623: : _M_impl(std::move(__x._M_impl), std::move(__a)) 859623: { } 859623: 859623: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, false_type) 859623: : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) 859623: { 859623: if (__x._M_root()) 859623: _M_move_data(__x, false_type{}); 859623: } 859623: 859623: public: 859623: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) 859623: noexcept( noexcept( 859623: _Rb_tree(std::declval<_Rb_tree&&>(), std::declval<_Node_allocator&&>(), 859623: std::declval())) ) 859623: : _Rb_tree(std::move(__x), std::move(__a), 859623: typename _Node_alloc_traits::is_always_equal{}) 859623: { } 859623: 859623: 859623: ~_Rb_tree() noexcept 859623: { _M_erase(_M_begin_node()); } 859623: 859623: _Rb_tree& 859623: operator=(const _Rb_tree& __x); 859623: 859623: 859623: _Compare 859623: key_comp() const 859623: { return _M_impl._M_key_compare; } 859623: 859623: iterator 859623: begin() noexcept 859623: { return iterator(this->_M_impl._M_header._M_left); } 859623: 859623: const_iterator 859623: begin() const noexcept 859623: { return const_iterator(this->_M_impl._M_header._M_left); } 859623: 859623: iterator 859623: end() noexcept 859623: { return iterator(_M_end()); } 859623: 859623: const_iterator 859623: end() const noexcept 859623: { return const_iterator(_M_end()); } 859623: 859623: reverse_iterator 859623: rbegin() noexcept 859623: { return reverse_iterator(end()); } 859623: 859623: const_reverse_iterator 859623: rbegin() const noexcept 859623: { return const_reverse_iterator(end()); } 859623: 859623: reverse_iterator 859623: rend() noexcept 859623: { return reverse_iterator(begin()); } 859623: 859623: const_reverse_iterator 859623: rend() const noexcept 859623: { return const_reverse_iterator(begin()); } 859623: 859623: [[__nodiscard__]] bool 859623: empty() const noexcept 859623: { return _M_impl._M_node_count == 0; } 859623: 859623: size_type 859623: size() const noexcept 859623: { return _M_impl._M_node_count; } 859623: 859623: size_type 859623: max_size() const noexcept 859623: { return _Node_alloc_traits::max_size(_M_get_Node_allocator()); } 859623: 859623: void 859623: swap(_Rb_tree& __t) 859623: noexcept(__is_nothrow_swappable<_Compare>::value); 859623: 859623: 859623: 859623: template 859623: pair 859623: _M_insert_unique(_Arg&& __x); 859623: 859623: template 859623: iterator 859623: _M_insert_equal(_Arg&& __x); 859623: 859623: template 859623: iterator 859623: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); 859623: 859623: template 859623: iterator 859623: _M_insert_unique_(const_iterator __pos, _Arg&& __x) 859623: { 859623: _Alloc_node __an(*this); 859623: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); 859623: } 859623: 859623: template 859623: iterator 859623: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); 859623: 859623: template 859623: iterator 859623: _M_insert_equal_(const_iterator __pos, _Arg&& __x) 859623: { 859623: _Alloc_node __an(*this); 859623: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); 859623: } 859623: 859623: template 859623: pair 859623: _M_emplace_unique(_Args&&... __args); 859623: 859623: template 859623: iterator 859623: _M_emplace_equal(_Args&&... __args); 859623: 859623: template 859623: iterator 859623: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); 859623: 859623: template 859623: iterator 859623: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); 859623: 859623: template 859623: using __same_value_type 859623: = is_same::value_type>; 859623: 859623: template 859623: __enable_if_t<__same_value_type<_InputIterator>::value> 859623: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) 859623: { 859623: _Alloc_node __an(*this); 859623: for (; __first != __last; ++__first) 859623: _M_insert_unique_(end(), *__first, __an); 859623: } 859623: 859623: template 859623: __enable_if_t::value> 859623: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) 859623: { 859623: for (; __first != __last; ++__first) 859623: _M_emplace_unique(*__first); 859623: } 859623: 859623: template 859623: __enable_if_t<__same_value_type<_InputIterator>::value> 859623: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) 859623: { 859623: _Alloc_node __an(*this); 859623: for (; __first != __last; ++__first) 859623: _M_insert_equal_(end(), *__first, __an); 859623: } 859623: 859623: template 859623: __enable_if_t::value> 859623: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) 859623: { 859623: for (; __first != __last; ++__first) 859623: _M_emplace_equal(*__first); 859623: } 859623: # 1803 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: private: 859623: void 859623: _M_erase_aux(const_iterator __position); 859623: 859623: void 859623: _M_erase_aux(const_iterator __first, const_iterator __last); 859623: 859623: public: 859623: 859623: 859623: 859623: __attribute ((__abi_tag__ ("cxx11"))) 859623: iterator 859623: erase(const_iterator __position) 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); 859623: const_iterator __result = __position; 859623: ++__result; 859623: _M_erase_aux(__position); 859623: return iterator(__result._M_node); 859623: } 859623: 859623: 859623: __attribute ((__abi_tag__ ("cxx11"))) 859623: iterator 859623: erase(iterator __position) 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); 859623: iterator __result = __position; 859623: ++__result; 859623: _M_erase_aux(__position); 859623: return __result; 859623: } 859623: # 1852 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: size_type 859623: erase(const key_type& __x); 859623: 859623: 859623: 859623: 859623: __attribute ((__abi_tag__ ("cxx11"))) 859623: iterator 859623: erase(const_iterator __first, const_iterator __last) 859623: { 859623: _M_erase_aux(__first, __last); 859623: return iterator(__last._M_node); 859623: } 859623: # 1875 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: void 859623: clear() noexcept 859623: { 859623: _M_erase(_M_begin_node()); 859623: _M_impl._M_reset(); 859623: } 859623: 859623: 859623: iterator 859623: find(const key_type& __k); 859623: 859623: const_iterator 859623: find(const key_type& __k) const; 859623: 859623: size_type 859623: count(const key_type& __k) const; 859623: 859623: iterator 859623: lower_bound(const key_type& __k) 859623: { return iterator(_M_lower_bound(_M_begin(), _M_end(), __k)); } 859623: 859623: const_iterator 859623: lower_bound(const key_type& __k) const 859623: { 859623: return const_iterator 859623: (_M_lower_bound(_M_begin(), _M_end(), __k)); 859623: } 859623: 859623: iterator 859623: upper_bound(const key_type& __k) 859623: { return iterator(_M_upper_bound(_M_begin(), _M_end(), __k)); } 859623: 859623: const_iterator 859623: upper_bound(const key_type& __k) const 859623: { 859623: return const_iterator 859623: (_M_upper_bound(_M_begin(), _M_end(), __k)); 859623: } 859623: 859623: pair 859623: equal_range(const key_type& __k); 859623: 859623: pair 859623: equal_range(const key_type& __k) const; 859623: # 2012 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: bool 859623: __rb_verify() const; 859623: 859623: 859623: _Rb_tree& 859623: operator=(_Rb_tree&&) 859623: noexcept(_Node_alloc_traits::_S_nothrow_move() 859623: && is_nothrow_move_assignable<_Compare>::value); 859623: 859623: template 859623: void 859623: _M_assign_unique(_Iterator, _Iterator); 859623: 859623: template 859623: void 859623: _M_assign_equal(_Iterator, _Iterator); 859623: 859623: private: 859623: 859623: void 859623: _M_move_data(_Rb_tree& __x, true_type) 859623: { _M_impl._M_move_data(__x._M_impl); } 859623: 859623: 859623: 859623: void 859623: _M_move_data(_Rb_tree&, false_type); 859623: 859623: 859623: void 859623: _M_move_assign(_Rb_tree&, true_type); 859623: 859623: 859623: 859623: void 859623: _M_move_assign(_Rb_tree&, false_type); 859623: # 2252 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: friend bool 859623: operator==(const _Rb_tree& __x, const _Rb_tree& __y) 859623: { 859623: return __x.size() == __y.size() 859623: && std::equal(__x.begin(), __x.end(), __y.begin()); 859623: } 859623: # 2269 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: friend bool 859623: operator<(const _Rb_tree& __x, const _Rb_tree& __y) 859623: { 859623: return std::lexicographical_compare(__x.begin(), __x.end(), 859623: __y.begin(), __y.end()); 859623: } 859623: 859623: 859623: private: 859623: 859623: 859623: struct _Auto_node 859623: { 859623: template 859623: _Auto_node(_Rb_tree& __t, _Args&&... __args) 859623: : _M_t(__t), 859623: _M_node(__t._M_create_node(std::forward<_Args>(__args)...)) 859623: { } 859623: 859623: ~_Auto_node() 859623: { 859623: if (_M_node) 859623: _M_t._M_drop_node(_M_node); 859623: } 859623: 859623: _Auto_node(_Auto_node&& __n) 859623: : _M_t(__n._M_t), _M_node(__n._M_node) 859623: { __n._M_node = nullptr; } 859623: 859623: const _Key& 859623: _M_key() const 859623: { return _S_key(_M_node); } 859623: 859623: iterator 859623: _M_insert(pair<_Base_ptr, _Base_ptr> __p) 859623: { 859623: auto __it = _M_t._M_insert_node(__p.first, __p.second, _M_node); 859623: _M_node = nullptr; 859623: return __it; 859623: } 859623: 859623: iterator 859623: _M_insert_equal_lower() 859623: { 859623: auto __it = _M_t._M_insert_equal_lower_node(_M_node); 859623: _M_node = nullptr; 859623: return __it; 859623: } 859623: 859623: _Rb_tree& _M_t; 859623: _Node_ptr _M_node; 859623: }; 859623: 859623: }; 859623: 859623: template 859623: inline void 859623: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) 859623: { __x.swap(__y); } 859623: 859623: 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_move_data(_Rb_tree& __x, false_type) 859623: { 859623: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 859623: _M_move_data(__x, true_type()); 859623: else 859623: { 859623: constexpr bool __move = !__move_if_noexcept_cond::value; 859623: _Alloc_node __an(*this); 859623: _M_root() = _M_copy<__move>(__x, __an); 859623: if (__move) 859623: __x.clear(); 859623: } 859623: } 859623: 859623: template 859623: inline void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_move_assign(_Rb_tree& __x, true_type) 859623: { 859623: clear(); 859623: if (__x._M_root()) 859623: _M_move_data(__x, true_type()); 859623: std::__alloc_on_move(_M_get_Node_allocator(), 859623: __x._M_get_Node_allocator()); 859623: } 859623: 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_move_assign(_Rb_tree& __x, false_type) 859623: { 859623: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) 859623: return _M_move_assign(__x, true_type{}); 859623: 859623: 859623: 859623: _Reuse_or_alloc_node __roan(*this); 859623: _M_impl._M_reset(); 859623: if (__x._M_root()) 859623: { 859623: _M_root() = _M_copy<__as_rvalue>(__x, __roan); 859623: __x.clear(); 859623: } 859623: } 859623: 859623: template 859623: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: operator=(_Rb_tree&& __x) 859623: noexcept(_Node_alloc_traits::_S_nothrow_move() 859623: && is_nothrow_move_assignable<_Compare>::value) 859623: { 859623: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare); 859623: _M_move_assign(__x, 859623: __bool_constant<_Node_alloc_traits::_S_nothrow_move()>()); 859623: return *this; 859623: } 859623: 859623: template 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_assign_unique(_Iterator __first, _Iterator __last) 859623: { 859623: _Reuse_or_alloc_node __roan(*this); 859623: _M_impl._M_reset(); 859623: for (; __first != __last; ++__first) 859623: _M_insert_unique_(end(), *__first, __roan); 859623: } 859623: 859623: template 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_assign_equal(_Iterator __first, _Iterator __last) 859623: { 859623: _Reuse_or_alloc_node __roan(*this); 859623: _M_impl._M_reset(); 859623: for (; __first != __last; ++__first) 859623: _M_insert_equal_(end(), *__first, __roan); 859623: } 859623: 859623: 859623: template 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: operator=(const _Rb_tree& __x) 859623: { 859623: if (this != std::__addressof(__x)) 859623: { 859623: 859623: 859623: if (_Node_alloc_traits::_S_propagate_on_copy_assign()) 859623: { 859623: auto& __this_alloc = this->_M_get_Node_allocator(); 859623: auto& __that_alloc = __x._M_get_Node_allocator(); 859623: if (!_Node_alloc_traits::_S_always_equal() 859623: && __this_alloc != __that_alloc) 859623: { 859623: 859623: 859623: clear(); 859623: std::__alloc_on_copy(__this_alloc, __that_alloc); 859623: } 859623: } 859623: 859623: 859623: _Reuse_or_alloc_node __roan(*this); 859623: _M_impl._M_reset(); 859623: _M_impl._M_key_compare = __x._M_impl._M_key_compare; 859623: if (__x._M_root()) 859623: _M_root() = _M_copy<__as_lvalue>(__x, __roan); 859623: } 859623: 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: template 859623: 859623: 859623: 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_insert_(_Base_ptr __x, _Base_ptr __p, 859623: 859623: _Arg&& __v, 859623: 859623: 859623: 859623: _NodeGen& __node_gen) 859623: { 859623: bool __insert_left = (__x || __p == _M_end() 859623: || _M_impl._M_key_compare(_KeyOfValue()(__v), 859623: _S_key(__p))); 859623: 859623: _Base_ptr __z = 859623: __node_gen(std::forward<_Arg>(__v))->_M_base_ptr(); 859623: 859623: _Node_traits::_S_insert_and_rebalance 859623: (__insert_left, __z, __p, this->_M_impl._M_header); 859623: ++_M_impl._M_node_count; 859623: return iterator(__z); 859623: } 859623: 859623: template 859623: 859623: template 859623: 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: 859623: _M_insert_lower(_Base_ptr __p, _Arg&& __v) 859623: 859623: 859623: 859623: { 859623: bool __insert_left = (__p == _M_end() 859623: || !_M_impl._M_key_compare(_S_key(__p), 859623: _KeyOfValue()(__v))); 859623: 859623: _Base_ptr __z = 859623: _M_create_node(std::forward<_Arg>(__v))->_M_base_ptr(); 859623: _Node_traits::_S_insert_and_rebalance 859623: (__insert_left, __z, __p, this->_M_impl._M_header); 859623: ++_M_impl._M_node_count; 859623: return iterator(__z); 859623: } 859623: 859623: template 859623: 859623: template 859623: 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: 859623: _M_insert_equal_lower(_Arg&& __v) 859623: 859623: 859623: 859623: { 859623: _Base_ptr __x = _M_begin(); 859623: _Base_ptr __y = _M_end(); 859623: while (__x) 859623: { 859623: __y = __x; 859623: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? 859623: _S_left(__x) : _S_right(__x); 859623: } 859623: return _M_insert_lower(__y, std::forward<_Arg>(__v)); 859623: } 859623: 859623: template 859623: template 859623: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Base_ptr 859623: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: 859623: _M_copy(_Node_ptr __x, _Base_ptr __p, _NodeGen& __node_gen) 859623: { 859623: 859623: _Node_ptr __top = _M_clone_node<_MoveValues>(__x, __node_gen); 859623: _Base_ptr __top_base = __top->_M_base_ptr(); 859623: __top->_M_parent = __p; 859623: 859623: if (true) 859623: { 859623: if (__x->_M_right) 859623: __top->_M_right = 859623: _M_copy<_MoveValues>(_S_right(__x), __top_base, __node_gen); 859623: __p = __top_base; 859623: __x = _S_left(__x); 859623: 859623: while (__x) 859623: { 859623: _Base_ptr __y = 859623: _M_clone_node<_MoveValues>(__x, __node_gen)->_M_base_ptr(); 859623: __p->_M_left = __y; 859623: __y->_M_parent = __p; 859623: if (__x->_M_right) 859623: __y->_M_right = _M_copy<_MoveValues>(_S_right(__x), 859623: __y, __node_gen); 859623: __p = __y; 859623: __x = _S_left(__x); 859623: } 859623: } 859623: if (false) 859623: { 859623: _M_erase(__top); 859623: ; 859623: } 859623: return __top_base; 859623: } 859623: 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_erase(_Node_ptr __x) 859623: { 859623: 859623: while (__x) 859623: { 859623: _M_erase(_S_right(__x)); 859623: _Node_ptr __y = _S_left(__x); 859623: _M_drop_node(__x); 859623: __x = __y; 859623: } 859623: } 859623: 859623: template 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::_Base_ptr 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_lower_bound(_Base_ptr __x, _Base_ptr __y, 859623: const _Key& __k) const 859623: { 859623: while (__x) 859623: if (!_M_impl._M_key_compare(_S_key(__x), __k)) 859623: __y = __x, __x = _S_left(__x); 859623: else 859623: __x = _S_right(__x); 859623: return __y; 859623: } 859623: 859623: template 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::_Base_ptr 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_upper_bound(_Base_ptr __x, _Base_ptr __y, 859623: const _Key& __k) const 859623: { 859623: while (__x) 859623: if (_M_impl._M_key_compare(__k, _S_key(__x))) 859623: __y = __x, __x = _S_left(__x); 859623: else 859623: __x = _S_right(__x); 859623: return __y; 859623: } 859623: 859623: template 859623: pair::iterator, 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::iterator> 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: equal_range(const _Key& __k) 859623: { 859623: typedef pair _Ret; 859623: 859623: _Base_ptr __x = _M_begin(); 859623: _Base_ptr __y = _M_end(); 859623: while (__x) 859623: { 859623: if (_M_impl._M_key_compare(_S_key(__x), __k)) 859623: __x = _S_right(__x); 859623: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 859623: __y = __x, __x = _S_left(__x); 859623: else 859623: { 859623: _Base_ptr __xu(__x); 859623: _Base_ptr __yu(__y); 859623: __y = __x, __x = _S_left(__x); 859623: __xu = _S_right(__xu); 859623: return _Ret(iterator(_M_lower_bound(__x, __y, __k)), 859623: iterator(_M_upper_bound(__xu, __yu, __k))); 859623: } 859623: } 859623: return _Ret(iterator(__y), iterator(__y)); 859623: } 859623: 859623: template 859623: pair::const_iterator, 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::const_iterator> 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: equal_range(const _Key& __k) const 859623: { 859623: typedef pair _Ret; 859623: 859623: _Base_ptr __x = _M_begin(); 859623: _Base_ptr __y = _M_end(); 859623: while (__x) 859623: { 859623: if (_M_impl._M_key_compare(_S_key(__x), __k)) 859623: __x = _S_right(__x); 859623: else if (_M_impl._M_key_compare(__k, _S_key(__x))) 859623: __y = __x, __x = _S_left(__x); 859623: else 859623: { 859623: _Base_ptr __xu(__x); 859623: _Base_ptr __yu(__y); 859623: __y = __x, __x = _S_left(__x); 859623: __xu = _S_right(__xu); 859623: return _Ret(const_iterator(_M_lower_bound(__x, __y, __k)), 859623: const_iterator(_M_upper_bound(__xu, __yu, __k))); 859623: } 859623: } 859623: return _Ret(const_iterator(__y), const_iterator(__y)); 859623: } 859623: 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: swap(_Rb_tree& __t) 859623: noexcept(__is_nothrow_swappable<_Compare>::value) 859623: { 859623: if (!_M_root()) 859623: { 859623: if (__t._M_root()) 859623: _M_impl._M_move_data(__t._M_impl); 859623: } 859623: else if (!__t._M_root()) 859623: __t._M_impl._M_move_data(_M_impl); 859623: else 859623: { 859623: std::swap(_M_root(),__t._M_root()); 859623: std::swap(_M_leftmost(),__t._M_leftmost()); 859623: std::swap(_M_rightmost(),__t._M_rightmost()); 859623: 859623: _M_root()->_M_parent = _M_end(); 859623: __t._M_root()->_M_parent = __t._M_end(); 859623: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); 859623: } 859623: 859623: 859623: using std::swap; 859623: swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); 859623: 859623: _Node_alloc_traits::_S_on_swap(_M_get_Node_allocator(), 859623: __t._M_get_Node_allocator()); 859623: } 859623: 859623: template 859623: pair::_Base_ptr, 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::_Base_ptr> 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_get_insert_unique_pos(const key_type& __k) 859623: { 859623: typedef pair<_Base_ptr, _Base_ptr> _Res; 859623: _Base_ptr __x = _M_begin(); 859623: _Base_ptr __y = _M_end(); 859623: bool __comp = true; 859623: while (__x) 859623: { 859623: __y = __x; 859623: __comp = _M_impl._M_key_compare(__k, _S_key(__x)); 859623: __x = __comp ? _S_left(__x) : _S_right(__x); 859623: } 859623: iterator __j = iterator(__y); 859623: if (__comp) 859623: { 859623: if (__j == begin()) 859623: return _Res(__x, __y); 859623: else 859623: --__j; 859623: } 859623: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) 859623: return _Res(__x, __y); 859623: return _Res(__j._M_node, _Base_ptr()); 859623: } 859623: 859623: template 859623: pair::_Base_ptr, 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::_Base_ptr> 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_get_insert_equal_pos(const key_type& __k) 859623: { 859623: typedef pair<_Base_ptr, _Base_ptr> _Res; 859623: _Base_ptr __x = _M_begin(); 859623: _Base_ptr __y = _M_end(); 859623: while (__x) 859623: { 859623: __y = __x; 859623: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? 859623: _S_left(__x) : _S_right(__x); 859623: } 859623: return _Res(__x, __y); 859623: } 859623: 859623: template 859623: 859623: template 859623: 859623: pair::iterator, bool> 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: 859623: _M_insert_unique(_Arg&& __v) 859623: 859623: 859623: 859623: { 859623: typedef pair _Res; 859623: pair<_Base_ptr, _Base_ptr> __res 859623: = _M_get_insert_unique_pos(_KeyOfValue()(__v)); 859623: 859623: if (__res.second) 859623: { 859623: _Alloc_node __an(*this); 859623: return _Res(_M_insert_(__res.first, __res.second, 859623: std::forward<_Arg>(__v), __an), 859623: true); 859623: } 859623: 859623: return _Res(iterator(__res.first), false); 859623: } 859623: 859623: template 859623: 859623: template 859623: 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: 859623: _M_insert_equal(_Arg&& __v) 859623: 859623: 859623: 859623: { 859623: pair<_Base_ptr, _Base_ptr> __res 859623: = _M_get_insert_equal_pos(_KeyOfValue()(__v)); 859623: _Alloc_node __an(*this); 859623: return _M_insert_(__res.first, __res.second, 859623: std::forward<_Arg>(__v), __an); 859623: } 859623: 859623: template 859623: pair::_Base_ptr, 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::_Base_ptr> 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_get_insert_hint_unique_pos(const_iterator __position, 859623: const key_type& __k) 859623: { 859623: typedef pair<_Base_ptr, _Base_ptr> _Res; 859623: 859623: 859623: if (__position._M_node == _M_end()) 859623: { 859623: if (size() > 0 859623: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) 859623: return _Res(_Base_ptr(), _M_rightmost()); 859623: else 859623: return _M_get_insert_unique_pos(__k); 859623: } 859623: else if (_M_impl._M_key_compare(__k, _S_key(__position._M_node))) 859623: { 859623: 859623: iterator __before(__position._M_node); 859623: if (__position._M_node == _M_leftmost()) 859623: return _Res(_M_leftmost(), _M_leftmost()); 859623: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) 859623: { 859623: if (!_S_right(__before._M_node)) 859623: return _Res(_Base_ptr(), __before._M_node); 859623: else 859623: return _Res(__position._M_node, __position._M_node); 859623: } 859623: else 859623: return _M_get_insert_unique_pos(__k); 859623: } 859623: else if (_M_impl._M_key_compare(_S_key(__position._M_node), __k)) 859623: { 859623: 859623: iterator __after(__position._M_node); 859623: if (__position._M_node == _M_rightmost()) 859623: return _Res(_Base_ptr(), _M_rightmost()); 859623: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) 859623: { 859623: if (!_S_right(__position._M_node)) 859623: return _Res(_Base_ptr(), __position._M_node); 859623: else 859623: return _Res(__after._M_node, __after._M_node); 859623: } 859623: else 859623: return _M_get_insert_unique_pos(__k); 859623: } 859623: else 859623: 859623: return _Res(__position._M_node, _Base_ptr()); 859623: } 859623: 859623: template 859623: 859623: template 859623: 859623: 859623: 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_insert_unique_(const_iterator __position, 859623: 859623: _Arg&& __v, 859623: 859623: 859623: 859623: _NodeGen& __node_gen) 859623: { 859623: pair<_Base_ptr, _Base_ptr> __res 859623: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); 859623: 859623: if (__res.second) 859623: return _M_insert_(__res.first, __res.second, 859623: std::forward<_Arg>(__v), 859623: __node_gen); 859623: return iterator(__res.first); 859623: } 859623: 859623: template 859623: pair::_Base_ptr, 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::_Base_ptr> 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) 859623: { 859623: typedef pair<_Base_ptr, _Base_ptr> _Res; 859623: 859623: 859623: if (__position._M_node == _M_end()) 859623: { 859623: if (size() > 0 859623: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) 859623: return _Res(_Base_ptr(), _M_rightmost()); 859623: else 859623: return _M_get_insert_equal_pos(__k); 859623: } 859623: else if (!_M_impl._M_key_compare(_S_key(__position._M_node), __k)) 859623: { 859623: 859623: iterator __before(__position._M_node); 859623: if (__position._M_node == _M_leftmost()) 859623: return _Res(_M_leftmost(), _M_leftmost()); 859623: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) 859623: { 859623: if (!_S_right(__before._M_node)) 859623: return _Res(_Base_ptr(), __before._M_node); 859623: else 859623: return _Res(__position._M_node, __position._M_node); 859623: } 859623: else 859623: return _M_get_insert_equal_pos(__k); 859623: } 859623: else 859623: { 859623: 859623: iterator __after(__position._M_node); 859623: if (__position._M_node == _M_rightmost()) 859623: return _Res(_Base_ptr(), _M_rightmost()); 859623: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) 859623: { 859623: if (!_S_right(__position._M_node)) 859623: return _Res(_Base_ptr(), __position._M_node); 859623: else 859623: return _Res(__after._M_node, __after._M_node); 859623: } 859623: else 859623: return _Res(_Base_ptr(), _Base_ptr()); 859623: } 859623: } 859623: 859623: template 859623: 859623: template 859623: 859623: 859623: 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_insert_equal_(const_iterator __position, 859623: 859623: _Arg&& __v, 859623: 859623: 859623: 859623: _NodeGen& __node_gen) 859623: { 859623: pair<_Base_ptr, _Base_ptr> __res 859623: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); 859623: 859623: if (__res.second) 859623: return _M_insert_(__res.first, __res.second, 859623: std::forward<_Arg>(__v), 859623: __node_gen); 859623: 859623: return _M_insert_equal_lower(std::forward<_Arg>(__v)); 859623: } 859623: 859623: 859623: template 859623: auto 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Node_ptr __z) 859623: -> iterator 859623: { 859623: bool __insert_left = (__x || __p == _M_end() 859623: || _M_impl._M_key_compare(_S_key(__z), 859623: _S_key(__p))); 859623: 859623: _Base_ptr __base_z = __z->_M_base_ptr(); 859623: _Node_traits::_S_insert_and_rebalance 859623: (__insert_left, __base_z, __p, this->_M_impl._M_header); 859623: ++_M_impl._M_node_count; 859623: return iterator(__base_z); 859623: } 859623: 859623: template 859623: auto 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_insert_lower_node(_Base_ptr __p, _Node_ptr __z) 859623: -> iterator 859623: { 859623: bool __insert_left = (__p == _M_end() 859623: || !_M_impl._M_key_compare(_S_key(__p), 859623: _S_key(__z))); 859623: 859623: _Base_ptr __base_z = __z->_M_base_ptr(); 859623: _Node_traits::_S_insert_and_rebalance 859623: (__insert_left, __base_z, __p, this->_M_impl._M_header); 859623: ++_M_impl._M_node_count; 859623: return iterator(__base_z); 859623: } 859623: 859623: template 859623: auto 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_insert_equal_lower_node(_Node_ptr __z) 859623: -> iterator 859623: { 859623: _Base_ptr __x = _M_begin(); 859623: _Base_ptr __y = _M_end(); 859623: while (__x) 859623: { 859623: __y = __x; 859623: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? 859623: _S_left(__x) : _S_right(__x); 859623: } 859623: return _M_insert_lower_node(__y, __z); 859623: } 859623: 859623: template 859623: template 859623: auto 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_emplace_unique(_Args&&... __args) 859623: -> pair 859623: { 859623: _Auto_node __z(*this, std::forward<_Args>(__args)...); 859623: auto __res = _M_get_insert_unique_pos(__z._M_key()); 859623: if (__res.second) 859623: return {__z._M_insert(__res), true}; 859623: return {iterator(__res.first), false}; 859623: } 859623: 859623: template 859623: template 859623: auto 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_emplace_equal(_Args&&... __args) 859623: -> iterator 859623: { 859623: _Auto_node __z(*this, std::forward<_Args>(__args)...); 859623: auto __res = _M_get_insert_equal_pos(__z._M_key()); 859623: return __z._M_insert(__res); 859623: } 859623: 859623: template 859623: template 859623: auto 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) 859623: -> iterator 859623: { 859623: _Auto_node __z(*this, std::forward<_Args>(__args)...); 859623: auto __res = _M_get_insert_hint_unique_pos(__pos, __z._M_key()); 859623: if (__res.second) 859623: return __z._M_insert(__res); 859623: return iterator(__res.first); 859623: } 859623: 859623: template 859623: template 859623: auto 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) 859623: -> iterator 859623: { 859623: _Auto_node __z(*this, std::forward<_Args>(__args)...); 859623: auto __res = _M_get_insert_hint_equal_pos(__pos, __z._M_key()); 859623: if (__res.second) 859623: return __z._M_insert(__res); 859623: return __z._M_insert_equal_lower(); 859623: } 859623: 859623: 859623: 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_erase_aux(const_iterator __position) 859623: { 859623: _Base_ptr __y = _Node_traits::_S_rebalance_for_erase 859623: (__position._M_node, this->_M_impl._M_header); 859623: _M_drop_node(static_cast<_Node&>(*__y)._M_node_ptr()); 859623: --_M_impl._M_node_count; 859623: } 859623: 859623: template 859623: void 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: _M_erase_aux(const_iterator __first, const_iterator __last) 859623: { 859623: if (__first == begin() && __last == end()) 859623: clear(); 859623: else 859623: while (__first != __last) 859623: _M_erase_aux(__first++); 859623: } 859623: 859623: template 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: erase(const _Key& __x) 859623: { 859623: pair __p = equal_range(__x); 859623: const size_type __old_size = size(); 859623: _M_erase_aux(__p.first, __p.second); 859623: return __old_size - size(); 859623: } 859623: 859623: template 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: find(const _Key& __k) 859623: { 859623: iterator __j(_M_lower_bound(_M_begin(), _M_end(), __k)); 859623: return (__j == end() 859623: || _M_impl._M_key_compare(__k, 859623: _S_key(__j._M_node))) ? end() : __j; 859623: } 859623: 859623: template 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, 859623: _Compare, _Alloc>::const_iterator 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: find(const _Key& __k) const 859623: { 859623: const_iterator __j(_M_lower_bound(_M_begin(), _M_end(), __k)); 859623: return (__j == end() 859623: || _M_impl._M_key_compare(__k, 859623: _S_key(__j._M_node))) ? end() : __j; 859623: } 859623: 859623: template 859623: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type 859623: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: 859623: count(const _Key& __k) const 859623: { 859623: pair __p = equal_range(__k); 859623: const size_type __n = std::distance(__p.first, __p.second); 859623: return __n; 859623: } 859623: 859623: __attribute__ ((__pure__)) unsigned int 859623: _Rb_tree_black_count(const _Rb_tree_node_base* __node, 859623: const _Rb_tree_node_base* __root) throw (); 859623: 859623: template 859623: bool 859623: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const 859623: { 859623: if (_M_impl._M_node_count == 0 || begin() == end()) 859623: return _M_impl._M_node_count == 0 && begin() == end() 859623: && this->_M_impl._M_header._M_left == _M_end() 859623: && this->_M_impl._M_header._M_right == _M_end(); 859623: 859623: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); 859623: for (const_iterator __it = begin(); __it != end(); ++__it) 859623: { 859623: _Base_ptr __x = __it._M_node; 859623: _Base_ptr __L = _S_left(__x); 859623: _Base_ptr __R = _S_right(__x); 859623: 859623: if (__x->_M_color == _S_red) 859623: if ((__L && __L->_M_color == _S_red) 859623: || (__R && __R->_M_color == _S_red)) 859623: return false; 859623: 859623: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) 859623: return false; 859623: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) 859623: return false; 859623: 859623: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) 859623: return false; 859623: } 859623: 859623: if (_M_leftmost() != _Node_base::_S_minimum(_M_root())) 859623: return false; 859623: if (_M_rightmost() != _Node_base::_S_maximum(_M_root())) 859623: return false; 859623: return true; 859623: } 859623: # 3240 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_tree.h" 3 859623: 859623: } 859623: # 65 "/usr/arm-linux-gnueabi/include/c++/15/map" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 1 3 859623: # 69 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: class multimap; 859623: # 103 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template , 859623: typename _Alloc = std::allocator > > 859623: class map 859623: { 859623: public: 859623: typedef _Key key_type; 859623: typedef _Tp mapped_type; 859623: typedef std::pair value_type; 859623: typedef _Compare key_compare; 859623: typedef _Alloc allocator_type; 859623: 859623: private: 859623: # 128 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: static_assert(is_same::value, 859623: "std::map must have the same value_type as its allocator"); 859623: 859623: 859623: 859623: public: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: class value_compare 859623: : public std::binary_function 859623: { 859623: friend class map<_Key, _Tp, _Compare, _Alloc>; 859623: protected: 859623: _Compare comp; 859623: 859623: value_compare(_Compare __c) 859623: : comp(__c) { } 859623: 859623: public: 859623: bool operator()(const value_type& __x, const value_type& __y) const 859623: { return comp(__x.first, __y.first); } 859623: }; 859623: #pragma GCC diagnostic pop 859623: 859623: private: 859623: 859623: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 859623: rebind::other _Pair_alloc_type; 859623: 859623: typedef _Rb_tree, 859623: key_compare, _Pair_alloc_type> _Rep_type; 859623: 859623: 859623: _Rep_type _M_t; 859623: 859623: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 859623: # 172 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: public: 859623: 859623: 859623: typedef typename _Alloc_traits::pointer pointer; 859623: typedef typename _Alloc_traits::const_pointer const_pointer; 859623: typedef typename _Alloc_traits::reference reference; 859623: typedef typename _Alloc_traits::const_reference const_reference; 859623: typedef typename _Rep_type::iterator iterator; 859623: typedef typename _Rep_type::const_iterator const_iterator; 859623: typedef typename _Rep_type::size_type size_type; 859623: typedef typename _Rep_type::difference_type difference_type; 859623: typedef typename _Rep_type::reverse_iterator reverse_iterator; 859623: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 859623: # 200 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: map() = default; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: map(const _Compare& __comp, 859623: const allocator_type& __a = allocator_type()) 859623: : _M_t(__comp, _Pair_alloc_type(__a)) { } 859623: # 222 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: map(const map&) = default; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: map(map&&) = default; 859623: # 243 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: map(initializer_list __l, 859623: const _Compare& __comp = _Compare(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_t(__comp, _Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 859623: 859623: 859623: explicit 859623: map(const allocator_type& __a) 859623: : _M_t(_Pair_alloc_type(__a)) { } 859623: 859623: 859623: map(const map& __m, const __type_identity_t& __a) 859623: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 859623: 859623: 859623: map(map&& __m, const __type_identity_t& __a) 859623: noexcept(is_nothrow_copy_constructible<_Compare>::value 859623: && _Alloc_traits::_S_always_equal()) 859623: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 859623: 859623: 859623: map(initializer_list __l, const allocator_type& __a) 859623: : _M_t(_Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } 859623: 859623: 859623: template 859623: map(_InputIterator __first, _InputIterator __last, 859623: const allocator_type& __a) 859623: : _M_t(_Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_unique(__first, __last); } 859623: # 287 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: map(_InputIterator __first, _InputIterator __last) 859623: : _M_t() 859623: { _M_t._M_insert_range_unique(__first, __last); } 859623: # 304 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: map(_InputIterator __first, _InputIterator __last, 859623: const _Compare& __comp, 859623: const allocator_type& __a = allocator_type()) 859623: : _M_t(__comp, _Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_unique(__first, __last); } 859623: # 337 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: ~map() = default; 859623: # 353 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: map& 859623: operator=(const map&) = default; 859623: 859623: 859623: map& 859623: operator=(map&&) = default; 859623: # 371 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: map& 859623: operator=(initializer_list __l) 859623: { 859623: _M_t._M_assign_unique(__l.begin(), __l.end()); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return allocator_type(_M_t.get_allocator()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: begin() noexcept 859623: { return _M_t.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: begin() const noexcept 859623: { return _M_t.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: end() noexcept 859623: { return _M_t.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: end() const noexcept 859623: { return _M_t.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator 859623: rbegin() noexcept 859623: { return _M_t.rbegin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: rbegin() const noexcept 859623: { return _M_t.rbegin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator 859623: rend() noexcept 859623: { return _M_t.rend(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: rend() const noexcept 859623: { return _M_t.rend(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: cbegin() const noexcept 859623: { return _M_t.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: cend() const noexcept 859623: { return _M_t.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: crbegin() const noexcept 859623: { return _M_t.rbegin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: crend() const noexcept 859623: { return _M_t.rend(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] bool 859623: empty() const noexcept 859623: { return _M_t.empty(); } 859623: 859623: 859623: size_type 859623: size() const noexcept 859623: { return _M_t.size(); } 859623: 859623: 859623: size_type 859623: max_size() const noexcept 859623: { return _M_t.max_size(); } 859623: # 526 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: mapped_type& 859623: operator[](const key_type& __k) 859623: { 859623: 859623: 859623: 859623: iterator __i = lower_bound(__k); 859623: 859623: if (__i == end() || key_comp()(__k, (*__i).first)) 859623: 859623: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 859623: std::tuple(__k), 859623: std::tuple<>()); 859623: 859623: 859623: 859623: return (*__i).second; 859623: } 859623: 859623: 859623: mapped_type& 859623: operator[](key_type&& __k) 859623: { 859623: 859623: 859623: 859623: iterator __i = lower_bound(__k); 859623: 859623: if (__i == end() || key_comp()(__k, (*__i).first)) 859623: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, 859623: std::forward_as_tuple(std::move(__k)), 859623: std::tuple<>()); 859623: return (*__i).second; 859623: } 859623: # 571 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: mapped_type& 859623: at(const key_type& __k) 859623: { 859623: iterator __i = lower_bound(__k); 859623: if (__i == end() || key_comp()(__k, (*__i).first)) 859623: __throw_out_of_range(("map::at")); 859623: return (*__i).second; 859623: } 859623: 859623: const mapped_type& 859623: at(const key_type& __k) const 859623: { 859623: const_iterator __i = lower_bound(__k); 859623: if (__i == end() || key_comp()(__k, (*__i).first)) 859623: __throw_out_of_range(("map::at")); 859623: return (*__i).second; 859623: } 859623: # 609 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: std::pair 859623: emplace(_Args&&... __args) 859623: { 859623: # 631 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); 859623: } 859623: # 659 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: iterator 859623: emplace_hint(const_iterator __pos, _Args&&... __args) 859623: { 859623: return _M_t._M_emplace_hint_unique(__pos, 859623: std::forward<_Args>(__args)...); 859623: } 859623: # 856 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: std::pair 859623: insert(const value_type& __x) 859623: { return _M_t._M_insert_unique(__x); } 859623: 859623: 859623: 859623: 859623: std::pair 859623: insert(value_type&& __x) 859623: { return _M_t._M_insert_unique(std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, 859623: pair> 859623: insert(_Pair&& __x) 859623: { 859623: # 888 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); 859623: } 859623: # 901 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: void 859623: insert(std::initializer_list __list) 859623: { insert(__list.begin(), __list.end()); } 859623: # 948 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: iterator 859623: 859623: insert(const_iterator __position, const value_type& __x) 859623: 859623: 859623: 859623: { return _M_t._M_insert_unique_(__position, __x); } 859623: 859623: 859623: 859623: 859623: iterator 859623: insert(const_iterator __position, value_type&& __x) 859623: { return _M_t._M_insert_unique_(__position, std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, iterator> 859623: insert(const_iterator __position, _Pair&& __x) 859623: { 859623: return _M_t._M_emplace_hint_unique(__position, 859623: std::forward<_Pair>(__x)); 859623: } 859623: # 981 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: void 859623: insert(_InputIterator __first, _InputIterator __last) 859623: { _M_t._M_insert_range_unique(__first, __last); } 859623: # 1120 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: iterator 859623: erase(const_iterator __position) 859623: { return _M_t.erase(__position); } 859623: 859623: 859623: __attribute ((__abi_tag__ ("cxx11"))) 859623: iterator 859623: erase(iterator __position) 859623: { return _M_t.erase(__position); } 859623: # 1157 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: size_type 859623: erase(const key_type& __x) 859623: { return _M_t.erase(__x); } 859623: # 1177 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: iterator 859623: erase(const_iterator __first, const_iterator __last) 859623: { return _M_t.erase(__first, __last); } 859623: # 1211 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: void 859623: swap(map& __x) 859623: noexcept(__is_nothrow_swappable<_Compare>::value) 859623: { _M_t.swap(__x._M_t); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: clear() noexcept 859623: { _M_t.clear(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: key_compare 859623: key_comp() const 859623: { return _M_t.key_comp(); } 859623: 859623: 859623: 859623: 859623: 859623: value_compare 859623: value_comp() const 859623: { return value_compare(_M_t.key_comp()); } 859623: # 1258 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: iterator 859623: find(const key_type& __x) 859623: { return _M_t.find(__x); } 859623: # 1283 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: const_iterator 859623: find(const key_type& __x) const 859623: { return _M_t.find(__x); } 859623: # 1304 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: size_type 859623: count(const key_type& __x) const 859623: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 859623: # 1347 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: iterator 859623: lower_bound(const key_type& __x) 859623: { return _M_t.lower_bound(__x); } 859623: # 1372 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: const_iterator 859623: lower_bound(const key_type& __x) const 859623: { return _M_t.lower_bound(__x); } 859623: # 1392 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: iterator 859623: upper_bound(const key_type& __x) 859623: { return _M_t.upper_bound(__x); } 859623: # 1412 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: const_iterator 859623: upper_bound(const key_type& __x) const 859623: { return _M_t.upper_bound(__x); } 859623: # 1441 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) 859623: { return _M_t.equal_range(__x); } 859623: # 1470 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) const 859623: { return _M_t.equal_range(__x); } 859623: # 1487 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: friend bool 859623: operator==(const map<_K1, _T1, _C1, _A1>&, 859623: const map<_K1, _T1, _C1, _A1>&); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: friend bool 859623: operator<(const map<_K1, _T1, _C1, _A1>&, 859623: const map<_K1, _T1, _C1, _A1>&); 859623: 859623: }; 859623: # 1569 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: inline bool 859623: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const map<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return __x._M_t == __y._M_t; } 859623: # 1607 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: template 859623: inline bool 859623: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const map<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return __x._M_t < __y._M_t; } 859623: 859623: 859623: template 859623: inline bool 859623: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const map<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return !(__x == __y); } 859623: 859623: 859623: template 859623: inline bool 859623: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const map<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return __y < __x; } 859623: 859623: 859623: template 859623: inline bool 859623: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const map<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return !(__y < __x); } 859623: 859623: 859623: template 859623: inline bool 859623: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const map<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return !(__x < __y); } 859623: 859623: 859623: 859623: template 859623: inline void 859623: swap(map<_Key, _Tp, _Compare, _Alloc>& __x, 859623: map<_Key, _Tp, _Compare, _Alloc>& __y) 859623: noexcept(noexcept(__x.swap(__y))) 859623: { __x.swap(__y); } 859623: 859623: 859623: # 1673 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_map.h" 3 859623: 859623: } 859623: # 66 "/usr/arm-linux-gnueabi/include/c++/15/map" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 1 3 859623: # 67 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: class map; 859623: # 101 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template , 859623: typename _Alloc = std::allocator > > 859623: class multimap 859623: { 859623: public: 859623: typedef _Key key_type; 859623: typedef _Tp mapped_type; 859623: typedef std::pair value_type; 859623: typedef _Compare key_compare; 859623: typedef _Alloc allocator_type; 859623: 859623: private: 859623: # 127 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: static_assert(is_same::value, 859623: "std::multimap must have the same value_type as its allocator"); 859623: 859623: 859623: 859623: public: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 859623: class value_compare 859623: : public std::binary_function 859623: { 859623: friend class multimap<_Key, _Tp, _Compare, _Alloc>; 859623: protected: 859623: _Compare comp; 859623: 859623: value_compare(_Compare __c) 859623: : comp(__c) { } 859623: 859623: public: 859623: bool operator()(const value_type& __x, const value_type& __y) const 859623: { return comp(__x.first, __y.first); } 859623: }; 859623: #pragma GCC diagnostic pop 859623: 859623: private: 859623: 859623: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 859623: rebind::other _Pair_alloc_type; 859623: 859623: typedef _Rb_tree, 859623: key_compare, _Pair_alloc_type> _Rep_type; 859623: 859623: _Rep_type _M_t; 859623: 859623: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; 859623: 859623: public: 859623: 859623: 859623: typedef typename _Alloc_traits::pointer pointer; 859623: typedef typename _Alloc_traits::const_pointer const_pointer; 859623: typedef typename _Alloc_traits::reference reference; 859623: typedef typename _Alloc_traits::const_reference const_reference; 859623: typedef typename _Rep_type::iterator iterator; 859623: typedef typename _Rep_type::const_iterator const_iterator; 859623: typedef typename _Rep_type::size_type size_type; 859623: typedef typename _Rep_type::difference_type difference_type; 859623: typedef typename _Rep_type::reverse_iterator reverse_iterator; 859623: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; 859623: # 190 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: multimap() = default; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: multimap(const _Compare& __comp, 859623: const allocator_type& __a = allocator_type()) 859623: : _M_t(__comp, _Pair_alloc_type(__a)) { } 859623: # 212 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: multimap(const multimap&) = default; 859623: # 221 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: multimap(multimap&&) = default; 859623: # 233 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: multimap(initializer_list __l, 859623: const _Compare& __comp = _Compare(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_t(__comp, _Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 859623: 859623: 859623: explicit 859623: multimap(const allocator_type& __a) 859623: : _M_t(_Pair_alloc_type(__a)) { } 859623: 859623: 859623: multimap(const multimap& __m, 859623: const __type_identity_t& __a) 859623: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } 859623: 859623: 859623: multimap(multimap&& __m, const __type_identity_t& __a) 859623: noexcept(is_nothrow_copy_constructible<_Compare>::value 859623: && _Alloc_traits::_S_always_equal()) 859623: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } 859623: 859623: 859623: multimap(initializer_list __l, const allocator_type& __a) 859623: : _M_t(_Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } 859623: 859623: 859623: template 859623: multimap(_InputIterator __first, _InputIterator __last, 859623: const allocator_type& __a) 859623: : _M_t(_Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_equal(__first, __last); } 859623: # 277 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: multimap(_InputIterator __first, _InputIterator __last) 859623: : _M_t() 859623: { _M_t._M_insert_range_equal(__first, __last); } 859623: # 293 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: multimap(_InputIterator __first, _InputIterator __last, 859623: const _Compare& __comp, 859623: const allocator_type& __a = allocator_type()) 859623: : _M_t(__comp, _Pair_alloc_type(__a)) 859623: { _M_t._M_insert_range_equal(__first, __last); } 859623: # 326 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: ~multimap() = default; 859623: # 342 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: multimap& 859623: operator=(const multimap&) = default; 859623: 859623: 859623: multimap& 859623: operator=(multimap&&) = default; 859623: # 360 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: multimap& 859623: operator=(initializer_list __l) 859623: { 859623: _M_t._M_assign_equal(__l.begin(), __l.end()); 859623: return *this; 859623: } 859623: 859623: 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return allocator_type(_M_t.get_allocator()); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: begin() noexcept 859623: { return _M_t.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: begin() const noexcept 859623: { return _M_t.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: end() noexcept 859623: { return _M_t.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: end() const noexcept 859623: { return _M_t.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator 859623: rbegin() noexcept 859623: { return _M_t.rbegin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: rbegin() const noexcept 859623: { return _M_t.rbegin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: reverse_iterator 859623: rend() noexcept 859623: { return _M_t.rend(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: rend() const noexcept 859623: { return _M_t.rend(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: cbegin() const noexcept 859623: { return _M_t.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: cend() const noexcept 859623: { return _M_t.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: crbegin() const noexcept 859623: { return _M_t.rbegin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_reverse_iterator 859623: crend() const noexcept 859623: { return _M_t.rend(); } 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] bool 859623: empty() const noexcept 859623: { return _M_t.empty(); } 859623: 859623: 859623: size_type 859623: size() const noexcept 859623: { return _M_t.size(); } 859623: 859623: 859623: size_type 859623: max_size() const noexcept 859623: { return _M_t.max_size(); } 859623: # 518 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: iterator 859623: emplace(_Args&&... __args) 859623: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } 859623: # 545 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: iterator 859623: emplace_hint(const_iterator __pos, _Args&&... __args) 859623: { 859623: return _M_t._M_emplace_hint_equal(__pos, 859623: std::forward<_Args>(__args)...); 859623: } 859623: # 567 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: iterator 859623: insert(const value_type& __x) 859623: { return _M_t._M_insert_equal(__x); } 859623: 859623: 859623: 859623: 859623: iterator 859623: insert(value_type&& __x) 859623: { return _M_t._M_insert_equal(std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, iterator> 859623: insert(_Pair&& __x) 859623: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } 859623: # 606 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: iterator 859623: 859623: insert(const_iterator __position, const value_type& __x) 859623: 859623: 859623: 859623: { return _M_t._M_insert_equal_(__position, __x); } 859623: 859623: 859623: 859623: 859623: iterator 859623: insert(const_iterator __position, value_type&& __x) 859623: { return _M_t._M_insert_equal_(__position, std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, iterator> 859623: insert(const_iterator __position, _Pair&& __x) 859623: { 859623: return _M_t._M_emplace_hint_equal(__position, 859623: std::forward<_Pair>(__x)); 859623: } 859623: # 640 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: void 859623: insert(_InputIterator __first, _InputIterator __last) 859623: { _M_t._M_insert_range_equal(__first, __last); } 859623: # 653 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: void 859623: insert(initializer_list __l) 859623: { this->insert(__l.begin(), __l.end()); } 859623: # 749 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: iterator 859623: erase(const_iterator __position) 859623: { return _M_t.erase(__position); } 859623: 859623: 859623: __attribute ((__abi_tag__ ("cxx11"))) 859623: iterator 859623: erase(iterator __position) 859623: { return _M_t.erase(__position); } 859623: # 786 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: size_type 859623: erase(const key_type& __x) 859623: { return _M_t.erase(__x); } 859623: # 807 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: iterator 859623: erase(const_iterator __first, const_iterator __last) 859623: { return _M_t.erase(__first, __last); } 859623: # 844 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: void 859623: swap(multimap& __x) 859623: noexcept(__is_nothrow_swappable<_Compare>::value) 859623: { _M_t.swap(__x._M_t); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: clear() noexcept 859623: { _M_t.clear(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: key_compare 859623: key_comp() const 859623: { return _M_t.key_comp(); } 859623: 859623: 859623: 859623: 859623: 859623: value_compare 859623: value_comp() const 859623: { return value_compare(_M_t.key_comp()); } 859623: # 890 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: iterator 859623: find(const key_type& __x) 859623: { return _M_t.find(__x); } 859623: # 914 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: const_iterator 859623: find(const key_type& __x) const 859623: { return _M_t.find(__x); } 859623: # 932 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: size_type 859623: count(const key_type& __x) const 859623: { return _M_t.count(__x); } 859623: # 975 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: iterator 859623: lower_bound(const key_type& __x) 859623: { return _M_t.lower_bound(__x); } 859623: # 1000 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: const_iterator 859623: lower_bound(const key_type& __x) const 859623: { return _M_t.lower_bound(__x); } 859623: # 1020 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: iterator 859623: upper_bound(const key_type& __x) 859623: { return _M_t.upper_bound(__x); } 859623: # 1040 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: const_iterator 859623: upper_bound(const key_type& __x) const 859623: { return _M_t.upper_bound(__x); } 859623: # 1067 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) 859623: { return _M_t.equal_range(__x); } 859623: # 1094 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) const 859623: { return _M_t.equal_range(__x); } 859623: # 1111 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: friend bool 859623: operator==(const multimap<_K1, _T1, _C1, _A1>&, 859623: const multimap<_K1, _T1, _C1, _A1>&); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: friend bool 859623: operator<(const multimap<_K1, _T1, _C1, _A1>&, 859623: const multimap<_K1, _T1, _C1, _A1>&); 859623: 859623: }; 859623: # 1192 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: inline bool 859623: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return __x._M_t == __y._M_t; } 859623: # 1230 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: template 859623: inline bool 859623: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return __x._M_t < __y._M_t; } 859623: 859623: 859623: template 859623: inline bool 859623: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return !(__x == __y); } 859623: 859623: 859623: template 859623: inline bool 859623: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return __y < __x; } 859623: 859623: 859623: template 859623: inline bool 859623: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return !(__y < __x); } 859623: 859623: 859623: template 859623: inline bool 859623: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, 859623: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) 859623: { return !(__x < __y); } 859623: 859623: 859623: 859623: template 859623: inline void 859623: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, 859623: multimap<_Key, _Tp, _Compare, _Alloc>& __y) 859623: noexcept(noexcept(__x.swap(__y))) 859623: { __x.swap(__y); } 859623: 859623: 859623: # 1296 "/usr/arm-linux-gnueabi/include/c++/15/bits/stl_multimap.h" 3 859623: 859623: } 859623: # 67 "/usr/arm-linux-gnueabi/include/c++/15/map" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/erase_if.h" 1 3 859623: # 69 "/usr/arm-linux-gnueabi/include/c++/15/map" 2 3 859623: # 82 "/usr/arm-linux-gnueabi/include/c++/15/map" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 83 "/usr/arm-linux-gnueabi/include/c++/15/map" 2 3 859623: # 27 "/<>/_include/workflow/URIParser.h" 2 859623: # 39 "/<>/_include/workflow/URIParser.h" 859623: 859623: # 39 "/<>/_include/workflow/URIParser.h" 859623: class ParsedURI 859623: { 859623: public: 859623: char *scheme; 859623: char *userinfo; 859623: char *host; 859623: char *port; 859623: char *path; 859623: char *query; 859623: char *fragment; 859623: int state; 859623: int error; 859623: 859623: ParsedURI() { init(); } 859623: virtual ~ParsedURI() { deinit(); } 859623: 859623: 859623: ParsedURI(const ParsedURI& uri) { copy(uri); } 859623: 859623: ParsedURI& operator= (const ParsedURI& uri) 859623: { 859623: if (this != &uri) 859623: { 859623: deinit(); 859623: copy(uri); 859623: } 859623: 859623: return *this; 859623: } 859623: 859623: 859623: ParsedURI(ParsedURI&& uri); 859623: 859623: ParsedURI& operator= (ParsedURI&& uri); 859623: 859623: private: 859623: void init() 859623: { 859623: scheme = 859623: # 77 "/<>/_include/workflow/URIParser.h" 3 4 859623: __null 859623: # 77 "/<>/_include/workflow/URIParser.h" 859623: ; 859623: userinfo = 859623: # 78 "/<>/_include/workflow/URIParser.h" 3 4 859623: __null 859623: # 78 "/<>/_include/workflow/URIParser.h" 859623: ; 859623: host = 859623: # 79 "/<>/_include/workflow/URIParser.h" 3 4 859623: __null 859623: # 79 "/<>/_include/workflow/URIParser.h" 859623: ; 859623: port = 859623: # 80 "/<>/_include/workflow/URIParser.h" 3 4 859623: __null 859623: # 80 "/<>/_include/workflow/URIParser.h" 859623: ; 859623: path = 859623: # 81 "/<>/_include/workflow/URIParser.h" 3 4 859623: __null 859623: # 81 "/<>/_include/workflow/URIParser.h" 859623: ; 859623: query = 859623: # 82 "/<>/_include/workflow/URIParser.h" 3 4 859623: __null 859623: # 82 "/<>/_include/workflow/URIParser.h" 859623: ; 859623: fragment = 859623: # 83 "/<>/_include/workflow/URIParser.h" 3 4 859623: __null 859623: # 83 "/<>/_include/workflow/URIParser.h" 859623: ; 859623: state = 0; 859623: error = 0; 859623: } 859623: 859623: void deinit() 859623: { 859623: free(scheme); 859623: free(userinfo); 859623: free(host); 859623: free(port); 859623: free(path); 859623: free(query); 859623: free(fragment); 859623: } 859623: 859623: void copy(const ParsedURI& uri); 859623: }; 859623: 859623: 859623: class URIParser 859623: { 859623: public: 859623: 859623: static int parse(const char *str, ParsedURI& uri); 859623: static int parse(const std::string& str, ParsedURI& uri) 859623: { 859623: return parse(str.c_str(), uri); 859623: } 859623: 859623: static std::map> 859623: split_query_strict(const std::string &query); 859623: 859623: static std::map 859623: split_query(const std::string &query); 859623: 859623: static std::vector split_path(const std::string &path); 859623: }; 859623: # 29 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/<>/_include/workflow/HttpUtil.h" 1 859623: # 25 "/<>/_include/workflow/HttpUtil.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/unordered_map" 1 3 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/unordered_map" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 1 3 859623: # 33 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 1 3 859623: # 37 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: class _Hashtable; 859623: 859623: namespace __detail 859623: { 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hashtable_base; 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: 859623: template 859623: inline typename std::iterator_traits<_Iterator>::difference_type 859623: __distance_fw(_Iterator __first, _Iterator __last) 859623: { 859623: using _Cat = typename std::iterator_traits<_Iterator>::iterator_category; 859623: if constexpr (is_convertible<_Cat, forward_iterator_tag>::value) 859623: return std::distance(__first, __last); 859623: else 859623: return __first != __last ? 1 : 0; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: struct _Identity 859623: { 859623: template 859623: _Tp&& 859623: operator()(_Tp&& __x) const noexcept 859623: { return std::forward<_Tp>(__x); } 859623: }; 859623: 859623: struct _Select1st 859623: { 859623: template 859623: struct __1st_type; 859623: 859623: template 859623: struct __1st_type> 859623: { using type = _Tp; }; 859623: 859623: template 859623: struct __1st_type> 859623: { using type = const _Tp; }; 859623: 859623: template 859623: struct __1st_type<_Pair&> 859623: { using type = typename __1st_type<_Pair>::type&; }; 859623: 859623: template 859623: typename __1st_type<_Tp>::type&& 859623: operator()(_Tp&& __x) const noexcept 859623: { return std::forward<_Tp>(__x).first; } 859623: }; 859623: 859623: template 859623: struct _NodeBuilder; 859623: 859623: template<> 859623: struct _NodeBuilder<_Select1st> 859623: { 859623: template 859623: static auto 859623: _S_build(_Kt&& __k, _Arg&& __arg, _NodeGenerator& __node_gen) 859623: -> typename _NodeGenerator::__node_ptr 859623: { 859623: return __node_gen(std::forward<_Kt>(__k), 859623: std::forward<_Arg>(__arg).second); 859623: } 859623: }; 859623: 859623: template<> 859623: struct _NodeBuilder<_Identity> 859623: { 859623: template 859623: static auto 859623: _S_build(_Kt&& __k, _Arg&&, _NodeGenerator& __node_gen) 859623: -> typename _NodeGenerator::__node_ptr 859623: { return __node_gen(std::forward<_Kt>(__k)); } 859623: }; 859623: 859623: template 859623: struct _NodePtrGuard 859623: { 859623: _HashtableAlloc& _M_h; 859623: _NodePtr _M_ptr; 859623: 859623: ~_NodePtrGuard() 859623: { 859623: if (_M_ptr) 859623: _M_h._M_deallocate_node_ptr(_M_ptr); 859623: } 859623: }; 859623: 859623: template 859623: struct _Hashtable_alloc; 859623: 859623: 859623: 859623: template 859623: struct _ReuseOrAllocNode 859623: { 859623: private: 859623: using __node_alloc_type = _NodeAlloc; 859623: using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; 859623: using __node_alloc_traits = 859623: typename __hashtable_alloc::__node_alloc_traits; 859623: 859623: public: 859623: using __node_ptr = typename __hashtable_alloc::__node_ptr; 859623: 859623: _ReuseOrAllocNode(__node_ptr __nodes, __hashtable_alloc& __h) 859623: : _M_nodes(__nodes), _M_h(__h) { } 859623: _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; 859623: 859623: ~_ReuseOrAllocNode() 859623: { _M_h._M_deallocate_nodes(_M_nodes); } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: __node_ptr 859623: operator()(_Arg&& __arg) 859623: { 859623: if (!_M_nodes) 859623: return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); 859623: 859623: using value_type = typename _NodeAlloc::value_type::value_type; 859623: 859623: __node_ptr __node = _M_nodes; 859623: if constexpr (is_assignable::value) 859623: { 859623: __node->_M_v() = std::forward<_Arg>(__arg); 859623: _M_nodes = _M_nodes->_M_next(); 859623: __node->_M_nxt = nullptr; 859623: } 859623: else 859623: { 859623: _M_nodes = _M_nodes->_M_next(); 859623: __node->_M_nxt = nullptr; 859623: auto& __a = _M_h._M_node_allocator(); 859623: __node_alloc_traits::destroy(__a, __node->_M_valptr()); 859623: _NodePtrGuard<__hashtable_alloc, __node_ptr> 859623: __guard{ _M_h, __node }; 859623: __node_alloc_traits::construct(__a, __node->_M_valptr(), 859623: std::forward<_Arg>(__arg)); 859623: __guard._M_ptr = nullptr; 859623: } 859623: return __node; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: private: 859623: __node_ptr _M_nodes; 859623: __hashtable_alloc& _M_h; 859623: }; 859623: 859623: 859623: 859623: template 859623: struct _AllocNode 859623: { 859623: private: 859623: using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; 859623: 859623: public: 859623: using __node_ptr = typename __hashtable_alloc::__node_ptr; 859623: 859623: _AllocNode(__hashtable_alloc& __h) 859623: : _M_h(__h) { } 859623: 859623: template 859623: __node_ptr 859623: operator()(_Args&&... __args) const 859623: { return _M_h._M_allocate_node(std::forward<_Args>(__args)...); } 859623: 859623: private: 859623: __hashtable_alloc& _M_h; 859623: }; 859623: # 262 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: template 859623: struct _Hashtable_traits 859623: { 859623: using __hash_cached = __bool_constant<_Cache_hash_code>; 859623: using __constant_iterators = __bool_constant<_Constant_iterators>; 859623: using __unique_keys = __bool_constant<_Unique_keys>; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hashtable_hash_traits 859623: { 859623: static constexpr size_t 859623: __small_size_threshold() noexcept 859623: { return std::__is_fast_hash<_Hash>::value ? 0 : 20; } 859623: }; 859623: # 292 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: struct _Hash_node_base 859623: { 859623: _Hash_node_base* _M_nxt; 859623: 859623: _Hash_node_base() noexcept : _M_nxt() { } 859623: 859623: _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hash_node_value_base 859623: { 859623: using value_type = _Value; 859623: 859623: __gnu_cxx::__aligned_buffer<_Value> _M_storage; 859623: 859623: 859623: 859623: [[__gnu__::__always_inline__]] 859623: _Value* 859623: _M_valptr() noexcept 859623: { return _M_storage._M_ptr(); } 859623: 859623: [[__gnu__::__always_inline__]] 859623: const _Value* 859623: _M_valptr() const noexcept 859623: { return _M_storage._M_ptr(); } 859623: 859623: [[__gnu__::__always_inline__]] 859623: _Value& 859623: _M_v() noexcept 859623: { return *_M_valptr(); } 859623: 859623: [[__gnu__::__always_inline__]] 859623: const _Value& 859623: _M_v() const noexcept 859623: { return *_M_valptr(); } 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hash_node_code_cache 859623: { }; 859623: 859623: 859623: 859623: 859623: template<> 859623: struct _Hash_node_code_cache 859623: { size_t _M_hash_code; }; 859623: 859623: template 859623: struct _Hash_node_value 859623: : _Hash_node_value_base<_Value> 859623: , _Hash_node_code_cache<_Cache_hash_code> 859623: { }; 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hash_node 859623: : _Hash_node_base 859623: , _Hash_node_value<_Value, _Cache_hash_code> 859623: { 859623: _Hash_node* 859623: _M_next() const noexcept 859623: { return static_cast<_Hash_node*>(this->_M_nxt); } 859623: }; 859623: 859623: 859623: template 859623: struct _Node_iterator_base 859623: { 859623: using __node_type = _Hash_node<_Value, _Cache_hash_code>; 859623: 859623: __node_type* _M_cur; 859623: 859623: _Node_iterator_base() : _M_cur(nullptr) { } 859623: _Node_iterator_base(__node_type* __p) noexcept 859623: : _M_cur(__p) { } 859623: 859623: void 859623: _M_incr() noexcept 859623: { _M_cur = _M_cur->_M_next(); } 859623: 859623: friend bool 859623: operator==(const _Node_iterator_base& __x, const _Node_iterator_base& __y) 859623: noexcept 859623: { return __x._M_cur == __y._M_cur; } 859623: 859623: 859623: friend bool 859623: operator!=(const _Node_iterator_base& __x, const _Node_iterator_base& __y) 859623: noexcept 859623: { return __x._M_cur != __y._M_cur; } 859623: 859623: }; 859623: 859623: 859623: template 859623: struct _Node_iterator 859623: : public _Node_iterator_base<_Value, __cache> 859623: { 859623: private: 859623: using __base_type = _Node_iterator_base<_Value, __cache>; 859623: using __node_type = typename __base_type::__node_type; 859623: 859623: public: 859623: using value_type = _Value; 859623: using difference_type = ptrdiff_t; 859623: using iterator_category = forward_iterator_tag; 859623: 859623: using pointer = __conditional_t<__constant_iterators, 859623: const value_type*, value_type*>; 859623: 859623: using reference = __conditional_t<__constant_iterators, 859623: const value_type&, value_type&>; 859623: 859623: _Node_iterator() = default; 859623: 859623: explicit 859623: _Node_iterator(__node_type* __p) noexcept 859623: : __base_type(__p) { } 859623: 859623: reference 859623: operator*() const noexcept 859623: { return this->_M_cur->_M_v(); } 859623: 859623: pointer 859623: operator->() const noexcept 859623: { return this->_M_cur->_M_valptr(); } 859623: 859623: _Node_iterator& 859623: operator++() noexcept 859623: { 859623: this->_M_incr(); 859623: return *this; 859623: } 859623: 859623: _Node_iterator 859623: operator++(int) noexcept 859623: { 859623: _Node_iterator __tmp(*this); 859623: this->_M_incr(); 859623: return __tmp; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: friend bool 859623: operator==(const _Node_iterator& __x, const _Node_iterator& __y) noexcept 859623: { 859623: const __base_type& __bx = __x; 859623: const __base_type& __by = __y; 859623: return __bx == __by; 859623: } 859623: 859623: friend bool 859623: operator!=(const _Node_iterator& __x, const _Node_iterator& __y) noexcept 859623: { return !(__x == __y); } 859623: 859623: }; 859623: 859623: 859623: template 859623: struct _Node_const_iterator 859623: : public _Node_iterator_base<_Value, __cache> 859623: { 859623: private: 859623: using __base_type = _Node_iterator_base<_Value, __cache>; 859623: using __node_type = typename __base_type::__node_type; 859623: 859623: 859623: using __iterator 859623: = _Node_iterator<_Value, __constant_iterators, __cache>; 859623: 859623: public: 859623: using value_type = _Value; 859623: using difference_type = ptrdiff_t; 859623: using iterator_category = forward_iterator_tag; 859623: 859623: using pointer = const value_type*; 859623: using reference = const value_type&; 859623: 859623: _Node_const_iterator() = default; 859623: 859623: explicit 859623: _Node_const_iterator(__node_type* __p) noexcept 859623: : __base_type(__p) { } 859623: 859623: _Node_const_iterator(const __iterator& __x) noexcept 859623: : __base_type(__x._M_cur) { } 859623: 859623: reference 859623: operator*() const noexcept 859623: { return this->_M_cur->_M_v(); } 859623: 859623: pointer 859623: operator->() const noexcept 859623: { return this->_M_cur->_M_valptr(); } 859623: 859623: _Node_const_iterator& 859623: operator++() noexcept 859623: { 859623: this->_M_incr(); 859623: return *this; 859623: } 859623: 859623: _Node_const_iterator 859623: operator++(int) noexcept 859623: { 859623: _Node_const_iterator __tmp(*this); 859623: this->_M_incr(); 859623: return __tmp; 859623: } 859623: # 531 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: friend bool 859623: operator==(const _Node_const_iterator& __x, 859623: const _Node_const_iterator& __y) noexcept 859623: { 859623: const __base_type& __bx = __x; 859623: const __base_type& __by = __y; 859623: return __bx == __by; 859623: } 859623: 859623: friend bool 859623: operator!=(const _Node_const_iterator& __x, 859623: const _Node_const_iterator& __y) noexcept 859623: { return !(__x == __y); } 859623: 859623: friend bool 859623: operator==(const _Node_const_iterator& __x, 859623: const __iterator& __y) noexcept 859623: { 859623: const __base_type& __bx = __x; 859623: const __base_type& __by = __y; 859623: return __bx == __by; 859623: } 859623: 859623: friend bool 859623: operator!=(const _Node_const_iterator& __x, 859623: const __iterator& __y) noexcept 859623: { return !(__x == __y); } 859623: 859623: friend bool 859623: operator==(const __iterator& __x, 859623: const _Node_const_iterator& __y) noexcept 859623: { 859623: const __base_type& __bx = __x; 859623: const __base_type& __by = __y; 859623: return __bx == __by; 859623: } 859623: 859623: friend bool 859623: operator!=(const __iterator& __x, 859623: const _Node_const_iterator& __y) noexcept 859623: { return !(__x == __y); } 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct _Mod_range_hashing 859623: { 859623: size_t 859623: operator()(size_t __num, size_t __den) const noexcept 859623: { return __num % __den; } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct _Default_ranged_hash { }; 859623: 859623: 859623: 859623: struct _Prime_rehash_policy 859623: { 859623: using __has_load_factor = true_type; 859623: 859623: _Prime_rehash_policy(float __z = 1.0) noexcept 859623: : _M_max_load_factor(__z), _M_next_resize(0) { } 859623: 859623: float 859623: max_load_factor() const noexcept 859623: { return _M_max_load_factor; } 859623: 859623: 859623: 859623: size_t 859623: _M_next_bkt(size_t __n) const; 859623: 859623: 859623: size_t 859623: _M_bkt_for_elements(size_t __n) const 859623: { return __builtin_ceil(__n / (double)_M_max_load_factor); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: std::pair 859623: _M_need_rehash(size_t __n_bkt, size_t __n_elt, 859623: size_t __n_ins) const; 859623: 859623: using _State = size_t; 859623: 859623: _State 859623: _M_state() const 859623: { return _M_next_resize; } 859623: 859623: void 859623: _M_reset() noexcept 859623: { _M_next_resize = 0; } 859623: 859623: void 859623: _M_reset(_State __state) 859623: { _M_next_resize = __state; } 859623: 859623: static const size_t _S_growth_factor = 2; 859623: 859623: float _M_max_load_factor; 859623: 859623: 859623: mutable size_t _M_next_resize; 859623: }; 859623: 859623: 859623: struct _Mask_range_hashing 859623: { 859623: size_t 859623: operator()(size_t __num, size_t __den) const noexcept 859623: { return __num & (__den - 1); } 859623: }; 859623: 859623: 859623: inline size_t 859623: __clp2(size_t __n) noexcept 859623: { 859623: using __gnu_cxx::__int_traits; 859623: 859623: if (__n < 2) 859623: return __n; 859623: const unsigned __lz = sizeof(size_t) > sizeof(long) 859623: ? __builtin_clzll(__n - 1ull) 859623: : __builtin_clzl(__n - 1ul); 859623: 859623: return (size_t(1) << (__int_traits::__digits - __lz - 1)) << 1; 859623: } 859623: 859623: 859623: 859623: struct _Power2_rehash_policy 859623: { 859623: using __has_load_factor = true_type; 859623: 859623: _Power2_rehash_policy(float __z = 1.0) noexcept 859623: : _M_max_load_factor(__z), _M_next_resize(0) { } 859623: 859623: float 859623: max_load_factor() const noexcept 859623: { return _M_max_load_factor; } 859623: 859623: 859623: 859623: size_t 859623: _M_next_bkt(size_t __n) noexcept 859623: { 859623: if (__n == 0) 859623: 859623: 859623: 859623: return 1; 859623: 859623: const auto __max_width = std::min(sizeof(size_t), 8); 859623: const auto __max_bkt = size_t(1) << (__max_width * 8 - 1); 859623: size_t __res = __clp2(__n); 859623: 859623: if (__res == 0) 859623: __res = __max_bkt; 859623: else if (__res == 1) 859623: 859623: 859623: 859623: __res = 2; 859623: 859623: if (__res == __max_bkt) 859623: 859623: 859623: 859623: _M_next_resize = size_t(-1); 859623: else 859623: _M_next_resize 859623: = __builtin_floor(__res * (double)_M_max_load_factor); 859623: 859623: return __res; 859623: } 859623: 859623: 859623: size_t 859623: _M_bkt_for_elements(size_t __n) const noexcept 859623: { return __builtin_ceil(__n / (double)_M_max_load_factor); } 859623: 859623: 859623: 859623: 859623: 859623: std::pair 859623: _M_need_rehash(size_t __n_bkt, size_t __n_elt, size_t __n_ins) noexcept 859623: { 859623: if (__n_elt + __n_ins > _M_next_resize) 859623: { 859623: 859623: 859623: 859623: double __min_bkts 859623: = std::max(__n_elt + __n_ins, _M_next_resize ? 0 : 11) 859623: / (double)_M_max_load_factor; 859623: if (__min_bkts >= __n_bkt) 859623: return { true, 859623: _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, 859623: __n_bkt * _S_growth_factor)) }; 859623: 859623: _M_next_resize 859623: = __builtin_floor(__n_bkt * (double)_M_max_load_factor); 859623: return { false, 0 }; 859623: } 859623: else 859623: return { false, 0 }; 859623: } 859623: 859623: using _State = size_t; 859623: 859623: _State 859623: _M_state() const noexcept 859623: { return _M_next_resize; } 859623: 859623: void 859623: _M_reset() noexcept 859623: { _M_next_resize = 0; } 859623: 859623: void 859623: _M_reset(_State __state) noexcept 859623: { _M_next_resize = __state; } 859623: 859623: static const size_t _S_growth_factor = 2; 859623: 859623: float _M_max_load_factor; 859623: size_t _M_next_resize; 859623: }; 859623: 859623: template 859623: struct _RehashStateGuard 859623: { 859623: _RehashPolicy* _M_guarded_obj; 859623: typename _RehashPolicy::_State _M_prev_state; 859623: 859623: _RehashStateGuard(_RehashPolicy& __policy) 859623: : _M_guarded_obj(std::__addressof(__policy)) 859623: , _M_prev_state(__policy._M_state()) 859623: { } 859623: _RehashStateGuard(const _RehashStateGuard&) = delete; 859623: 859623: ~_RehashStateGuard() 859623: { 859623: if (_M_guarded_obj) 859623: _M_guarded_obj->_M_reset(_M_prev_state); 859623: } 859623: }; 859623: # 809 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: template 859623: struct _Map_base { }; 859623: 859623: 859623: template 859623: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> 859623: { 859623: using mapped_type = _Val; 859623: }; 859623: 859623: 859623: template 859623: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true> 859623: { 859623: private: 859623: using __hashtable_base = _Hashtable_base<_Key, pair, 859623: _Select1st, _Equal, _Hash, 859623: _RangeHash, _Unused, 859623: _Traits>; 859623: 859623: using __hashtable = _Hashtable<_Key, pair, _Alloc, 859623: _Select1st, _Equal, _Hash, _RangeHash, 859623: _Unused, _RehashPolicy, _Traits>; 859623: 859623: using __hash_code = typename __hashtable_base::__hash_code; 859623: 859623: public: 859623: using key_type = typename __hashtable_base::key_type; 859623: using mapped_type = _Val; 859623: 859623: mapped_type& 859623: operator[](const key_type& __k); 859623: 859623: mapped_type& 859623: operator[](key_type&& __k); 859623: 859623: 859623: 859623: mapped_type& 859623: at(const key_type& __k) 859623: { 859623: auto __ite = static_cast<__hashtable*>(this)->find(__k); 859623: if (!__ite._M_cur) 859623: __throw_out_of_range(("unordered_map::at")); 859623: return __ite->second; 859623: } 859623: 859623: const mapped_type& 859623: at(const key_type& __k) const 859623: { 859623: auto __ite = static_cast(this)->find(__k); 859623: if (!__ite._M_cur) 859623: __throw_out_of_range(("unordered_map::at")); 859623: return __ite->second; 859623: } 859623: }; 859623: 859623: template 859623: auto 859623: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: 859623: operator[](const key_type& __k) 859623: -> mapped_type& 859623: { 859623: __hashtable* __h = static_cast<__hashtable*>(this); 859623: __hash_code __code = __h->_M_hash_code(__k); 859623: size_t __bkt = __h->_M_bucket_index(__code); 859623: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) 859623: return __node->_M_v().second; 859623: 859623: typename __hashtable::_Scoped_node __node { 859623: __h, 859623: std::piecewise_construct, 859623: std::tuple(__k), 859623: std::tuple<>() 859623: }; 859623: auto __pos 859623: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); 859623: __node._M_node = nullptr; 859623: return __pos->second; 859623: } 859623: 859623: template 859623: auto 859623: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: 859623: operator[](key_type&& __k) 859623: -> mapped_type& 859623: { 859623: __hashtable* __h = static_cast<__hashtable*>(this); 859623: __hash_code __code = __h->_M_hash_code(__k); 859623: size_t __bkt = __h->_M_bucket_index(__code); 859623: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) 859623: return __node->_M_v().second; 859623: 859623: typename __hashtable::_Scoped_node __node { 859623: __h, 859623: std::piecewise_construct, 859623: std::forward_as_tuple(std::move(__k)), 859623: std::tuple<>() 859623: }; 859623: auto __pos 859623: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); 859623: __node._M_node = nullptr; 859623: return __pos->second; 859623: } 859623: 859623: 859623: template 859623: struct _Map_base, 859623: _Alloc, _Select1st, _Equal, _Hash, 859623: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> 859623: : _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, _Hash, 859623: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> 859623: { }; 859623: 859623: template 859623: using __has_load_factor = typename _Policy::__has_load_factor; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template> 859623: struct _Rehash_base; 859623: 859623: 859623: template 859623: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, 859623: false_type > 859623: { 859623: }; 859623: 859623: 859623: template 859623: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, 859623: true_type > 859623: { 859623: private: 859623: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, 859623: _Equal, _Hash, _RangeHash, _Unused, 859623: _RehashPolicy, _Traits>; 859623: 859623: public: 859623: float 859623: max_load_factor() const noexcept 859623: { 859623: const __hashtable* __this = static_cast(this); 859623: return __this->__rehash_policy().max_load_factor(); 859623: } 859623: 859623: void 859623: max_load_factor(float __z) 859623: { 859623: __hashtable* __this = static_cast<__hashtable*>(this); 859623: __this->__rehash_policy(_RehashPolicy(__z)); 859623: } 859623: 859623: void 859623: reserve(size_t __n) 859623: { 859623: __hashtable* __this = static_cast<__hashtable*>(this); 859623: __this->rehash(__this->__rehash_policy()._M_bkt_for_elements(__n)); 859623: } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hashtable_ebo_helper 859623: { 859623: [[__no_unique_address__]] _Tp _M_obj; 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hashtable_ebo_helper<_Tp, false> 859623: { 859623: _Tp _M_obj; 859623: }; 859623: # 1034 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: template 859623: struct _Local_iterator_base; 859623: 859623: 859623: template 859623: struct _Hash_code_base 859623: { 859623: 859623: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, false>; 859623: public: 859623: using hasher = _Hash; 859623: 859623: hasher 859623: hash_function() const 859623: { return _M_hash._M_obj; } 859623: 859623: protected: 859623: [[__no_unique_address__]] _Hashtable_ebo_helper<_Hash> _M_hash{}; 859623: 859623: using __hash_code = size_t; 859623: 859623: 859623: 859623: _Hash_code_base() = default; 859623: 859623: _Hash_code_base(const _Hash& __hash) : _M_hash{__hash} { } 859623: 859623: __hash_code 859623: _M_hash_code(const _Key& __k) const 859623: { 859623: static_assert(__is_invocable{}, 859623: "hash function must be invocable with an argument of key type"); 859623: return _M_hash._M_obj(__k); 859623: } 859623: 859623: template 859623: __hash_code 859623: _M_hash_code_tr(const _Kt& __k) const 859623: { 859623: static_assert(__is_invocable{}, 859623: "hash function must be invocable with an argument of key type"); 859623: return _M_hash._M_obj(__k); 859623: } 859623: 859623: __hash_code 859623: _M_hash_code(const _Hash_node_value<_Value, false>& __n) const 859623: { return _M_hash_code(_ExtractKey{}(__n._M_v())); } 859623: 859623: __hash_code 859623: _M_hash_code(const _Hash_node_value<_Value, true>& __n) const 859623: { return __n._M_hash_code; } 859623: 859623: size_t 859623: _M_bucket_index(__hash_code __c, size_t __bkt_count) const 859623: { return _RangeHash{}(__c, __bkt_count); } 859623: 859623: size_t 859623: _M_bucket_index(const _Hash_node_value<_Value, false>& __n, 859623: size_t __bkt_count) const 859623: noexcept( noexcept(declval()(declval())) ) 859623: { 859623: return _RangeHash{}(_M_hash_code(_ExtractKey{}(__n._M_v())), 859623: __bkt_count); 859623: } 859623: 859623: size_t 859623: _M_bucket_index(const _Hash_node_value<_Value, true>& __n, 859623: size_t __bkt_count) const noexcept 859623: { return _RangeHash{}(__n._M_hash_code, __bkt_count); } 859623: }; 859623: 859623: 859623: template 859623: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, true> 859623: : public _Node_iterator_base<_Value, true> 859623: { 859623: protected: 859623: using __base_node_iter = _Node_iterator_base<_Value, true>; 859623: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, true>; 859623: 859623: _Local_iterator_base() = default; 859623: 859623: _Local_iterator_base(const __hash_code_base&, 859623: _Hash_node<_Value, true>* __p, 859623: size_t __bkt, size_t __bkt_count) 859623: : __base_node_iter(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) 859623: { } 859623: 859623: void 859623: _M_incr() 859623: { 859623: __base_node_iter::_M_incr(); 859623: if (this->_M_cur) 859623: { 859623: size_t __bkt 859623: = _RangeHash{}(this->_M_cur->_M_hash_code, _M_bucket_count); 859623: if (__bkt != _M_bucket) 859623: this->_M_cur = nullptr; 859623: } 859623: } 859623: 859623: size_t _M_bucket = 0; 859623: size_t _M_bucket_count = 0; 859623: 859623: public: 859623: size_t 859623: _M_get_bucket() const { return _M_bucket; } 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hash_obj_storage 859623: { 859623: union _Uninit_storage 859623: { 859623: _Uninit_storage() noexcept { } 859623: ~_Uninit_storage() { } 859623: 859623: [[__no_unique_address__]] _Hash _M_h; 859623: }; 859623: 859623: [[__no_unique_address__]] _Uninit_storage _M_u; 859623: }; 859623: 859623: 859623: template 859623: struct _Local_iterator_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, false> 859623: : _Hash_obj_storage<_Hash>, _Node_iterator_base<_Value, false> 859623: { 859623: protected: 859623: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, false>; 859623: using __hash_obj_storage = _Hash_obj_storage<_Hash>; 859623: using __node_iter_base = _Node_iterator_base<_Value, false>; 859623: 859623: _Local_iterator_base() = default; 859623: 859623: _Local_iterator_base(const __hash_code_base& __base, 859623: _Hash_node<_Value, false>* __p, 859623: size_t __bkt, size_t __bkt_count) 859623: : __node_iter_base(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) 859623: { _M_init(__base._M_hash._M_obj); } 859623: 859623: ~_Local_iterator_base() 859623: { 859623: if (_M_bucket_count != size_t(-1)) 859623: _M_destroy(); 859623: } 859623: 859623: _Local_iterator_base(const _Local_iterator_base& __iter) 859623: : __node_iter_base(__iter._M_cur), _M_bucket(__iter._M_bucket) 859623: , _M_bucket_count(__iter._M_bucket_count) 859623: { 859623: if (_M_bucket_count != size_t(-1)) 859623: _M_init(__iter._M_h()); 859623: } 859623: 859623: _Local_iterator_base& 859623: operator=(const _Local_iterator_base& __iter) 859623: { 859623: if (_M_bucket_count != size_t(-1)) 859623: _M_destroy(); 859623: this->_M_cur = __iter._M_cur; 859623: _M_bucket = __iter._M_bucket; 859623: _M_bucket_count = __iter._M_bucket_count; 859623: if (_M_bucket_count != size_t(-1)) 859623: _M_init(__iter._M_h()); 859623: return *this; 859623: } 859623: 859623: void 859623: _M_incr() 859623: { 859623: __node_iter_base::_M_incr(); 859623: if (this->_M_cur) 859623: { 859623: const auto __code = _M_h()(_ExtractKey{}(this->_M_cur->_M_v())); 859623: size_t __bkt = _RangeHash{}(__code, _M_bucket_count); 859623: if (__bkt != _M_bucket) 859623: this->_M_cur = nullptr; 859623: } 859623: } 859623: 859623: size_t _M_bucket = 0; 859623: size_t _M_bucket_count = -1; 859623: 859623: void 859623: _M_init(const _Hash& __h) 859623: { std::_Construct(std::__addressof(__hash_obj_storage::_M_u._M_h), __h); } 859623: 859623: void 859623: _M_destroy() { __hash_obj_storage::_M_u._M_h.~_Hash(); } 859623: 859623: const _Hash& 859623: _M_h() const { return __hash_obj_storage::_M_u._M_h; } 859623: 859623: public: 859623: size_t 859623: _M_get_bucket() const { return _M_bucket; } 859623: }; 859623: 859623: 859623: template 859623: struct _Local_iterator 859623: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, __cache> 859623: { 859623: private: 859623: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, __cache>; 859623: using __hash_code_base = typename __base_type::__hash_code_base; 859623: 859623: public: 859623: using value_type = _Value; 859623: using pointer = __conditional_t<__constant_iterators, 859623: const value_type*, value_type*>; 859623: using reference = __conditional_t<__constant_iterators, 859623: const value_type&, value_type&>; 859623: using difference_type = ptrdiff_t; 859623: using iterator_category = forward_iterator_tag; 859623: 859623: _Local_iterator() = default; 859623: 859623: _Local_iterator(const __hash_code_base& __base, 859623: _Hash_node<_Value, __cache>* __n, 859623: size_t __bkt, size_t __bkt_count) 859623: : __base_type(__base, __n, __bkt, __bkt_count) 859623: { } 859623: 859623: reference 859623: operator*() const 859623: { return this->_M_cur->_M_v(); } 859623: 859623: pointer 859623: operator->() const 859623: { return this->_M_cur->_M_valptr(); } 859623: 859623: _Local_iterator& 859623: operator++() 859623: { 859623: this->_M_incr(); 859623: return *this; 859623: } 859623: 859623: _Local_iterator 859623: operator++(int) 859623: { 859623: _Local_iterator __tmp(*this); 859623: this->_M_incr(); 859623: return __tmp; 859623: } 859623: }; 859623: 859623: 859623: template 859623: struct _Local_const_iterator 859623: : public _Local_iterator_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, __cache> 859623: { 859623: private: 859623: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, __cache>; 859623: using __hash_code_base = typename __base_type::__hash_code_base; 859623: 859623: public: 859623: using value_type = _Value; 859623: using pointer = const value_type*; 859623: using reference = const value_type&; 859623: using difference_type = ptrdiff_t; 859623: using iterator_category = forward_iterator_tag; 859623: 859623: _Local_const_iterator() = default; 859623: 859623: _Local_const_iterator(const __hash_code_base& __base, 859623: _Hash_node<_Value, __cache>* __n, 859623: size_t __bkt, size_t __bkt_count) 859623: : __base_type(__base, __n, __bkt, __bkt_count) 859623: { } 859623: 859623: _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, 859623: __constant_iterators, 859623: __cache>& __x) 859623: : __base_type(__x) 859623: { } 859623: 859623: reference 859623: operator*() const 859623: { return this->_M_cur->_M_v(); } 859623: 859623: pointer 859623: operator->() const 859623: { return this->_M_cur->_M_valptr(); } 859623: 859623: _Local_const_iterator& 859623: operator++() 859623: { 859623: this->_M_incr(); 859623: return *this; 859623: } 859623: 859623: _Local_const_iterator 859623: operator++(int) 859623: { 859623: _Local_const_iterator __tmp(*this); 859623: this->_M_incr(); 859623: return __tmp; 859623: } 859623: }; 859623: # 1369 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable_policy.h" 3 859623: template 859623: struct _Hashtable_base 859623: : public _Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHash, 859623: _Unused, _Traits::__hash_cached::value> 859623: { 859623: public: 859623: using key_type = _Key; 859623: using value_type = _Value; 859623: using key_equal = _Equal; 859623: using size_type = size_t; 859623: using difference_type = ptrdiff_t; 859623: 859623: using __traits_type = _Traits; 859623: using __hash_cached = typename __traits_type::__hash_cached; 859623: 859623: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, 859623: _Hash, _RangeHash, _Unused, 859623: __hash_cached::value>; 859623: 859623: using __hash_code = typename __hash_code_base::__hash_code; 859623: 859623: protected: 859623: [[__no_unique_address__]] _Hashtable_ebo_helper<_Equal> _M_equal{}; 859623: 859623: _Hashtable_base() = default; 859623: 859623: _Hashtable_base(const _Hash& __hash, const _Equal& __eq) 859623: : __hash_code_base(__hash), _M_equal{__eq} 859623: { } 859623: 859623: bool 859623: _M_key_equals(const _Key& __k, 859623: const _Hash_node_value<_Value, 859623: __hash_cached::value>& __n) const 859623: { 859623: static_assert(__is_invocable{}, 859623: "key equality predicate must be invocable with two arguments of " 859623: "key type"); 859623: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); 859623: } 859623: 859623: template 859623: bool 859623: _M_key_equals_tr(const _Kt& __k, 859623: const _Hash_node_value<_Value, 859623: __hash_cached::value>& __n) const 859623: { 859623: static_assert( 859623: __is_invocable{}, 859623: "key equality predicate must be invocable with the argument type " 859623: "and the key type"); 859623: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: bool 859623: _M_equals(const _Key& __k, __hash_code __c, 859623: const _Hash_node_value<_Value, __hash_cached::value>& __n) const 859623: { 859623: if constexpr (__hash_cached::value) 859623: if (__c != __n._M_hash_code) 859623: return false; 859623: 859623: return _M_key_equals(__k, __n); 859623: } 859623: 859623: template 859623: bool 859623: _M_equals_tr(const _Kt& __k, __hash_code __c, 859623: const _Hash_node_value<_Value, 859623: __hash_cached::value>& __n) const 859623: { 859623: if constexpr (__hash_cached::value) 859623: if (__c != __n._M_hash_code) 859623: return false; 859623: 859623: return _M_key_equals_tr(__k, __n); 859623: } 859623: 859623: bool 859623: _M_node_equals( 859623: const _Hash_node_value<_Value, __hash_cached::value>& __lhn, 859623: const _Hash_node_value<_Value, __hash_cached::value>& __rhn) const 859623: { 859623: if constexpr (__hash_cached::value) 859623: if (__lhn._M_hash_code != __rhn._M_hash_code) 859623: return false; 859623: 859623: return _M_key_equals(_ExtractKey{}(__lhn._M_v()), __rhn); 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: const _Equal& 859623: _M_eq() const noexcept { return _M_equal._M_obj; } 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct _Hashtable_alloc 859623: { 859623: private: 859623: [[__no_unique_address__]] _Hashtable_ebo_helper<_NodeAlloc> _M_alloc{}; 859623: 859623: template 859623: struct __get_value_type; 859623: template 859623: struct __get_value_type<_Hash_node<_Val, _Cache_hash_code>> 859623: { using type = _Val; }; 859623: 859623: public: 859623: using __node_type = typename _NodeAlloc::value_type; 859623: using __node_alloc_type = _NodeAlloc; 859623: 859623: using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; 859623: 859623: using __value_alloc_traits = typename __node_alloc_traits::template 859623: rebind_traits::type>; 859623: 859623: using __node_ptr = __node_type*; 859623: using __node_base = _Hash_node_base; 859623: using __node_base_ptr = __node_base*; 859623: using __buckets_alloc_type = 859623: __alloc_rebind<__node_alloc_type, __node_base_ptr>; 859623: using __buckets_alloc_traits = std::allocator_traits<__buckets_alloc_type>; 859623: using __buckets_ptr = __node_base_ptr*; 859623: 859623: _Hashtable_alloc() = default; 859623: _Hashtable_alloc(const _Hashtable_alloc&) = default; 859623: _Hashtable_alloc(_Hashtable_alloc&&) = default; 859623: 859623: template 859623: _Hashtable_alloc(_Alloc&& __a) 859623: : _M_alloc{std::forward<_Alloc>(__a)} 859623: { } 859623: 859623: __node_alloc_type& 859623: _M_node_allocator() 859623: { return _M_alloc._M_obj; } 859623: 859623: const __node_alloc_type& 859623: _M_node_allocator() const 859623: { return _M_alloc._M_obj; } 859623: 859623: 859623: template 859623: __node_ptr 859623: _M_allocate_node(_Args&&... __args); 859623: 859623: 859623: void 859623: _M_deallocate_node(__node_ptr __n); 859623: 859623: 859623: void 859623: _M_deallocate_node_ptr(__node_ptr __n); 859623: 859623: 859623: 859623: void 859623: _M_deallocate_nodes(__node_ptr __n); 859623: 859623: __buckets_ptr 859623: _M_allocate_buckets(size_t __bkt_count); 859623: 859623: void 859623: _M_deallocate_buckets(__buckets_ptr, size_t __bkt_count); 859623: }; 859623: 859623: 859623: 859623: template 859623: template 859623: auto 859623: _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) 859623: -> __node_ptr 859623: { 859623: auto& __alloc = _M_node_allocator(); 859623: auto __nptr = __node_alloc_traits::allocate(__alloc, 1); 859623: __node_ptr __n = std::__to_address(__nptr); 859623: if (true) 859623: { 859623: ::new ((void*)__n) __node_type; 859623: __node_alloc_traits::construct(__alloc, __n->_M_valptr(), 859623: std::forward<_Args>(__args)...); 859623: return __n; 859623: } 859623: if (false) 859623: { 859623: __n->~__node_type(); 859623: __node_alloc_traits::deallocate(__alloc, __nptr, 1); 859623: ; 859623: } 859623: } 859623: 859623: template 859623: void 859623: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_ptr __n) 859623: { 859623: __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr()); 859623: _M_deallocate_node_ptr(__n); 859623: } 859623: 859623: template 859623: void 859623: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node_ptr(__node_ptr __n) 859623: { 859623: using _Ptr = typename __node_alloc_traits::pointer; 859623: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); 859623: __n->~__node_type(); 859623: __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); 859623: } 859623: 859623: template 859623: void 859623: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_ptr __n) 859623: { 859623: while (__n) 859623: { 859623: __node_ptr __tmp = __n; 859623: __n = __n->_M_next(); 859623: _M_deallocate_node(__tmp); 859623: } 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(size_t __bkt_count) 859623: -> __buckets_ptr 859623: { 859623: __buckets_alloc_type __alloc(_M_node_allocator()); 859623: 859623: auto __ptr = __buckets_alloc_traits::allocate(__alloc, __bkt_count); 859623: __buckets_ptr __p = std::__to_address(__ptr); 859623: __builtin_memset(__p, 0, __bkt_count * sizeof(__node_base_ptr)); 859623: return __p; 859623: } 859623: 859623: template 859623: void 859623: _Hashtable_alloc<_NodeAlloc>:: 859623: _M_deallocate_buckets(__buckets_ptr __bkts, size_t __bkt_count) 859623: { 859623: using _Ptr = typename __buckets_alloc_traits::pointer; 859623: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); 859623: __buckets_alloc_type __alloc(_M_node_allocator()); 859623: __buckets_alloc_traits::deallocate(__alloc, __ptr, __bkt_count); 859623: } 859623: 859623: 859623: } 859623: 859623: 859623: } 859623: # 38 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/enable_special_members.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/enable_special_members.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: struct _Enable_default_constructor_tag 859623: { 859623: explicit constexpr _Enable_default_constructor_tag() = default; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Enable_default_constructor 859623: { 859623: constexpr _Enable_default_constructor() noexcept = default; 859623: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 859623: noexcept = default; 859623: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 859623: noexcept = default; 859623: _Enable_default_constructor& 859623: operator=(_Enable_default_constructor const&) noexcept = default; 859623: _Enable_default_constructor& 859623: operator=(_Enable_default_constructor&&) noexcept = default; 859623: 859623: 859623: constexpr explicit 859623: _Enable_default_constructor(_Enable_default_constructor_tag) { } 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Enable_destructor { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct _Enable_copy_move { }; 859623: # 98 "/usr/arm-linux-gnueabi/include/c++/15/bits/enable_special_members.h" 3 859623: template 859623: struct _Enable_special_members 859623: : private _Enable_default_constructor<_Default, _Tag>, 859623: private _Enable_destructor<_Destructor, _Tag>, 859623: private _Enable_copy_move<_Copy, _CopyAssignment, 859623: _Move, _MoveAssignment, 859623: _Tag> 859623: { }; 859623: 859623: 859623: 859623: template 859623: struct _Enable_default_constructor 859623: { 859623: constexpr _Enable_default_constructor() noexcept = delete; 859623: constexpr _Enable_default_constructor(_Enable_default_constructor const&) 859623: noexcept = default; 859623: constexpr _Enable_default_constructor(_Enable_default_constructor&&) 859623: noexcept = default; 859623: _Enable_default_constructor& 859623: operator=(_Enable_default_constructor const&) noexcept = default; 859623: _Enable_default_constructor& 859623: operator=(_Enable_default_constructor&&) noexcept = default; 859623: 859623: 859623: constexpr explicit 859623: _Enable_default_constructor(_Enable_default_constructor_tag) { } 859623: }; 859623: 859623: template 859623: struct _Enable_destructor 859623: { ~_Enable_destructor() noexcept = delete; }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = default; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = default; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = default; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = default; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = default; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = default; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = default; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = default; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: template 859623: struct _Enable_copy_move 859623: { 859623: constexpr _Enable_copy_move() noexcept = default; 859623: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; 859623: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move const&) noexcept = delete; 859623: _Enable_copy_move& 859623: operator=(_Enable_copy_move&&) noexcept = delete; 859623: }; 859623: 859623: 859623: 859623: } 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++11-extensions" 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: template 859623: using __cache_default 859623: = __not_<__and_< 859623: __is_fast_hash<_Hash>, 859623: 859623: __is_nothrow_invocable>>; 859623: 859623: 859623: 859623: 859623: template 859623: using _Hashtable_enable_default_ctor 859623: = _Enable_default_constructor<__and_, 859623: is_default_constructible<_Hash>, 859623: is_default_constructible<_Allocator>>{}, 859623: __detail::_Hash_node_base>; 859623: # 185 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: template 859623: class _Hashtable 859623: : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _Traits>, 859623: public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, 859623: _RehashPolicy, _Traits>, 859623: public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, 859623: _RehashPolicy, _Traits>, 859623: private __detail::_Hashtable_alloc< 859623: __alloc_rebind<_Alloc, 859623: __detail::_Hash_node<_Value, 859623: _Traits::__hash_cached::value>>>, 859623: private _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc> 859623: { 859623: static_assert(is_same::type, _Value>::value, 859623: "unordered container must have a non-const, non-volatile value_type"); 859623: 859623: static_assert(is_same{}, 859623: "unordered container must have the same value_type as its allocator"); 859623: 859623: static_assert(is_copy_constructible<_Hash>::value, 859623: "hash function must be copy constructible"); 859623: 859623: using __traits_type = _Traits; 859623: using __hash_cached = typename __traits_type::__hash_cached; 859623: using __constant_iterators = typename __traits_type::__constant_iterators; 859623: using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; 859623: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; 859623: 859623: using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; 859623: 859623: using __node_value_type = 859623: __detail::_Hash_node_value<_Value, __hash_cached::value>; 859623: using __node_ptr = typename __hashtable_alloc::__node_ptr; 859623: using __value_alloc_traits = 859623: typename __hashtable_alloc::__value_alloc_traits; 859623: using __node_alloc_traits = 859623: typename __hashtable_alloc::__node_alloc_traits; 859623: using __node_base = typename __hashtable_alloc::__node_base; 859623: using __node_base_ptr = typename __hashtable_alloc::__node_base_ptr; 859623: using __buckets_ptr = typename __hashtable_alloc::__buckets_ptr; 859623: 859623: using __enable_default_ctor 859623: = _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc>; 859623: using __rehash_guard_t 859623: = __detail::_RehashStateGuard<_RehashPolicy>; 859623: 859623: public: 859623: typedef _Key key_type; 859623: typedef _Value value_type; 859623: typedef _Alloc allocator_type; 859623: typedef _Equal key_equal; 859623: 859623: 859623: 859623: typedef typename __value_alloc_traits::pointer pointer; 859623: typedef typename __value_alloc_traits::const_pointer const_pointer; 859623: typedef value_type& reference; 859623: typedef const value_type& const_reference; 859623: 859623: using iterator 859623: = __detail::_Node_iterator<_Value, __constant_iterators::value, 859623: __hash_cached::value>; 859623: 859623: using const_iterator 859623: = __detail::_Node_const_iterator<_Value, __constant_iterators::value, 859623: __hash_cached::value>; 859623: 859623: using local_iterator = __detail::_Local_iterator; 859623: 859623: using const_local_iterator = __detail::_Local_const_iterator< 859623: key_type, _Value, 859623: _ExtractKey, _Hash, _RangeHash, _Unused, 859623: __constant_iterators::value, __hash_cached::value>; 859623: 859623: private: 859623: using __rehash_type = _RehashPolicy; 859623: 859623: using __unique_keys = typename __traits_type::__unique_keys; 859623: 859623: using __hashtable_base = __detail:: 859623: _Hashtable_base<_Key, _Value, _ExtractKey, 859623: _Equal, _Hash, _RangeHash, _Unused, _Traits>; 859623: 859623: using __hash_code_base = typename __hashtable_base::__hash_code_base; 859623: using __hash_code = typename __hashtable_base::__hash_code; 859623: using __ireturn_type = __conditional_t<__unique_keys::value, 859623: std::pair, 859623: iterator>; 859623: 859623: using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, 859623: _Equal, _Hash, _RangeHash, _Unused, 859623: _RehashPolicy, _Traits>; 859623: 859623: using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, 859623: _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, 859623: _RehashPolicy, _Traits>; 859623: 859623: using __node_builder_t = __detail::_NodeBuilder<_ExtractKey>; 859623: 859623: 859623: struct _Scoped_node 859623: { 859623: 859623: _Scoped_node(__node_ptr __n, __hashtable_alloc* __h) 859623: : _M_h(__h), _M_node(__n) { } 859623: 859623: 859623: template 859623: _Scoped_node(__hashtable_alloc* __h, _Args&&... __args) 859623: : _M_h(__h), 859623: _M_node(__h->_M_allocate_node(std::forward<_Args>(__args)...)) 859623: { } 859623: 859623: 859623: ~_Scoped_node() { if (_M_node) _M_h->_M_deallocate_node(_M_node); }; 859623: 859623: _Scoped_node(const _Scoped_node&) = delete; 859623: _Scoped_node& operator=(const _Scoped_node&) = delete; 859623: 859623: __hashtable_alloc* _M_h; 859623: __node_ptr _M_node; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: struct __hash_code_base_access : __hash_code_base 859623: { using __hash_code_base::_M_bucket_index; }; 859623: 859623: 859623: static_assert(is_nothrow_default_constructible<_RangeHash>::value, 859623: "Functor used to map hash code to bucket index" 859623: " must be nothrow default constructible"); 859623: static_assert(noexcept( 859623: std::declval()((std::size_t)0, (std::size_t)0)), 859623: "Functor used to map hash code to bucket index must be" 859623: " noexcept"); 859623: 859623: 859623: static_assert(is_nothrow_default_constructible<_ExtractKey>::value, 859623: "_ExtractKey must be nothrow default constructible"); 859623: static_assert(noexcept( 859623: std::declval()(std::declval<_Value>())), 859623: "_ExtractKey functor must be noexcept invocable"); 859623: 859623: template 859623: friend struct __detail::_Map_base; 859623: 859623: public: 859623: using size_type = typename __hashtable_base::size_type; 859623: using difference_type = typename __hashtable_base::difference_type; 859623: 859623: 859623: 859623: 859623: 859623: 859623: private: 859623: __buckets_ptr _M_buckets = &_M_single_bucket; 859623: size_type _M_bucket_count = 1; 859623: __node_base _M_before_begin; 859623: size_type _M_element_count = 0; 859623: _RehashPolicy _M_rehash_policy; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: __node_base_ptr _M_single_bucket = nullptr; 859623: 859623: void 859623: _M_update_bbegin() 859623: { 859623: if (auto __begin = _M_begin()) 859623: _M_buckets[_M_bucket_index(*__begin)] = &_M_before_begin; 859623: } 859623: 859623: void 859623: _M_update_bbegin(__node_ptr __n) 859623: { 859623: _M_before_begin._M_nxt = __n; 859623: _M_update_bbegin(); 859623: } 859623: 859623: bool 859623: _M_uses_single_bucket(__buckets_ptr __bkts) const 859623: { return __builtin_expect(__bkts == &_M_single_bucket, false); } 859623: 859623: bool 859623: _M_uses_single_bucket() const 859623: { return _M_uses_single_bucket(_M_buckets); } 859623: 859623: static constexpr size_t 859623: __small_size_threshold() noexcept 859623: { 859623: return 859623: __detail::_Hashtable_hash_traits<_Hash>::__small_size_threshold(); 859623: } 859623: 859623: __hashtable_alloc& 859623: _M_base_alloc() { return *this; } 859623: 859623: __buckets_ptr 859623: _M_allocate_buckets(size_type __bkt_count) 859623: { 859623: if (__builtin_expect(__bkt_count == 1, false)) 859623: { 859623: _M_single_bucket = nullptr; 859623: return &_M_single_bucket; 859623: } 859623: 859623: return __hashtable_alloc::_M_allocate_buckets(__bkt_count); 859623: } 859623: 859623: void 859623: _M_deallocate_buckets(__buckets_ptr __bkts, size_type __bkt_count) 859623: { 859623: if (_M_uses_single_bucket(__bkts)) 859623: return; 859623: 859623: __hashtable_alloc::_M_deallocate_buckets(__bkts, __bkt_count); 859623: } 859623: 859623: void 859623: _M_deallocate_buckets() 859623: { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } 859623: 859623: 859623: 859623: __node_ptr 859623: _M_bucket_begin(size_type __bkt) const 859623: { 859623: __node_base_ptr __n = _M_buckets[__bkt]; 859623: return __n ? static_cast<__node_ptr>(__n->_M_nxt) : nullptr; 859623: } 859623: 859623: __node_ptr 859623: _M_begin() const 859623: { return static_cast<__node_ptr>(_M_before_begin._M_nxt); } 859623: 859623: 859623: 859623: template 859623: void 859623: _M_assign_elements(_Ht&&); 859623: 859623: template 859623: void 859623: _M_assign(_Ht&& __ht) 859623: { 859623: __detail::_AllocNode<__node_alloc_type> __alloc_node_gen(*this); 859623: _M_assign(std::forward<_Ht>(__ht), __alloc_node_gen); 859623: } 859623: 859623: template 859623: void 859623: _M_assign(_Ht&&, _NodeGenerator&); 859623: 859623: void 859623: _M_move_assign(_Hashtable&&, true_type); 859623: 859623: void 859623: _M_move_assign(_Hashtable&&, false_type); 859623: 859623: void 859623: _M_reset() noexcept; 859623: 859623: _Hashtable(const _Hash& __h, const _Equal& __eq, 859623: const allocator_type& __a) 859623: : __hashtable_base(__h, __eq), 859623: __hashtable_alloc(__node_alloc_type(__a)), 859623: __enable_default_ctor(_Enable_default_constructor_tag{}) 859623: { } 859623: 859623: template 859623: static constexpr bool 859623: _S_nothrow_move() 859623: { 859623: 859623: return __and_<__bool_constant<_No_realloc>, 859623: is_nothrow_copy_constructible<_Hash>, 859623: is_nothrow_copy_constructible<_Equal>>::value; 859623: 859623: 859623: 859623: 859623: 859623: 859623: } 859623: 859623: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 859623: true_type ) 859623: noexcept(_S_nothrow_move()); 859623: 859623: _Hashtable(_Hashtable&&, __node_alloc_type&&, 859623: false_type ); 859623: 859623: template 859623: _Hashtable(_InputIterator __first, _InputIterator __last, 859623: size_type __bkt_count_hint, 859623: const _Hash&, const _Equal&, const allocator_type&, 859623: true_type __uks); 859623: 859623: template 859623: _Hashtable(_InputIterator __first, _InputIterator __last, 859623: size_type __bkt_count_hint, 859623: const _Hash&, const _Equal&, const allocator_type&, 859623: false_type __uks); 859623: 859623: public: 859623: 859623: _Hashtable() = default; 859623: 859623: _Hashtable(const _Hashtable&); 859623: 859623: _Hashtable(const _Hashtable&, const allocator_type&); 859623: 859623: explicit 859623: _Hashtable(size_type __bkt_count_hint, 859623: const _Hash& __hf = _Hash(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()); 859623: 859623: 859623: _Hashtable(_Hashtable&& __ht) 859623: noexcept(_S_nothrow_move()) 859623: : _Hashtable(std::move(__ht), std::move(__ht._M_node_allocator()), 859623: true_type{}) 859623: { } 859623: 859623: _Hashtable(_Hashtable&& __ht, const allocator_type& __a) 859623: noexcept(_S_nothrow_move<__node_alloc_traits::_S_always_equal()>()) 859623: : _Hashtable(std::move(__ht), __node_alloc_type(__a), 859623: typename __node_alloc_traits::is_always_equal{}) 859623: { } 859623: 859623: explicit 859623: _Hashtable(const allocator_type& __a) 859623: : __hashtable_alloc(__node_alloc_type(__a)), 859623: __enable_default_ctor(_Enable_default_constructor_tag{}) 859623: { } 859623: 859623: template 859623: _Hashtable(_InputIterator __f, _InputIterator __l, 859623: size_type __bkt_count_hint = 0, 859623: const _Hash& __hf = _Hash(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _Hashtable(__f, __l, __bkt_count_hint, __hf, __eql, __a, 859623: __unique_keys{}) 859623: { } 859623: 859623: _Hashtable(initializer_list __l, 859623: size_type __bkt_count_hint = 0, 859623: const _Hash& __hf = _Hash(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _Hashtable(__l.begin(), __l.end(), __bkt_count_hint, 859623: __hf, __eql, __a, __unique_keys{}) 859623: { } 859623: 859623: _Hashtable& 859623: operator=(const _Hashtable& __ht); 859623: 859623: _Hashtable& 859623: operator=(_Hashtable&& __ht) 859623: noexcept(__node_alloc_traits::_S_nothrow_move() 859623: && is_nothrow_move_assignable<_Hash>::value 859623: && is_nothrow_move_assignable<_Equal>::value) 859623: { 859623: constexpr bool __move_storage = 859623: __node_alloc_traits::_S_propagate_on_move_assign() 859623: || __node_alloc_traits::_S_always_equal(); 859623: _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); 859623: return *this; 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: _Hashtable& 859623: operator=(initializer_list __l) 859623: { 859623: using __reuse_or_alloc_node_gen_t = 859623: __detail::_ReuseOrAllocNode<__node_alloc_type>; 859623: 859623: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); 859623: _M_before_begin._M_nxt = nullptr; 859623: clear(); 859623: 859623: 859623: auto __l_bkt_count = _M_rehash_policy._M_bkt_for_elements(__l.size()); 859623: 859623: 859623: 859623: if (_M_bucket_count < __l_bkt_count) 859623: rehash(__l_bkt_count); 859623: 859623: __hash_code __code; 859623: size_type __bkt; 859623: for (auto& __e : __l) 859623: { 859623: const key_type& __k = _ExtractKey{}(__e); 859623: 859623: if constexpr (__unique_keys::value) 859623: { 859623: if (auto __loc = _M_locate(__k)) 859623: continue; 859623: else 859623: { 859623: __code = __loc._M_hash_code; 859623: __bkt = __loc._M_bucket_index; 859623: } 859623: } 859623: else 859623: { 859623: __code = this->_M_hash_code(__k); 859623: __bkt = _M_bucket_index(__code); 859623: } 859623: 859623: _M_insert_unique_node(__bkt, __code, __roan(__e)); 859623: } 859623: 859623: return *this; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: ~_Hashtable() noexcept; 859623: 859623: void 859623: swap(_Hashtable&) 859623: noexcept(__and_<__is_nothrow_swappable<_Hash>, 859623: __is_nothrow_swappable<_Equal>>::value); 859623: 859623: 859623: iterator 859623: begin() noexcept 859623: { return iterator(_M_begin()); } 859623: 859623: const_iterator 859623: begin() const noexcept 859623: { return const_iterator(_M_begin()); } 859623: 859623: iterator 859623: end() noexcept 859623: { return iterator(nullptr); } 859623: 859623: const_iterator 859623: end() const noexcept 859623: { return const_iterator(nullptr); } 859623: 859623: const_iterator 859623: cbegin() const noexcept 859623: { return const_iterator(_M_begin()); } 859623: 859623: const_iterator 859623: cend() const noexcept 859623: { return const_iterator(nullptr); } 859623: 859623: size_type 859623: size() const noexcept 859623: { return _M_element_count; } 859623: 859623: [[__nodiscard__]] bool 859623: empty() const noexcept 859623: { return size() == 0; } 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return allocator_type(this->_M_node_allocator()); } 859623: 859623: size_type 859623: max_size() const noexcept 859623: { return __node_alloc_traits::max_size(this->_M_node_allocator()); } 859623: 859623: 859623: key_equal 859623: key_eq() const 859623: { return this->_M_eq(); } 859623: 859623: 859623: 859623: 859623: size_type 859623: bucket_count() const noexcept 859623: { return _M_bucket_count; } 859623: 859623: size_type 859623: max_bucket_count() const noexcept 859623: { return max_size(); } 859623: 859623: size_type 859623: bucket_size(size_type __bkt) const 859623: { return std::distance(begin(__bkt), end(__bkt)); } 859623: 859623: size_type 859623: bucket(const key_type& __k) const 859623: { return _M_bucket_index(this->_M_hash_code(__k)); } 859623: 859623: local_iterator 859623: begin(size_type __bkt) 859623: { 859623: return local_iterator(*this, _M_bucket_begin(__bkt), 859623: __bkt, _M_bucket_count); 859623: } 859623: 859623: local_iterator 859623: end(size_type __bkt) 859623: { return local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 859623: 859623: const_local_iterator 859623: begin(size_type __bkt) const 859623: { 859623: return const_local_iterator(*this, _M_bucket_begin(__bkt), 859623: __bkt, _M_bucket_count); 859623: } 859623: 859623: const_local_iterator 859623: end(size_type __bkt) const 859623: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 859623: 859623: 859623: const_local_iterator 859623: cbegin(size_type __bkt) const 859623: { 859623: return const_local_iterator(*this, _M_bucket_begin(__bkt), 859623: __bkt, _M_bucket_count); 859623: } 859623: 859623: const_local_iterator 859623: cend(size_type __bkt) const 859623: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } 859623: 859623: float 859623: load_factor() const noexcept 859623: { 859623: return static_cast(size()) / static_cast(bucket_count()); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const _RehashPolicy& 859623: __rehash_policy() const 859623: { return _M_rehash_policy; } 859623: 859623: void 859623: __rehash_policy(const _RehashPolicy& __pol) 859623: { _M_rehash_policy = __pol; } 859623: 859623: 859623: iterator 859623: find(const key_type& __k); 859623: 859623: const_iterator 859623: find(const key_type& __k) const; 859623: 859623: size_type 859623: count(const key_type& __k) const; 859623: 859623: std::pair 859623: equal_range(const key_type& __k); 859623: 859623: std::pair 859623: equal_range(const key_type& __k) const; 859623: # 801 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: void _M_rehash_insert(size_type __n); 859623: 859623: private: 859623: 859623: size_type 859623: _M_bucket_index(const __node_value_type& __n) const noexcept 859623: { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } 859623: 859623: size_type 859623: _M_bucket_index(__hash_code __c) const 859623: { return __hash_code_base::_M_bucket_index(__c, _M_bucket_count); } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: 859623: 859623: __hash_code 859623: _M_hash_code_ext(const __node_value_type& __from) const 859623: { 859623: if constexpr (__and_<__hash_cached, is_empty<_Hash>>::value) 859623: return __from._M_hash_code; 859623: else 859623: return this->_M_hash_code(_ExtractKey{}(__from._M_v())); 859623: } 859623: 859623: 859623: 859623: size_type 859623: _M_bucket_index_ext(const __node_value_type& __from) const 859623: { return _RangeHash{}(_M_hash_code_ext(__from), _M_bucket_count); } 859623: 859623: void 859623: _M_copy_code(__node_value_type& __to, 859623: const __node_value_type& __from) const 859623: { 859623: if constexpr (__hash_cached::value) 859623: __to._M_hash_code = _M_hash_code_ext(__from); 859623: } 859623: 859623: void 859623: _M_store_code(__node_value_type& __to, __hash_code __code) const 859623: { 859623: if constexpr (__hash_cached::value) 859623: __to._M_hash_code = __code; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: 859623: 859623: __node_base_ptr 859623: _M_find_before_node(size_type, const key_type&, __hash_code) const; 859623: 859623: template 859623: __node_base_ptr 859623: _M_find_before_node_tr(size_type, const _Kt&, __hash_code) const; 859623: 859623: 859623: 859623: struct __location_type 859623: { 859623: 859623: explicit operator bool() const noexcept 859623: { return static_cast(_M_before); } 859623: 859623: 859623: explicit operator iterator() const noexcept 859623: { return iterator(_M_node()); } 859623: 859623: 859623: explicit operator const_iterator() const noexcept 859623: { return const_iterator(_M_node()); } 859623: 859623: 859623: __node_ptr _M_node() const 859623: { 859623: if (_M_before) 859623: return static_cast<__node_ptr>(_M_before->_M_nxt); 859623: return __node_ptr(); 859623: } 859623: 859623: __node_base_ptr _M_before{}; 859623: __hash_code _M_hash_code{}; 859623: size_type _M_bucket_index = size_type(-1); 859623: }; 859623: # 902 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: __location_type 859623: _M_locate(const key_type& __k) const; 859623: 859623: __node_ptr 859623: _M_find_node(size_type __bkt, const key_type& __key, 859623: __hash_code __c) const 859623: { 859623: if (__node_base_ptr __before_n = _M_find_before_node(__bkt, __key, __c)) 859623: return static_cast<__node_ptr>(__before_n->_M_nxt); 859623: return nullptr; 859623: } 859623: 859623: template 859623: __node_ptr 859623: _M_find_node_tr(size_type __bkt, const _Kt& __key, 859623: __hash_code __c) const 859623: { 859623: if (auto __before_n = _M_find_before_node_tr(__bkt, __key, __c)) 859623: return static_cast<__node_ptr>(__before_n->_M_nxt); 859623: return nullptr; 859623: } 859623: 859623: 859623: void 859623: _M_insert_bucket_begin(size_type __bkt, __node_ptr __node) 859623: { 859623: if (_M_buckets[__bkt]) 859623: { 859623: 859623: 859623: __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; 859623: _M_buckets[__bkt]->_M_nxt = __node; 859623: } 859623: else 859623: { 859623: 859623: 859623: 859623: __node->_M_nxt = _M_before_begin._M_nxt; 859623: _M_before_begin._M_nxt = __node; 859623: 859623: if (__node->_M_nxt) 859623: 859623: 859623: _M_buckets[_M_bucket_index(*__node->_M_next())] = __node; 859623: 859623: _M_buckets[__bkt] = &_M_before_begin; 859623: } 859623: } 859623: 859623: 859623: void 859623: _M_remove_bucket_begin(size_type __bkt, __node_ptr __next_n, 859623: size_type __next_bkt) 859623: { 859623: if (!__next_n) 859623: _M_buckets[__bkt] = nullptr; 859623: else if (__next_bkt != __bkt) 859623: { 859623: _M_buckets[__next_bkt] = _M_buckets[__bkt]; 859623: _M_buckets[__bkt] = nullptr; 859623: } 859623: } 859623: 859623: 859623: __node_base_ptr 859623: _M_get_previous_node(size_type __bkt, __node_ptr __n); 859623: 859623: pair<__node_ptr, __hash_code> 859623: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: _M_insert_unique_node(size_type __bkt, __hash_code, 859623: __node_ptr __n, size_type __n_elt = 1); 859623: 859623: 859623: 859623: iterator 859623: _M_insert_multi_node(__node_ptr __hint, 859623: __hash_code __code, __node_ptr __n); 859623: 859623: template 859623: std::pair 859623: _M_emplace_uniq(_Args&&... __args); 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++14-extensions" 859623: template, 859623: typename = _ExtractKey> 859623: static constexpr bool __is_key_type = false; 859623: 859623: template 859623: static constexpr bool 859623: __is_key_type<_Arg, key_type, __detail::_Identity> = true; 859623: 859623: template 859623: static constexpr bool 859623: __is_key_type<_Arg, pair<_Arg1, _Arg2>, __detail::_Select1st> 859623: = is_same<__remove_cvref_t<_Arg1>, key_type>::value; 859623: #pragma GCC diagnostic pop 859623: 859623: template 859623: iterator 859623: _M_emplace_multi(const_iterator, _Args&&... __args); 859623: 859623: iterator 859623: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n); 859623: 859623: template 859623: void 859623: _M_insert_range_multi(_InputIterator __first, _InputIterator __last); 859623: 859623: public: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: template 859623: __ireturn_type 859623: emplace(_Args&&... __args) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(std::forward<_Args>(__args)...); 859623: else 859623: return _M_emplace_multi(cend(), std::forward<_Args>(__args)...); 859623: } 859623: 859623: template 859623: iterator 859623: emplace_hint(const_iterator __hint, _Args&&... __args) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(std::forward<_Args>(__args)...).first; 859623: else 859623: return _M_emplace_multi(__hint, std::forward<_Args>(__args)...); 859623: } 859623: 859623: 859623: __ireturn_type 859623: insert(const value_type& __v) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(__v); 859623: else 859623: return _M_emplace_multi(cend(), __v); 859623: } 859623: 859623: iterator 859623: insert(const_iterator __hint, const value_type& __v) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(__v).first; 859623: else 859623: return _M_emplace_multi(__hint, __v); 859623: } 859623: 859623: __ireturn_type 859623: insert(value_type&& __v) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(std::move(__v)); 859623: else 859623: return _M_emplace_multi(cend(), std::move(__v)); 859623: } 859623: 859623: iterator 859623: insert(const_iterator __hint, value_type&& __v) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(std::move(__v)).first; 859623: else 859623: return _M_emplace_multi(__hint, std::move(__v)); 859623: } 859623: # 1108 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: void 859623: insert(initializer_list __l) 859623: { this->insert(__l.begin(), __l.end()); } 859623: 859623: template 859623: void 859623: insert(_InputIterator __first, _InputIterator __last) 859623: { 859623: if constexpr (__unique_keys::value) 859623: for (; __first != __last; ++__first) 859623: _M_emplace_uniq(*__first); 859623: else 859623: return _M_insert_range_multi(__first, __last); 859623: } 859623: 859623: 859623: template>, 859623: is_constructible>> 859623: __ireturn_type 859623: insert(_Pair&& __v) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(std::forward<_Pair>(__v)); 859623: else 859623: return _M_emplace_multi(cend(), std::forward<_Pair>(__v)); 859623: } 859623: 859623: 859623: template>, 859623: is_constructible>> 859623: iterator 859623: insert(const_iterator __hint, _Pair&& __v) 859623: { 859623: if constexpr (__unique_keys::value) 859623: return _M_emplace_uniq(std::forward<_Pair>(__v)); 859623: else 859623: return _M_emplace_multi(__hint, std::forward<_Pair>(__v)); 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: 859623: iterator 859623: erase(const_iterator); 859623: 859623: 859623: 859623: iterator 859623: erase(iterator __it) 859623: { return erase(const_iterator(__it)); } 859623: 859623: size_type 859623: erase(const key_type& __k); 859623: 859623: iterator 859623: erase(const_iterator, const_iterator); 859623: 859623: void 859623: clear() noexcept; 859623: 859623: 859623: 859623: void rehash(size_type __bkt_count); 859623: # 1403 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: bool 859623: _M_equal(const _Hashtable& __other) const; 859623: 859623: private: 859623: 859623: void _M_rehash(size_type __bkt_count, true_type __uks); 859623: 859623: 859623: void _M_rehash(size_type __bkt_count, false_type __uks); 859623: }; 859623: 859623: 859623: template 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _Hashtable(size_type __bkt_count_hint, 859623: const _Hash& __h, const _Equal& __eq, const allocator_type& __a) 859623: : _Hashtable(__h, __eq, __a) 859623: { 859623: auto __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count_hint); 859623: if (__bkt_count > _M_bucket_count) 859623: { 859623: _M_buckets = _M_allocate_buckets(__bkt_count); 859623: _M_bucket_count = __bkt_count; 859623: } 859623: } 859623: 859623: template 859623: template 859623: inline 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _Hashtable(_InputIterator __f, _InputIterator __l, 859623: size_type __bkt_count_hint, 859623: const _Hash& __h, const _Equal& __eq, 859623: const allocator_type& __a, true_type ) 859623: : _Hashtable(__bkt_count_hint, __h, __eq, __a) 859623: { this->insert(__f, __l); } 859623: 859623: template 859623: template 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _Hashtable(_InputIterator __f, _InputIterator __l, 859623: size_type __bkt_count_hint, 859623: const _Hash& __h, const _Equal& __eq, 859623: const allocator_type& __a, false_type __uks) 859623: : _Hashtable(__h, __eq, __a) 859623: { 859623: auto __nb_elems = __detail::__distance_fw(__f, __l); 859623: auto __bkt_count = 859623: _M_rehash_policy._M_next_bkt( 859623: std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), 859623: __bkt_count_hint)); 859623: 859623: if (__bkt_count > _M_bucket_count) 859623: { 859623: _M_buckets = _M_allocate_buckets(__bkt_count); 859623: _M_bucket_count = __bkt_count; 859623: } 859623: 859623: for (; __f != __l; ++__f) 859623: _M_emplace_multi(cend(), *__f); 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: operator=(const _Hashtable& __ht) 859623: -> _Hashtable& 859623: { 859623: if (&__ht == this) 859623: return *this; 859623: 859623: if (__node_alloc_traits::_S_propagate_on_copy_assign()) 859623: { 859623: auto& __this_alloc = this->_M_node_allocator(); 859623: auto& __that_alloc = __ht._M_node_allocator(); 859623: if (!__node_alloc_traits::_S_always_equal() 859623: && __this_alloc != __that_alloc) 859623: { 859623: 859623: this->_M_deallocate_nodes(_M_begin()); 859623: _M_before_begin._M_nxt = nullptr; 859623: _M_deallocate_buckets(); 859623: _M_buckets = nullptr; 859623: std::__alloc_on_copy(__this_alloc, __that_alloc); 859623: __hashtable_base::operator=(__ht); 859623: _M_bucket_count = __ht._M_bucket_count; 859623: _M_element_count = __ht._M_element_count; 859623: _M_rehash_policy = __ht._M_rehash_policy; 859623: 859623: struct _Guard 859623: { 859623: ~_Guard() { if (_M_ht) _M_ht->_M_reset(); } 859623: _Hashtable* _M_ht; 859623: }; 859623: 859623: 859623: _Guard __guard{this}; 859623: _M_assign(__ht); 859623: __guard._M_ht = nullptr; 859623: return *this; 859623: } 859623: std::__alloc_on_copy(__this_alloc, __that_alloc); 859623: } 859623: 859623: 859623: _M_assign_elements(__ht); 859623: return *this; 859623: } 859623: 859623: template 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_assign_elements(_Ht&& __ht) 859623: { 859623: using __reuse_or_alloc_node_gen_t = 859623: __detail::_ReuseOrAllocNode<__node_alloc_type>; 859623: 859623: __buckets_ptr __former_buckets = nullptr; 859623: std::size_t __former_bucket_count = _M_bucket_count; 859623: __rehash_guard_t __rehash_guard(_M_rehash_policy); 859623: 859623: if (_M_bucket_count != __ht._M_bucket_count) 859623: { 859623: __former_buckets = _M_buckets; 859623: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); 859623: _M_bucket_count = __ht._M_bucket_count; 859623: } 859623: else 859623: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 859623: 859623: if (true) 859623: { 859623: __hashtable_base::operator=(std::forward<_Ht>(__ht)); 859623: _M_element_count = __ht._M_element_count; 859623: _M_rehash_policy = __ht._M_rehash_policy; 859623: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); 859623: _M_before_begin._M_nxt = nullptr; 859623: _M_assign(std::forward<_Ht>(__ht), __roan); 859623: if (__former_buckets) 859623: _M_deallocate_buckets(__former_buckets, __former_bucket_count); 859623: __rehash_guard._M_guarded_obj = nullptr; 859623: } 859623: if (false) 859623: { 859623: if (__former_buckets) 859623: { 859623: 859623: _M_deallocate_buckets(); 859623: _M_buckets = __former_buckets; 859623: _M_bucket_count = __former_bucket_count; 859623: } 859623: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 859623: ; 859623: } 859623: } 859623: 859623: template 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_assign(_Ht&& __ht, _NodeGenerator& __node_gen) 859623: { 859623: struct _Guard 859623: { 859623: ~_Guard() 859623: { 859623: if (_M_ht) 859623: { 859623: _M_ht->clear(); 859623: if (_M_dealloc_buckets) 859623: _M_ht->_M_deallocate_buckets(); 859623: } 859623: } 859623: _Hashtable* _M_ht = nullptr; 859623: bool _M_dealloc_buckets = false; 859623: }; 859623: _Guard __guard; 859623: 859623: if (!_M_buckets) 859623: { 859623: _M_buckets = _M_allocate_buckets(_M_bucket_count); 859623: __guard._M_dealloc_buckets = true; 859623: } 859623: 859623: if (!__ht._M_before_begin._M_nxt) 859623: return; 859623: 859623: __guard._M_ht = this; 859623: 859623: using _FromVal = __conditional_t::value, 859623: const value_type&, value_type&&>; 859623: 859623: 859623: 859623: __node_ptr __ht_n = __ht._M_begin(); 859623: __node_ptr __this_n 859623: = __node_gen(static_cast<_FromVal>(__ht_n->_M_v())); 859623: _M_copy_code(*__this_n, *__ht_n); 859623: _M_update_bbegin(__this_n); 859623: 859623: 859623: __node_ptr __prev_n = __this_n; 859623: for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) 859623: { 859623: __this_n = __node_gen(static_cast<_FromVal>(__ht_n->_M_v())); 859623: __prev_n->_M_nxt = __this_n; 859623: _M_copy_code(*__this_n, *__ht_n); 859623: size_type __bkt = _M_bucket_index(*__this_n); 859623: if (!_M_buckets[__bkt]) 859623: _M_buckets[__bkt] = __prev_n; 859623: __prev_n = __this_n; 859623: } 859623: __guard._M_ht = nullptr; 859623: } 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_reset() noexcept 859623: { 859623: _M_rehash_policy._M_reset(); 859623: _M_bucket_count = 1; 859623: _M_single_bucket = nullptr; 859623: _M_buckets = &_M_single_bucket; 859623: _M_before_begin._M_nxt = nullptr; 859623: _M_element_count = 0; 859623: } 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_move_assign(_Hashtable&& __ht, true_type) 859623: { 859623: if (__builtin_expect(std::__addressof(__ht) == this, false)) 859623: return; 859623: 859623: this->_M_deallocate_nodes(_M_begin()); 859623: _M_deallocate_buckets(); 859623: __hashtable_base::operator=(std::move(__ht)); 859623: _M_rehash_policy = __ht._M_rehash_policy; 859623: if (!__ht._M_uses_single_bucket()) 859623: _M_buckets = __ht._M_buckets; 859623: else 859623: { 859623: _M_buckets = &_M_single_bucket; 859623: _M_single_bucket = __ht._M_single_bucket; 859623: } 859623: 859623: _M_bucket_count = __ht._M_bucket_count; 859623: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; 859623: _M_element_count = __ht._M_element_count; 859623: std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); 859623: 859623: 859623: _M_update_bbegin(); 859623: __ht._M_reset(); 859623: } 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_move_assign(_Hashtable&& __ht, false_type) 859623: { 859623: if (__ht._M_node_allocator() == this->_M_node_allocator()) 859623: _M_move_assign(std::move(__ht), true_type{}); 859623: else 859623: { 859623: 859623: _M_assign_elements(std::move(__ht)); 859623: __ht.clear(); 859623: } 859623: } 859623: 859623: template 859623: inline 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _Hashtable(const _Hashtable& __ht) 859623: : __hashtable_base(__ht), 859623: __map_base(__ht), 859623: __rehash_base(__ht), 859623: __hashtable_alloc( 859623: __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), 859623: __enable_default_ctor(__ht), 859623: _M_buckets(nullptr), 859623: _M_bucket_count(__ht._M_bucket_count), 859623: _M_element_count(__ht._M_element_count), 859623: _M_rehash_policy(__ht._M_rehash_policy) 859623: { 859623: _M_assign(__ht); 859623: } 859623: 859623: template 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 859623: true_type ) 859623: noexcept(_S_nothrow_move()) 859623: : __hashtable_base(__ht), 859623: __map_base(__ht), 859623: __rehash_base(__ht), 859623: __hashtable_alloc(std::move(__a)), 859623: __enable_default_ctor(__ht), 859623: _M_buckets(__ht._M_buckets), 859623: _M_bucket_count(__ht._M_bucket_count), 859623: _M_before_begin(__ht._M_before_begin._M_nxt), 859623: _M_element_count(__ht._M_element_count), 859623: _M_rehash_policy(__ht._M_rehash_policy) 859623: { 859623: 859623: if (__ht._M_uses_single_bucket()) 859623: { 859623: _M_buckets = &_M_single_bucket; 859623: _M_single_bucket = __ht._M_single_bucket; 859623: } 859623: 859623: 859623: _M_update_bbegin(); 859623: 859623: __ht._M_reset(); 859623: } 859623: 859623: template 859623: inline 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _Hashtable(const _Hashtable& __ht, const allocator_type& __a) 859623: : __hashtable_base(__ht), 859623: __map_base(__ht), 859623: __rehash_base(__ht), 859623: __hashtable_alloc(__node_alloc_type(__a)), 859623: __enable_default_ctor(__ht), 859623: _M_buckets(), 859623: _M_bucket_count(__ht._M_bucket_count), 859623: _M_element_count(__ht._M_element_count), 859623: _M_rehash_policy(__ht._M_rehash_policy) 859623: { 859623: _M_assign(__ht); 859623: } 859623: 859623: template 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, 859623: false_type ) 859623: : __hashtable_base(__ht), 859623: __map_base(__ht), 859623: __rehash_base(__ht), 859623: __hashtable_alloc(std::move(__a)), 859623: __enable_default_ctor(__ht), 859623: _M_buckets(nullptr), 859623: _M_bucket_count(__ht._M_bucket_count), 859623: _M_element_count(__ht._M_element_count), 859623: _M_rehash_policy(__ht._M_rehash_policy) 859623: { 859623: if (__ht._M_node_allocator() == this->_M_node_allocator()) 859623: { 859623: if (__ht._M_uses_single_bucket()) 859623: { 859623: _M_buckets = &_M_single_bucket; 859623: _M_single_bucket = __ht._M_single_bucket; 859623: } 859623: else 859623: _M_buckets = __ht._M_buckets; 859623: 859623: 859623: 859623: _M_update_bbegin(__ht._M_begin()); 859623: 859623: __ht._M_reset(); 859623: } 859623: else 859623: { 859623: using _Fwd_Ht = __conditional_t< 859623: __move_if_noexcept_cond::value, 859623: const _Hashtable&, _Hashtable&&>; 859623: _M_assign(std::forward<_Fwd_Ht>(__ht)); 859623: __ht.clear(); 859623: } 859623: } 859623: 859623: template 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: ~_Hashtable() noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: static_assert(noexcept(declval() 859623: ._M_bucket_index(declval(), 859623: (std::size_t)0)), 859623: "Cache the hash code or qualify your functors involved" 859623: " in hash code and bucket index computation with noexcept"); 859623: 859623: this->_M_deallocate_nodes(_M_begin()); 859623: _M_deallocate_buckets(); 859623: } 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: swap(_Hashtable& __x) 859623: noexcept(__and_<__is_nothrow_swappable<_Hash>, 859623: __is_nothrow_swappable<_Equal>>::value) 859623: { 859623: using std::swap; 859623: swap(__hash_code_base::_M_hash._M_obj, 859623: __x.__hash_code_base::_M_hash._M_obj); 859623: swap(__hashtable_base::_M_equal._M_obj, 859623: __x.__hashtable_base::_M_equal._M_obj); 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: if constexpr (__node_alloc_traits::propagate_on_container_swap::value) 859623: swap(this->_M_node_allocator(), __x._M_node_allocator()); 859623: #pragma GCC diagnostic pop 859623: 859623: std::swap(_M_rehash_policy, __x._M_rehash_policy); 859623: 859623: 859623: if (this->_M_uses_single_bucket()) 859623: { 859623: if (!__x._M_uses_single_bucket()) 859623: { 859623: _M_buckets = __x._M_buckets; 859623: __x._M_buckets = &__x._M_single_bucket; 859623: } 859623: } 859623: else if (__x._M_uses_single_bucket()) 859623: { 859623: __x._M_buckets = _M_buckets; 859623: _M_buckets = &_M_single_bucket; 859623: } 859623: else 859623: std::swap(_M_buckets, __x._M_buckets); 859623: 859623: std::swap(_M_bucket_count, __x._M_bucket_count); 859623: std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); 859623: std::swap(_M_element_count, __x._M_element_count); 859623: std::swap(_M_single_bucket, __x._M_single_bucket); 859623: 859623: 859623: 859623: _M_update_bbegin(); 859623: __x._M_update_bbegin(); 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: find(const key_type& __k) 859623: -> iterator 859623: { return iterator(_M_locate(__k)); } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: find(const key_type& __k) const 859623: -> const_iterator 859623: { return const_iterator(_M_locate(__k)); } 859623: # 1981 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: count(const key_type& __k) const 859623: -> size_type 859623: { 859623: auto __it = find(__k); 859623: if (!__it._M_cur) 859623: return 0; 859623: 859623: if (__unique_keys::value) 859623: return 1; 859623: 859623: size_type __result = 1; 859623: for (auto __ref = __it++; 859623: __it._M_cur && this->_M_node_equals(*__ref._M_cur, *__it._M_cur); 859623: ++__it) 859623: ++__result; 859623: 859623: return __result; 859623: } 859623: # 2054 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: equal_range(const key_type& __k) 859623: -> pair 859623: { 859623: auto __ite = find(__k); 859623: if (!__ite._M_cur) 859623: return { __ite, __ite }; 859623: 859623: auto __beg = __ite++; 859623: if (__unique_keys::value) 859623: return { __beg, __ite }; 859623: 859623: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) 859623: ++__ite; 859623: 859623: return { __beg, __ite }; 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: equal_range(const key_type& __k) const 859623: -> pair 859623: { 859623: auto __ite = find(__k); 859623: if (!__ite._M_cur) 859623: return { __ite, __ite }; 859623: 859623: auto __beg = __ite++; 859623: if (__unique_keys::value) 859623: return { __beg, __ite }; 859623: 859623: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) 859623: ++__ite; 859623: 859623: return { __beg, __ite }; 859623: } 859623: # 2194 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_find_before_node(size_type __bkt, const key_type& __k, 859623: __hash_code __code) const 859623: -> __node_base_ptr 859623: { 859623: __node_base_ptr __prev_p = _M_buckets[__bkt]; 859623: if (!__prev_p) 859623: return nullptr; 859623: 859623: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; 859623: __p = __p->_M_next()) 859623: { 859623: if (this->_M_equals(__k, __code, *__p)) 859623: return __prev_p; 859623: 859623: if (__builtin_expect (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt, 0)) 859623: break; 859623: __prev_p = __p; 859623: } 859623: 859623: return nullptr; 859623: } 859623: 859623: template 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_find_before_node_tr(size_type __bkt, const _Kt& __k, 859623: __hash_code __code) const 859623: -> __node_base_ptr 859623: { 859623: __node_base_ptr __prev_p = _M_buckets[__bkt]; 859623: if (!__prev_p) 859623: return nullptr; 859623: 859623: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; 859623: __p = __p->_M_next()) 859623: { 859623: if (this->_M_equals_tr(__k, __code, *__p)) 859623: return __prev_p; 859623: 859623: if (__builtin_expect (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt, 0)) 859623: break; 859623: __prev_p = __p; 859623: } 859623: 859623: return nullptr; 859623: } 859623: 859623: template 859623: inline auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_locate(const key_type& __k) const 859623: -> __location_type 859623: { 859623: __location_type __loc; 859623: const auto __size = size(); 859623: 859623: if (__size <= __small_size_threshold()) 859623: { 859623: __loc._M_before = pointer_traits<__node_base_ptr>:: 859623: pointer_to(const_cast<__node_base&>(_M_before_begin)); 859623: while (__loc._M_before->_M_nxt) 859623: { 859623: if (this->_M_key_equals(__k, *__loc._M_node())) 859623: return __loc; 859623: __loc._M_before = __loc._M_before->_M_nxt; 859623: } 859623: __loc._M_before = nullptr; 859623: } 859623: 859623: __loc._M_hash_code = this->_M_hash_code(__k); 859623: __loc._M_bucket_index = _M_bucket_index(__loc._M_hash_code); 859623: 859623: if (__size > __small_size_threshold()) 859623: __loc._M_before = _M_find_before_node(__loc._M_bucket_index, __k, 859623: __loc._M_hash_code); 859623: 859623: return __loc; 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_get_previous_node(size_type __bkt, __node_ptr __n) 859623: -> __node_base_ptr 859623: { 859623: __node_base_ptr __prev_n = _M_buckets[__bkt]; 859623: while (__prev_n->_M_nxt != __n) 859623: __prev_n = __prev_n->_M_nxt; 859623: return __prev_n; 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_emplace_uniq(_Args&&... __args) 859623: -> pair 859623: { 859623: const key_type* __kp = nullptr; 859623: 859623: if constexpr (sizeof...(_Args) == 1) 859623: { 859623: if constexpr (__is_key_type<_Args...>) 859623: { 859623: const auto& __key = _ExtractKey{}(__args...); 859623: __kp = std::__addressof(__key); 859623: } 859623: } 859623: else if constexpr (sizeof...(_Args) == 2) 859623: { 859623: if constexpr (__is_key_type>) 859623: { 859623: pair __refs(__args...); 859623: const auto& __key = _ExtractKey{}(__refs); 859623: __kp = std::__addressof(__key); 859623: } 859623: } 859623: 859623: _Scoped_node __node { __node_ptr(), this }; 859623: __hash_code __code = 0; 859623: size_type __bkt = 0; 859623: 859623: if (__kp == nullptr) 859623: { 859623: 859623: __node._M_node 859623: = this->_M_allocate_node(std::forward<_Args>(__args)...); 859623: const key_type& __key = _ExtractKey{}(__node._M_node->_M_v()); 859623: __kp = std::__addressof(__key); 859623: } 859623: 859623: if (auto __loc = _M_locate(*__kp)) 859623: 859623: return { iterator(__loc), false }; 859623: else 859623: { 859623: __code = __loc._M_hash_code; 859623: __bkt = __loc._M_bucket_index; 859623: } 859623: 859623: if (!__node._M_node) 859623: __node._M_node 859623: = this->_M_allocate_node(std::forward<_Args>(__args)...); 859623: 859623: 859623: auto __pos = _M_insert_unique_node(__bkt, __code, __node._M_node); 859623: __node._M_node = nullptr; 859623: return { __pos, true }; 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: template 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_emplace_multi(const_iterator __hint, _Args&&... __args) 859623: -> iterator 859623: { 859623: 859623: _Scoped_node __node { this, std::forward<_Args>(__args)... }; 859623: const key_type& __k = _ExtractKey{}(__node._M_node->_M_v()); 859623: 859623: auto __res = this->_M_compute_hash_code(__hint._M_cur, __k); 859623: auto __pos 859623: = _M_insert_multi_node(__res.first, __res.second, __node._M_node); 859623: __node._M_node = nullptr; 859623: return __pos; 859623: } 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_rehash_insert(size_type __n) 859623: { 859623: using __pair_type = std::pair; 859623: if (__n == 0) 859623: return; 859623: 859623: __rehash_guard_t __rehash_guard(_M_rehash_policy); 859623: __pair_type __do_rehash 859623: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, __n); 859623: 859623: if (__do_rehash.first) 859623: _M_rehash(__do_rehash.second, false_type{}); 859623: 859623: __rehash_guard._M_guarded_obj = nullptr; 859623: } 859623: 859623: 859623: template 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_insert_range_multi(_InputIterator __first, _InputIterator __last) 859623: { 859623: _M_rehash_insert(__detail::__distance_fw(__first, __last)); 859623: for (; __first != __last; ++__first) 859623: _M_emplace_multi(cend(), *__first); 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const 859623: -> pair<__node_ptr, __hash_code> 859623: { 859623: if (size() <= __small_size_threshold()) 859623: { 859623: if (__hint) 859623: { 859623: for (auto __it = __hint; __it; __it = __it->_M_next()) 859623: if (this->_M_key_equals(__k, *__it)) 859623: return { __it, this->_M_hash_code(*__it) }; 859623: } 859623: 859623: for (auto __it = _M_begin(); __it != __hint; __it = __it->_M_next()) 859623: if (this->_M_key_equals(__k, *__it)) 859623: return { __it, this->_M_hash_code(*__it) }; 859623: 859623: __hint = nullptr; 859623: } 859623: 859623: return { __hint, this->_M_hash_code(__k) }; 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_insert_unique_node(size_type __bkt, __hash_code __code, 859623: __node_ptr __node, size_type __n_elt) 859623: -> iterator 859623: { 859623: __rehash_guard_t __rehash_guard(_M_rehash_policy); 859623: std::pair __do_rehash 859623: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 859623: __n_elt); 859623: 859623: if (__do_rehash.first) 859623: { 859623: _M_rehash(__do_rehash.second, true_type{}); 859623: __bkt = _M_bucket_index(__code); 859623: } 859623: 859623: __rehash_guard._M_guarded_obj = nullptr; 859623: _M_store_code(*__node, __code); 859623: 859623: 859623: _M_insert_bucket_begin(__bkt, __node); 859623: ++_M_element_count; 859623: return iterator(__node); 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_insert_multi_node(__node_ptr __hint, 859623: __hash_code __code, __node_ptr __node) 859623: -> iterator 859623: { 859623: __rehash_guard_t __rehash_guard(_M_rehash_policy); 859623: std::pair __do_rehash 859623: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); 859623: 859623: if (__do_rehash.first) 859623: _M_rehash(__do_rehash.second, false_type{}); 859623: 859623: __rehash_guard._M_guarded_obj = nullptr; 859623: _M_store_code(*__node, __code); 859623: const key_type& __k = _ExtractKey{}(__node->_M_v()); 859623: size_type __bkt = _M_bucket_index(__code); 859623: 859623: 859623: 859623: __node_base_ptr __prev 859623: = __builtin_expect(__hint != nullptr, false) 859623: && this->_M_equals(__k, __code, *__hint) 859623: ? __hint 859623: : _M_find_before_node(__bkt, __k, __code); 859623: 859623: if (__prev) 859623: { 859623: 859623: __node->_M_nxt = __prev->_M_nxt; 859623: __prev->_M_nxt = __node; 859623: if (__builtin_expect(__prev == __hint, false)) 859623: 859623: 859623: if (__node->_M_nxt 859623: && !this->_M_equals(__k, __code, *__node->_M_next())) 859623: { 859623: size_type __next_bkt = _M_bucket_index(*__node->_M_next()); 859623: if (__next_bkt != __bkt) 859623: _M_buckets[__next_bkt] = __node; 859623: } 859623: } 859623: else 859623: 859623: 859623: 859623: _M_insert_bucket_begin(__bkt, __node); 859623: ++_M_element_count; 859623: return iterator(__node); 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: erase(const_iterator __it) 859623: -> iterator 859623: { 859623: __node_ptr __n = __it._M_cur; 859623: std::size_t __bkt = _M_bucket_index(*__n); 859623: 859623: 859623: 859623: 859623: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); 859623: return _M_erase(__bkt, __prev_n, __n); 859623: } 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n) 859623: -> iterator 859623: { 859623: if (__prev_n == _M_buckets[__bkt]) 859623: _M_remove_bucket_begin(__bkt, __n->_M_next(), 859623: __n->_M_nxt ? _M_bucket_index(*__n->_M_next()) : 0); 859623: else if (__n->_M_nxt) 859623: { 859623: size_type __next_bkt = _M_bucket_index(*__n->_M_next()); 859623: if (__next_bkt != __bkt) 859623: _M_buckets[__next_bkt] = __prev_n; 859623: } 859623: 859623: __prev_n->_M_nxt = __n->_M_nxt; 859623: iterator __result(__n->_M_next()); 859623: this->_M_deallocate_node(__n); 859623: --_M_element_count; 859623: 859623: return __result; 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: erase(const key_type& __k) 859623: -> size_type 859623: { 859623: auto __loc = _M_locate(__k); 859623: if (!__loc) 859623: return 0; 859623: 859623: __node_base_ptr __prev_n = __loc._M_before; 859623: __node_ptr __n = __loc._M_node(); 859623: auto __bkt = __loc._M_bucket_index; 859623: if (__bkt == size_type(-1)) 859623: __bkt = _M_bucket_index(*__n); 859623: 859623: if constexpr (__unique_keys::value) 859623: { 859623: _M_erase(__bkt, __prev_n, __n); 859623: return 1; 859623: } 859623: else 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: __node_ptr __n_last = __n->_M_next(); 859623: while (__n_last && this->_M_node_equals(*__n, *__n_last)) 859623: __n_last = __n_last->_M_next(); 859623: 859623: std::size_t __n_last_bkt 859623: = __n_last ? _M_bucket_index(*__n_last) : __bkt; 859623: 859623: 859623: size_type __result = 0; 859623: do 859623: { 859623: __node_ptr __p = __n->_M_next(); 859623: this->_M_deallocate_node(__n); 859623: __n = __p; 859623: ++__result; 859623: } 859623: while (__n != __n_last); 859623: 859623: _M_element_count -= __result; 859623: if (__prev_n == _M_buckets[__bkt]) 859623: _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); 859623: else if (__n_last_bkt != __bkt) 859623: _M_buckets[__n_last_bkt] = __prev_n; 859623: __prev_n->_M_nxt = __n_last; 859623: return __result; 859623: } 859623: } 859623: #pragma GCC diagnostic pop 859623: 859623: template 859623: auto 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: erase(const_iterator __first, const_iterator __last) 859623: -> iterator 859623: { 859623: __node_ptr __n = __first._M_cur; 859623: __node_ptr __last_n = __last._M_cur; 859623: if (__n == __last_n) 859623: return iterator(__n); 859623: 859623: std::size_t __bkt = _M_bucket_index(*__n); 859623: 859623: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); 859623: bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); 859623: std::size_t __n_bkt = __bkt; 859623: for (;;) 859623: { 859623: do 859623: { 859623: __node_ptr __tmp = __n; 859623: __n = __n->_M_next(); 859623: this->_M_deallocate_node(__tmp); 859623: --_M_element_count; 859623: if (!__n) 859623: break; 859623: __n_bkt = _M_bucket_index(*__n); 859623: } 859623: while (__n != __last_n && __n_bkt == __bkt); 859623: if (__is_bucket_begin) 859623: _M_remove_bucket_begin(__bkt, __n, __n_bkt); 859623: if (__n == __last_n) 859623: break; 859623: __is_bucket_begin = true; 859623: __bkt = __n_bkt; 859623: } 859623: 859623: if (__n && (__n_bkt != __bkt || __is_bucket_begin)) 859623: _M_buckets[__n_bkt] = __prev_n; 859623: __prev_n->_M_nxt = __n; 859623: return iterator(__n); 859623: } 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: clear() noexcept 859623: { 859623: this->_M_deallocate_nodes(_M_begin()); 859623: std::fill_n(_M_buckets, _M_bucket_count, nullptr); 859623: _M_element_count = 0; 859623: _M_before_begin._M_nxt = nullptr; 859623: } 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: rehash(size_type __bkt_count) 859623: { 859623: __rehash_guard_t __rehash_guard(_M_rehash_policy); 859623: __bkt_count 859623: = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), 859623: __bkt_count); 859623: __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count); 859623: 859623: if (__bkt_count != _M_bucket_count) 859623: { 859623: _M_rehash(__bkt_count, __unique_keys{}); 859623: __rehash_guard._M_guarded_obj = nullptr; 859623: } 859623: } 859623: 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_rehash(size_type __bkt_count, true_type ) 859623: { 859623: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); 859623: __node_ptr __p = _M_begin(); 859623: _M_before_begin._M_nxt = nullptr; 859623: std::size_t __bbegin_bkt = 0; 859623: while (__p) 859623: { 859623: __node_ptr __next = __p->_M_next(); 859623: std::size_t __bkt 859623: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); 859623: if (!__new_buckets[__bkt]) 859623: { 859623: __p->_M_nxt = _M_before_begin._M_nxt; 859623: _M_before_begin._M_nxt = __p; 859623: __new_buckets[__bkt] = &_M_before_begin; 859623: if (__p->_M_nxt) 859623: __new_buckets[__bbegin_bkt] = __p; 859623: __bbegin_bkt = __bkt; 859623: } 859623: else 859623: { 859623: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 859623: __new_buckets[__bkt]->_M_nxt = __p; 859623: } 859623: 859623: __p = __next; 859623: } 859623: 859623: _M_deallocate_buckets(); 859623: _M_bucket_count = __bkt_count; 859623: _M_buckets = __new_buckets; 859623: } 859623: 859623: 859623: 859623: template 859623: void 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_rehash(size_type __bkt_count, false_type ) 859623: { 859623: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); 859623: __node_ptr __p = _M_begin(); 859623: _M_before_begin._M_nxt = nullptr; 859623: std::size_t __bbegin_bkt = 0; 859623: std::size_t __prev_bkt = 0; 859623: __node_ptr __prev_p = nullptr; 859623: bool __check_bucket = false; 859623: 859623: while (__p) 859623: { 859623: __node_ptr __next = __p->_M_next(); 859623: std::size_t __bkt 859623: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); 859623: 859623: if (__prev_p && __prev_bkt == __bkt) 859623: { 859623: 859623: 859623: 859623: __p->_M_nxt = __prev_p->_M_nxt; 859623: __prev_p->_M_nxt = __p; 859623: 859623: 859623: 859623: 859623: 859623: 859623: __check_bucket = true; 859623: } 859623: else 859623: { 859623: if (__check_bucket) 859623: { 859623: 859623: 859623: if (__prev_p->_M_nxt) 859623: { 859623: std::size_t __next_bkt 859623: = __hash_code_base::_M_bucket_index( 859623: *__prev_p->_M_next(), __bkt_count); 859623: if (__next_bkt != __prev_bkt) 859623: __new_buckets[__next_bkt] = __prev_p; 859623: } 859623: __check_bucket = false; 859623: } 859623: 859623: if (!__new_buckets[__bkt]) 859623: { 859623: __p->_M_nxt = _M_before_begin._M_nxt; 859623: _M_before_begin._M_nxt = __p; 859623: __new_buckets[__bkt] = &_M_before_begin; 859623: if (__p->_M_nxt) 859623: __new_buckets[__bbegin_bkt] = __p; 859623: __bbegin_bkt = __bkt; 859623: } 859623: else 859623: { 859623: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; 859623: __new_buckets[__bkt]->_M_nxt = __p; 859623: } 859623: } 859623: __prev_p = __p; 859623: __prev_bkt = __bkt; 859623: __p = __next; 859623: } 859623: 859623: if (__check_bucket && __prev_p->_M_nxt) 859623: { 859623: std::size_t __next_bkt 859623: = __hash_code_base::_M_bucket_index(*__prev_p->_M_next(), 859623: __bkt_count); 859623: if (__next_bkt != __prev_bkt) 859623: __new_buckets[__next_bkt] = __prev_p; 859623: } 859623: 859623: _M_deallocate_buckets(); 859623: _M_bucket_count = __bkt_count; 859623: _M_buckets = __new_buckets; 859623: } 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: 859623: 859623: 859623: template 859623: bool 859623: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, 859623: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: 859623: _M_equal(const _Hashtable& __other) const 859623: { 859623: if (size() != __other.size()) 859623: return false; 859623: 859623: if constexpr (__unique_keys::value) 859623: for (auto __x_n = _M_begin(); __x_n; __x_n = __x_n->_M_next()) 859623: { 859623: std::size_t __ybkt = __other._M_bucket_index_ext(*__x_n); 859623: auto __prev_n = __other._M_buckets[__ybkt]; 859623: if (!__prev_n) 859623: return false; 859623: 859623: for (__node_ptr __n = static_cast<__node_ptr>(__prev_n->_M_nxt);; 859623: __n = __n->_M_next()) 859623: { 859623: if (__n->_M_v() == __x_n->_M_v()) 859623: break; 859623: 859623: if (!__n->_M_nxt 859623: || __other._M_bucket_index(*__n->_M_next()) != __ybkt) 859623: return false; 859623: } 859623: } 859623: else 859623: for (auto __x_n = _M_begin(); __x_n;) 859623: { 859623: std::size_t __x_count = 1; 859623: auto __x_n_end = __x_n->_M_next(); 859623: for (; __x_n_end 859623: && key_eq()(_ExtractKey{}(__x_n->_M_v()), 859623: _ExtractKey{}(__x_n_end->_M_v())); 859623: __x_n_end = __x_n_end->_M_next()) 859623: ++__x_count; 859623: 859623: std::size_t __ybkt = __other._M_bucket_index_ext(*__x_n); 859623: auto __y_prev_n = __other._M_buckets[__ybkt]; 859623: if (!__y_prev_n) 859623: return false; 859623: 859623: __node_ptr __y_n = static_cast<__node_ptr>(__y_prev_n->_M_nxt); 859623: for (;;) 859623: { 859623: if (key_eq()(_ExtractKey{}(__y_n->_M_v()), 859623: _ExtractKey{}(__x_n->_M_v()))) 859623: break; 859623: 859623: auto __y_ref_n = __y_n; 859623: for (__y_n = __y_n->_M_next(); __y_n; __y_n = __y_n->_M_next()) 859623: if (!__other._M_node_equals(*__y_ref_n, *__y_n)) 859623: break; 859623: 859623: if (!__y_n || __other._M_bucket_index(*__y_n) != __ybkt) 859623: return false; 859623: } 859623: 859623: auto __y_n_end = __y_n; 859623: for (; __y_n_end; __y_n_end = __y_n_end->_M_next()) 859623: if (--__x_count == 0) 859623: break; 859623: 859623: if (__x_count != 0) 859623: return false; 859623: 859623: const_iterator __itx(__x_n), __itx_end(__x_n_end); 859623: const_iterator __ity(__y_n); 859623: if (!std::is_permutation(__itx, __itx_end, __ity)) 859623: return false; 859623: 859623: __x_n = __x_n_end; 859623: } 859623: 859623: return true; 859623: } 859623: #pragma GCC diagnostic pop 859623: # 2978 "/usr/arm-linux-gnueabi/include/c++/15/bits/hashtable.h" 3 859623: 859623: } 859623: 859623: #pragma GCC diagnostic pop 859623: # 34 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: template 859623: using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>; 859623: 859623: template, 859623: typename _Pred = std::equal_to<_Key>, 859623: typename _Alloc = std::allocator >, 859623: typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>> 859623: using __umap_hashtable = _Hashtable<_Key, std::pair, 859623: _Alloc, __detail::_Select1st, 859623: _Pred, _Hash, 859623: __detail::_Mod_range_hashing, 859623: __detail::_Default_ranged_hash, 859623: __detail::_Prime_rehash_policy, _Tr>; 859623: 859623: 859623: template 859623: using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>; 859623: 859623: template, 859623: typename _Pred = std::equal_to<_Key>, 859623: typename _Alloc = std::allocator >, 859623: typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>> 859623: using __ummap_hashtable = _Hashtable<_Key, std::pair, 859623: _Alloc, __detail::_Select1st, 859623: _Pred, _Hash, 859623: __detail::_Mod_range_hashing, 859623: __detail::_Default_ranged_hash, 859623: __detail::_Prime_rehash_policy, _Tr>; 859623: 859623: template 859623: class unordered_multimap; 859623: # 108 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template, 859623: typename _Pred = equal_to<_Key>, 859623: typename _Alloc = allocator>> 859623: class unordered_map 859623: { 859623: typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; 859623: _Hashtable _M_h; 859623: 859623: public: 859623: 859623: 859623: 859623: typedef typename _Hashtable::key_type key_type; 859623: typedef typename _Hashtable::value_type value_type; 859623: typedef typename _Hashtable::mapped_type mapped_type; 859623: typedef typename _Hashtable::hasher hasher; 859623: typedef typename _Hashtable::key_equal key_equal; 859623: typedef typename _Hashtable::allocator_type allocator_type; 859623: 859623: 859623: 859623: 859623: typedef typename _Hashtable::pointer pointer; 859623: typedef typename _Hashtable::const_pointer const_pointer; 859623: typedef typename _Hashtable::reference reference; 859623: typedef typename _Hashtable::const_reference const_reference; 859623: typedef typename _Hashtable::iterator iterator; 859623: typedef typename _Hashtable::const_iterator const_iterator; 859623: typedef typename _Hashtable::local_iterator local_iterator; 859623: typedef typename _Hashtable::const_local_iterator const_local_iterator; 859623: typedef typename _Hashtable::size_type size_type; 859623: typedef typename _Hashtable::difference_type difference_type; 859623: # 151 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_map() = default; 859623: # 160 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: explicit 859623: unordered_map(size_type __n, 859623: const hasher& __hf = hasher(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_h(__n, __hf, __eql, __a) 859623: { } 859623: # 181 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: unordered_map(_InputIterator __first, _InputIterator __last, 859623: size_type __n = 0, 859623: const hasher& __hf = hasher(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_h(__first, __last, __n, __hf, __eql, __a) 859623: { } 859623: 859623: 859623: unordered_map(const unordered_map&) = default; 859623: 859623: 859623: unordered_map(unordered_map&&) = default; 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: unordered_map(const allocator_type& __a) 859623: : _M_h(__a) 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: 859623: unordered_map(const unordered_map& __umap, 859623: const allocator_type& __a) 859623: : _M_h(__umap._M_h, __a) 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: 859623: unordered_map(unordered_map&& __umap, 859623: const allocator_type& __a) 859623: noexcept( noexcept(_Hashtable(std::move(__umap._M_h), __a)) ) 859623: : _M_h(std::move(__umap._M_h), __a) 859623: { } 859623: # 237 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_map(initializer_list __l, 859623: size_type __n = 0, 859623: const hasher& __hf = hasher(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_h(__l, __n, __hf, __eql, __a) 859623: { } 859623: 859623: unordered_map(size_type __n, const allocator_type& __a) 859623: : unordered_map(__n, hasher(), key_equal(), __a) 859623: { } 859623: 859623: unordered_map(size_type __n, const hasher& __hf, 859623: const allocator_type& __a) 859623: : unordered_map(__n, __hf, key_equal(), __a) 859623: { } 859623: 859623: template 859623: unordered_map(_InputIterator __first, _InputIterator __last, 859623: size_type __n, 859623: const allocator_type& __a) 859623: : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) 859623: { } 859623: 859623: template 859623: unordered_map(_InputIterator __first, _InputIterator __last, 859623: size_type __n, const hasher& __hf, 859623: const allocator_type& __a) 859623: : unordered_map(__first, __last, __n, __hf, key_equal(), __a) 859623: { } 859623: 859623: unordered_map(initializer_list __l, 859623: size_type __n, 859623: const allocator_type& __a) 859623: : unordered_map(__l, __n, hasher(), key_equal(), __a) 859623: { } 859623: 859623: unordered_map(initializer_list __l, 859623: size_type __n, const hasher& __hf, 859623: const allocator_type& __a) 859623: : unordered_map(__l, __n, __hf, key_equal(), __a) 859623: { } 859623: # 324 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_map& 859623: operator=(const unordered_map&) = default; 859623: 859623: 859623: unordered_map& 859623: operator=(unordered_map&&) = default; 859623: # 342 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_map& 859623: operator=(initializer_list __l) 859623: { 859623: _M_h = __l; 859623: return *this; 859623: } 859623: 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return _M_h.get_allocator(); } 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] bool 859623: empty() const noexcept 859623: { return _M_h.empty(); } 859623: 859623: 859623: size_type 859623: size() const noexcept 859623: { return _M_h.size(); } 859623: 859623: 859623: size_type 859623: max_size() const noexcept 859623: { return _M_h.max_size(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: begin() noexcept 859623: { return _M_h.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: begin() const noexcept 859623: { return _M_h.begin(); } 859623: 859623: const_iterator 859623: cbegin() const noexcept 859623: { return _M_h.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: end() noexcept 859623: { return _M_h.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: end() const noexcept 859623: { return _M_h.end(); } 859623: 859623: const_iterator 859623: cend() const noexcept 859623: { return _M_h.end(); } 859623: # 439 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: std::pair 859623: emplace(_Args&&... __args) 859623: { return _M_h.emplace(std::forward<_Args>(__args)...); } 859623: # 470 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: iterator 859623: emplace_hint(const_iterator __pos, _Args&&... __args) 859623: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 859623: # 604 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: std::pair 859623: insert(const value_type& __x) 859623: { return _M_h.insert(__x); } 859623: 859623: 859623: 859623: std::pair 859623: insert(value_type&& __x) 859623: { return _M_h.insert(std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, 859623: pair> 859623: insert(_Pair&& __x) 859623: { return _M_h.emplace(std::forward<_Pair>(__x)); } 859623: # 643 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: insert(const_iterator __hint, const value_type& __x) 859623: { return _M_h.insert(__hint, __x); } 859623: 859623: 859623: 859623: iterator 859623: insert(const_iterator __hint, value_type&& __x) 859623: { return _M_h.insert(__hint, std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, iterator> 859623: insert(const_iterator __hint, _Pair&& __x) 859623: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } 859623: # 668 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: void 859623: insert(_InputIterator __first, _InputIterator __last) 859623: { _M_h.insert(__first, __last); } 859623: # 680 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: insert(initializer_list __l) 859623: { _M_h.insert(__l); } 859623: # 810 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: erase(const_iterator __position) 859623: { return _M_h.erase(__position); } 859623: 859623: 859623: iterator 859623: erase(iterator __position) 859623: { return _M_h.erase(__position); } 859623: # 832 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: size_type 859623: erase(const key_type& __x) 859623: { return _M_h.erase(__x); } 859623: # 850 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: erase(const_iterator __first, const_iterator __last) 859623: { return _M_h.erase(__first, __last); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: clear() noexcept 859623: { _M_h.clear(); } 859623: # 874 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: swap(unordered_map& __x) 859623: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 859623: { _M_h.swap(__x._M_h); } 859623: # 921 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: hasher 859623: hash_function() const 859623: { return _M_h.hash_function(); } 859623: 859623: 859623: 859623: key_equal 859623: key_eq() const 859623: { return _M_h.key_eq(); } 859623: # 945 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: find(const key_type& __x) 859623: { return _M_h.find(__x); } 859623: # 956 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: const_iterator 859623: find(const key_type& __x) const 859623: { return _M_h.find(__x); } 859623: # 978 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: size_type 859623: count(const key_type& __x) const 859623: { return _M_h.count(__x); } 859623: # 1018 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) 859623: { return _M_h.equal_range(__x); } 859623: # 1030 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) const 859623: { return _M_h.equal_range(__x); } 859623: # 1056 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: mapped_type& 859623: operator[](const key_type& __k) 859623: { return _M_h[__k]; } 859623: 859623: mapped_type& 859623: operator[](key_type&& __k) 859623: { return _M_h[std::move(__k)]; } 859623: # 1073 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: mapped_type& 859623: at(const key_type& __k) 859623: { return _M_h.at(__k); } 859623: 859623: const mapped_type& 859623: at(const key_type& __k) const 859623: { return _M_h.at(__k); } 859623: 859623: 859623: 859623: 859623: 859623: size_type 859623: bucket_count() const noexcept 859623: { return _M_h.bucket_count(); } 859623: 859623: 859623: size_type 859623: max_bucket_count() const noexcept 859623: { return _M_h.max_bucket_count(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_type 859623: bucket_size(size_type __n) const 859623: { return _M_h.bucket_size(__n); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_type 859623: bucket(const key_type& __key) const 859623: { return _M_h.bucket(__key); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: local_iterator 859623: begin(size_type __n) 859623: { return _M_h.begin(__n); } 859623: # 1129 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: const_local_iterator 859623: begin(size_type __n) const 859623: { return _M_h.begin(__n); } 859623: 859623: const_local_iterator 859623: cbegin(size_type __n) const 859623: { return _M_h.cbegin(__n); } 859623: # 1144 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: local_iterator 859623: end(size_type __n) 859623: { return _M_h.end(__n); } 859623: # 1155 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: const_local_iterator 859623: end(size_type __n) const 859623: { return _M_h.end(__n); } 859623: 859623: const_local_iterator 859623: cend(size_type __n) const 859623: { return _M_h.cend(__n); } 859623: 859623: 859623: 859623: 859623: 859623: float 859623: load_factor() const noexcept 859623: { return _M_h.load_factor(); } 859623: 859623: 859623: 859623: float 859623: max_load_factor() const noexcept 859623: { return _M_h.max_load_factor(); } 859623: 859623: 859623: 859623: 859623: 859623: void 859623: max_load_factor(float __z) 859623: { _M_h.max_load_factor(__z); } 859623: # 1192 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: rehash(size_type __n) 859623: { _M_h.rehash(__n); } 859623: # 1203 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: reserve(size_type __n) 859623: { _M_h.reserve(__n); } 859623: 859623: template 859623: friend bool 859623: operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, 859623: const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&); 859623: }; 859623: # 1362 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template, 859623: typename _Pred = equal_to<_Key>, 859623: typename _Alloc = allocator>> 859623: class unordered_multimap 859623: { 859623: typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; 859623: _Hashtable _M_h; 859623: 859623: public: 859623: 859623: 859623: 859623: typedef typename _Hashtable::key_type key_type; 859623: typedef typename _Hashtable::value_type value_type; 859623: typedef typename _Hashtable::mapped_type mapped_type; 859623: typedef typename _Hashtable::hasher hasher; 859623: typedef typename _Hashtable::key_equal key_equal; 859623: typedef typename _Hashtable::allocator_type allocator_type; 859623: 859623: 859623: 859623: 859623: typedef typename _Hashtable::pointer pointer; 859623: typedef typename _Hashtable::const_pointer const_pointer; 859623: typedef typename _Hashtable::reference reference; 859623: typedef typename _Hashtable::const_reference const_reference; 859623: typedef typename _Hashtable::iterator iterator; 859623: typedef typename _Hashtable::const_iterator const_iterator; 859623: typedef typename _Hashtable::local_iterator local_iterator; 859623: typedef typename _Hashtable::const_local_iterator const_local_iterator; 859623: typedef typename _Hashtable::size_type size_type; 859623: typedef typename _Hashtable::difference_type difference_type; 859623: # 1404 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_multimap() = default; 859623: # 1413 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: explicit 859623: unordered_multimap(size_type __n, 859623: const hasher& __hf = hasher(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_h(__n, __hf, __eql, __a) 859623: { } 859623: # 1434 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: unordered_multimap(_InputIterator __first, _InputIterator __last, 859623: size_type __n = 0, 859623: const hasher& __hf = hasher(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_h(__first, __last, __n, __hf, __eql, __a) 859623: { } 859623: 859623: 859623: unordered_multimap(const unordered_multimap&) = default; 859623: 859623: 859623: unordered_multimap(unordered_multimap&&) = default; 859623: 859623: 859623: 859623: 859623: 859623: explicit 859623: unordered_multimap(const allocator_type& __a) 859623: : _M_h(__a) 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: 859623: unordered_multimap(const unordered_multimap& __ummap, 859623: const allocator_type& __a) 859623: : _M_h(__ummap._M_h, __a) 859623: { } 859623: 859623: 859623: 859623: 859623: 859623: 859623: unordered_multimap(unordered_multimap&& __ummap, 859623: const allocator_type& __a) 859623: noexcept( noexcept(_Hashtable(std::move(__ummap._M_h), __a)) ) 859623: : _M_h(std::move(__ummap._M_h), __a) 859623: { } 859623: # 1490 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_multimap(initializer_list __l, 859623: size_type __n = 0, 859623: const hasher& __hf = hasher(), 859623: const key_equal& __eql = key_equal(), 859623: const allocator_type& __a = allocator_type()) 859623: : _M_h(__l, __n, __hf, __eql, __a) 859623: { } 859623: 859623: unordered_multimap(size_type __n, const allocator_type& __a) 859623: : unordered_multimap(__n, hasher(), key_equal(), __a) 859623: { } 859623: 859623: unordered_multimap(size_type __n, const hasher& __hf, 859623: const allocator_type& __a) 859623: : unordered_multimap(__n, __hf, key_equal(), __a) 859623: { } 859623: 859623: template 859623: unordered_multimap(_InputIterator __first, _InputIterator __last, 859623: size_type __n, 859623: const allocator_type& __a) 859623: : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) 859623: { } 859623: 859623: template 859623: unordered_multimap(_InputIterator __first, _InputIterator __last, 859623: size_type __n, const hasher& __hf, 859623: const allocator_type& __a) 859623: : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) 859623: { } 859623: 859623: unordered_multimap(initializer_list __l, 859623: size_type __n, 859623: const allocator_type& __a) 859623: : unordered_multimap(__l, __n, hasher(), key_equal(), __a) 859623: { } 859623: 859623: unordered_multimap(initializer_list __l, 859623: size_type __n, const hasher& __hf, 859623: const allocator_type& __a) 859623: : unordered_multimap(__l, __n, __hf, key_equal(), __a) 859623: { } 859623: # 1577 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_multimap& 859623: operator=(const unordered_multimap&) = default; 859623: 859623: 859623: unordered_multimap& 859623: operator=(unordered_multimap&&) = default; 859623: # 1595 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: unordered_multimap& 859623: operator=(initializer_list __l) 859623: { 859623: _M_h = __l; 859623: return *this; 859623: } 859623: 859623: 859623: allocator_type 859623: get_allocator() const noexcept 859623: { return _M_h.get_allocator(); } 859623: 859623: 859623: 859623: 859623: [[__nodiscard__]] bool 859623: empty() const noexcept 859623: { return _M_h.empty(); } 859623: 859623: 859623: size_type 859623: size() const noexcept 859623: { return _M_h.size(); } 859623: 859623: 859623: size_type 859623: max_size() const noexcept 859623: { return _M_h.max_size(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: begin() noexcept 859623: { return _M_h.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: begin() const noexcept 859623: { return _M_h.begin(); } 859623: 859623: const_iterator 859623: cbegin() const noexcept 859623: { return _M_h.begin(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: iterator 859623: end() noexcept 859623: { return _M_h.end(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: const_iterator 859623: end() const noexcept 859623: { return _M_h.end(); } 859623: 859623: const_iterator 859623: cend() const noexcept 859623: { return _M_h.end(); } 859623: # 1687 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: iterator 859623: emplace(_Args&&... __args) 859623: { return _M_h.emplace(std::forward<_Args>(__args)...); } 859623: # 1714 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: iterator 859623: emplace_hint(const_iterator __pos, _Args&&... __args) 859623: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } 859623: # 1729 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: insert(const value_type& __x) 859623: { return _M_h.insert(__x); } 859623: 859623: iterator 859623: insert(value_type&& __x) 859623: { return _M_h.insert(std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, iterator> 859623: insert(_Pair&& __x) 859623: { return _M_h.emplace(std::forward<_Pair>(__x)); } 859623: # 1763 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: insert(const_iterator __hint, const value_type& __x) 859623: { return _M_h.insert(__hint, __x); } 859623: 859623: 859623: 859623: iterator 859623: insert(const_iterator __hint, value_type&& __x) 859623: { return _M_h.insert(__hint, std::move(__x)); } 859623: 859623: template 859623: __enable_if_t::value, iterator> 859623: insert(const_iterator __hint, _Pair&& __x) 859623: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } 859623: # 1788 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: void 859623: insert(_InputIterator __first, _InputIterator __last) 859623: { _M_h.insert(__first, __last); } 859623: # 1801 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: insert(initializer_list __l) 859623: { _M_h.insert(__l); } 859623: # 1870 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: erase(const_iterator __position) 859623: { return _M_h.erase(__position); } 859623: 859623: 859623: iterator 859623: erase(iterator __position) 859623: { return _M_h.erase(__position); } 859623: # 1891 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: size_type 859623: erase(const key_type& __x) 859623: { return _M_h.erase(__x); } 859623: # 1910 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: erase(const_iterator __first, const_iterator __last) 859623: { return _M_h.erase(__first, __last); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: clear() noexcept 859623: { _M_h.clear(); } 859623: # 1934 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: swap(unordered_multimap& __x) 859623: noexcept( noexcept(_M_h.swap(__x._M_h)) ) 859623: { _M_h.swap(__x._M_h); } 859623: # 1984 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: hasher 859623: hash_function() const 859623: { return _M_h.hash_function(); } 859623: 859623: 859623: 859623: key_equal 859623: key_eq() const 859623: { return _M_h.key_eq(); } 859623: # 2008 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: iterator 859623: find(const key_type& __x) 859623: { return _M_h.find(__x); } 859623: # 2019 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: const_iterator 859623: find(const key_type& __x) const 859623: { return _M_h.find(__x); } 859623: # 2037 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: size_type 859623: count(const key_type& __x) const 859623: { return _M_h.count(__x); } 859623: # 2075 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) 859623: { return _M_h.equal_range(__x); } 859623: # 2087 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: std::pair 859623: equal_range(const key_type& __x) const 859623: { return _M_h.equal_range(__x); } 859623: # 2103 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: size_type 859623: bucket_count() const noexcept 859623: { return _M_h.bucket_count(); } 859623: 859623: 859623: size_type 859623: max_bucket_count() const noexcept 859623: { return _M_h.max_bucket_count(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_type 859623: bucket_size(size_type __n) const 859623: { return _M_h.bucket_size(__n); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: size_type 859623: bucket(const key_type& __key) const 859623: { return _M_h.bucket(__key); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: local_iterator 859623: begin(size_type __n) 859623: { return _M_h.begin(__n); } 859623: # 2147 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: const_local_iterator 859623: begin(size_type __n) const 859623: { return _M_h.begin(__n); } 859623: 859623: const_local_iterator 859623: cbegin(size_type __n) const 859623: { return _M_h.cbegin(__n); } 859623: # 2162 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: local_iterator 859623: end(size_type __n) 859623: { return _M_h.end(__n); } 859623: # 2173 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: const_local_iterator 859623: end(size_type __n) const 859623: { return _M_h.end(__n); } 859623: 859623: const_local_iterator 859623: cend(size_type __n) const 859623: { return _M_h.cend(__n); } 859623: 859623: 859623: 859623: 859623: 859623: float 859623: load_factor() const noexcept 859623: { return _M_h.load_factor(); } 859623: 859623: 859623: 859623: float 859623: max_load_factor() const noexcept 859623: { return _M_h.max_load_factor(); } 859623: 859623: 859623: 859623: 859623: 859623: void 859623: max_load_factor(float __z) 859623: { _M_h.max_load_factor(__z); } 859623: # 2210 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: rehash(size_type __n) 859623: { _M_h.rehash(__n); } 859623: # 2221 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: void 859623: reserve(size_type __n) 859623: { _M_h.reserve(__n); } 859623: 859623: template 859623: friend bool 859623: operator==(const unordered_multimap<_Key1, _Tp1, 859623: _Hash1, _Pred1, _Alloc1>&, 859623: const unordered_multimap<_Key1, _Tp1, 859623: _Hash1, _Pred1, _Alloc1>&); 859623: }; 859623: # 2360 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: template 859623: inline void 859623: swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 859623: unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 859623: noexcept(noexcept(__x.swap(__y))) 859623: { __x.swap(__y); } 859623: 859623: template 859623: inline void 859623: swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 859623: unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 859623: noexcept(noexcept(__x.swap(__y))) 859623: { __x.swap(__y); } 859623: 859623: template 859623: inline bool 859623: operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 859623: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 859623: { return __x._M_h._M_equal(__y._M_h); } 859623: 859623: 859623: template 859623: inline bool 859623: operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 859623: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 859623: { return !(__x == __y); } 859623: 859623: 859623: template 859623: inline bool 859623: operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 859623: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 859623: { return __x._M_h._M_equal(__y._M_h); } 859623: 859623: 859623: template 859623: inline bool 859623: operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, 859623: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) 859623: { return !(__x == __y); } 859623: 859623: 859623: 859623: # 2454 "/usr/arm-linux-gnueabi/include/c++/15/bits/unordered_map.h" 3 859623: 859623: } 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/unordered_map" 2 3 859623: # 59 "/usr/arm-linux-gnueabi/include/c++/15/unordered_map" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 60 "/usr/arm-linux-gnueabi/include/c++/15/unordered_map" 2 3 859623: # 26 "/<>/_include/workflow/HttpUtil.h" 2 859623: # 1 "/<>/_include/workflow/http_parser.h" 1 859623: # 22 "/<>/_include/workflow/http_parser.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 23 "/<>/_include/workflow/http_parser.h" 2 859623: # 1 "/<>/_include/workflow/list.h" 1 859623: # 14 "/<>/_include/workflow/list.h" 859623: 859623: # 14 "/<>/_include/workflow/list.h" 859623: struct list_head { 859623: struct list_head *next, *prev; 859623: }; 859623: # 30 "/<>/_include/workflow/list.h" 859623: static inline void INIT_LIST_HEAD(struct list_head *list) 859623: { 859623: list->next = list; 859623: list->prev = list; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: static inline void __list_add(struct list_head *entry, 859623: struct list_head *prev, 859623: struct list_head *next) 859623: { 859623: next->prev = entry; 859623: entry->next = next; 859623: entry->prev = prev; 859623: prev->next = entry; 859623: } 859623: # 60 "/<>/_include/workflow/list.h" 859623: static inline void list_add(struct list_head *entry, struct list_head *head) 859623: { 859623: __list_add(entry, head, head->next); 859623: } 859623: # 73 "/<>/_include/workflow/list.h" 859623: static inline void list_add_tail(struct list_head *entry, 859623: struct list_head *head) 859623: { 859623: __list_add(entry, head->prev, head); 859623: } 859623: # 86 "/<>/_include/workflow/list.h" 859623: static inline void __list_del(struct list_head *prev, struct list_head *next) 859623: { 859623: next->prev = prev; 859623: prev->next = next; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: static inline void list_del(struct list_head *entry) 859623: { 859623: __list_del(entry->prev, entry->next); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: static inline void list_move(struct list_head *entry, struct list_head *head) 859623: { 859623: __list_del(entry->prev, entry->next); 859623: list_add(entry, head); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: static inline void list_move_tail(struct list_head *entry, 859623: struct list_head *head) 859623: { 859623: __list_del(entry->prev, entry->next); 859623: list_add_tail(entry, head); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: static inline int list_empty(const struct list_head *head) 859623: { 859623: return head->next == head; 859623: } 859623: 859623: static inline void __list_splice(const struct list_head *list, 859623: struct list_head *prev, 859623: struct list_head *next) 859623: { 859623: struct list_head *first = list->next; 859623: struct list_head *last = list->prev; 859623: 859623: first->prev = prev; 859623: prev->next = first; 859623: 859623: last->next = next; 859623: next->prev = last; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: static inline void list_splice(const struct list_head *list, 859623: struct list_head *head) 859623: { 859623: if (!list_empty(list)) 859623: __list_splice(list, head, head->next); 859623: } 859623: # 168 "/<>/_include/workflow/list.h" 859623: static inline void list_splice_init(struct list_head *list, 859623: struct list_head *head) 859623: { 859623: if (!list_empty(list)) { 859623: __list_splice(list, head, head->next); 859623: INIT_LIST_HEAD(list); 859623: } 859623: } 859623: # 227 "/<>/_include/workflow/list.h" 859623: struct slist_node { 859623: struct slist_node *next; 859623: }; 859623: 859623: struct slist_head { 859623: struct slist_node first, *last; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: static inline void INIT_SLIST_HEAD(struct slist_head *list) 859623: { 859623: list->first.next = (struct slist_node *)0; 859623: list->last = &list->first; 859623: } 859623: 859623: static inline void slist_add_after(struct slist_node *entry, 859623: struct slist_node *prev, 859623: struct slist_head *list) 859623: { 859623: entry->next = prev->next; 859623: prev->next = entry; 859623: if (!entry->next) 859623: list->last = entry; 859623: } 859623: 859623: static inline void slist_add_head(struct slist_node *entry, 859623: struct slist_head *list) 859623: { 859623: slist_add_after(entry, &list->first, list); 859623: } 859623: 859623: static inline void slist_add_tail(struct slist_node *entry, 859623: struct slist_head *list) 859623: { 859623: entry->next = (struct slist_node *)0; 859623: list->last->next = entry; 859623: list->last = entry; 859623: } 859623: 859623: static inline void slist_del_after(struct slist_node *prev, 859623: struct slist_head *list) 859623: { 859623: prev->next = prev->next->next; 859623: if (!prev->next) 859623: list->last = prev; 859623: } 859623: 859623: static inline void slist_del_head(struct slist_head *list) 859623: { 859623: slist_del_after(&list->first, list); 859623: } 859623: 859623: static inline int slist_empty(const struct slist_head *list) 859623: { 859623: return !list->first.next; 859623: } 859623: 859623: static inline void __slist_splice(const struct slist_head *list, 859623: struct slist_node *prev, 859623: struct slist_head *head) 859623: { 859623: list->last->next = prev->next; 859623: prev->next = list->first.next; 859623: if (!list->last->next) 859623: head->last = list->last; 859623: } 859623: 859623: static inline void slist_splice(const struct slist_head *list, 859623: struct slist_node *prev, 859623: struct slist_head *head) 859623: { 859623: if (!slist_empty(list)) 859623: __slist_splice(list, prev, head); 859623: } 859623: 859623: static inline void slist_splice_init(struct slist_head *list, 859623: struct slist_node *prev, 859623: struct slist_head *head) 859623: { 859623: if (!slist_empty(list)) { 859623: __slist_splice(list, prev, head); 859623: INIT_SLIST_HEAD(list); 859623: } 859623: } 859623: # 24 "/<>/_include/workflow/http_parser.h" 2 859623: 859623: 859623: 859623: typedef struct __http_parser 859623: { 859623: int header_state; 859623: int chunk_state; 859623: size_t header_offset; 859623: size_t chunk_offset; 859623: size_t content_length; 859623: size_t transfer_length; 859623: char *version; 859623: char *method; 859623: char *uri; 859623: char *code; 859623: char *phrase; 859623: struct list_head header_list; 859623: char namebuf[64]; 859623: void *msgbuf; 859623: size_t msgsize; 859623: size_t bufsize; 859623: char has_connection; 859623: char has_content_length; 859623: char has_keep_alive; 859623: char expect_continue; 859623: char keep_alive; 859623: char chunked; 859623: char complete; 859623: char is_resp; 859623: } http_parser_t; 859623: 859623: typedef struct __http_header_cursor 859623: { 859623: const struct list_head *head; 859623: const struct list_head *next; 859623: } http_header_cursor_t; 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: void http_parser_init(int is_resp, http_parser_t *parser); 859623: int http_parser_append_message(const void *buf, size_t *n, 859623: http_parser_t *parser); 859623: int http_parser_get_body(const void **body, size_t *size, 859623: const http_parser_t *parser); 859623: int http_parser_header_complete(const http_parser_t *parser); 859623: int http_parser_set_method(const char *method, http_parser_t *parser); 859623: int http_parser_set_uri(const char *uri, http_parser_t *parser); 859623: int http_parser_set_version(const char *version, http_parser_t *parser); 859623: int http_parser_set_code(const char *code, http_parser_t *parser); 859623: int http_parser_set_phrase(const char *phrase, http_parser_t *parser); 859623: int http_parser_add_header(const void *name, size_t name_len, 859623: const void *value, size_t value_len, 859623: http_parser_t *parser); 859623: int http_parser_set_header(const void *name, size_t name_len, 859623: const void *value, size_t value_len, 859623: http_parser_t *parser); 859623: void http_parser_deinit(http_parser_t *parser); 859623: 859623: int http_header_cursor_next(const void **name, size_t *name_len, 859623: const void **value, size_t *value_len, 859623: http_header_cursor_t *cursor); 859623: int http_header_cursor_find(const void *name, size_t name_len, 859623: const void **value, size_t *value_len, 859623: http_header_cursor_t *cursor); 859623: int http_header_cursor_erase(http_header_cursor_t *cursor); 859623: 859623: 859623: } 859623: 859623: 859623: static inline const char *http_parser_get_method(const http_parser_t *parser) 859623: { 859623: return parser->method; 859623: } 859623: 859623: static inline const char *http_parser_get_uri(const http_parser_t *parser) 859623: { 859623: return parser->uri; 859623: } 859623: 859623: static inline const char *http_parser_get_version(const http_parser_t *parser) 859623: { 859623: return parser->version; 859623: } 859623: 859623: static inline const char *http_parser_get_code(const http_parser_t *parser) 859623: { 859623: return parser->code; 859623: } 859623: 859623: static inline const char *http_parser_get_phrase(const http_parser_t *parser) 859623: { 859623: return parser->phrase; 859623: } 859623: 859623: static inline int http_parser_chunked(const http_parser_t *parser) 859623: { 859623: return parser->chunked; 859623: } 859623: 859623: static inline int http_parser_keep_alive(const http_parser_t *parser) 859623: { 859623: return parser->keep_alive; 859623: } 859623: 859623: static inline int http_parser_has_connection(const http_parser_t *parser) 859623: { 859623: return parser->has_connection; 859623: } 859623: 859623: static inline int http_parser_has_content_length(const http_parser_t *parser) 859623: { 859623: return parser->has_content_length; 859623: } 859623: 859623: static inline int http_parser_has_keep_alive(const http_parser_t *parser) 859623: { 859623: return parser->has_keep_alive; 859623: } 859623: 859623: static inline void http_parser_close_message(http_parser_t *parser) 859623: { 859623: parser->complete = 1; 859623: } 859623: 859623: static inline void http_header_cursor_init(http_header_cursor_t *cursor, 859623: const http_parser_t *parser) 859623: { 859623: cursor->head = &parser->header_list; 859623: cursor->next = cursor->head; 859623: } 859623: 859623: static inline void http_header_cursor_rewind(http_header_cursor_t *cursor) 859623: { 859623: cursor->next = cursor->head; 859623: } 859623: 859623: static inline void http_header_cursor_deinit(http_header_cursor_t *cursor) 859623: { 859623: } 859623: # 27 "/<>/_include/workflow/HttpUtil.h" 2 859623: # 1 "/<>/_include/workflow/HttpMessage.h" 1 859623: # 22 "/<>/_include/workflow/HttpMessage.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 1 3 859623: # 23 "/<>/_include/workflow/HttpMessage.h" 2 859623: 859623: 859623: 859623: 859623: # 1 "/<>/_include/workflow/ProtocolMessage.h" 1 859623: # 23 "/<>/_include/workflow/ProtocolMessage.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 24 "/<>/_include/workflow/ProtocolMessage.h" 2 859623: 859623: # 1 "/<>/_include/workflow/Communicator.h" 1 859623: # 23 "/<>/_include/workflow/Communicator.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/socket.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: 859623: # 24 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern "C" { 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_iovec.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/types/struct_iovec.h" 3 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/types/struct_iovec.h" 2 3 859623: 859623: 859623: struct iovec 859623: { 859623: void *iov_base; 859623: size_t iov_len; 859623: }; 859623: # 27 "/usr/arm-linux-gnueabi/include/sys/socket.h" 2 3 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 29 "/usr/arm-linux-gnueabi/include/sys/socket.h" 2 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/socket.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/bits/socket.h" 3 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 28 "/usr/arm-linux-gnueabi/include/bits/socket.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: typedef __socklen_t socklen_t; 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/socket_type.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/socket_type.h" 3 859623: enum __socket_type 859623: { 859623: SOCK_STREAM = 1, 859623: 859623: 859623: SOCK_DGRAM = 2, 859623: 859623: 859623: SOCK_RAW = 3, 859623: 859623: SOCK_RDM = 4, 859623: 859623: SOCK_SEQPACKET = 5, 859623: 859623: 859623: SOCK_DCCP = 6, 859623: 859623: SOCK_PACKET = 10, 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: SOCK_CLOEXEC = 02000000, 859623: 859623: 859623: SOCK_NONBLOCK = 00004000 859623: 859623: 859623: }; 859623: # 39 "/usr/arm-linux-gnueabi/include/bits/socket.h" 2 3 859623: # 181 "/usr/arm-linux-gnueabi/include/bits/socket.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/sockaddr.h" 1 3 859623: # 28 "/usr/arm-linux-gnueabi/include/bits/sockaddr.h" 3 859623: typedef unsigned short int sa_family_t; 859623: # 182 "/usr/arm-linux-gnueabi/include/bits/socket.h" 2 3 859623: 859623: 859623: struct __attribute__ ((__may_alias__)) sockaddr 859623: { 859623: sa_family_t sa_family; 859623: char sa_data[14]; 859623: }; 859623: # 197 "/usr/arm-linux-gnueabi/include/bits/socket.h" 3 859623: struct __attribute__ ((__may_alias__)) sockaddr_storage 859623: { 859623: sa_family_t ss_family; 859623: char __ss_padding[(128 - (sizeof (unsigned short int)) - sizeof (unsigned long int))]; 859623: unsigned long int __ss_align; 859623: }; 859623: 859623: 859623: 859623: enum 859623: { 859623: MSG_OOB = 0x01, 859623: 859623: MSG_PEEK = 0x02, 859623: 859623: MSG_DONTROUTE = 0x04, 859623: 859623: 859623: 859623: MSG_TRYHARD = MSG_DONTROUTE, 859623: 859623: 859623: MSG_CTRUNC = 0x08, 859623: 859623: MSG_PROXY = 0x10, 859623: 859623: MSG_TRUNC = 0x20, 859623: 859623: MSG_DONTWAIT = 0x40, 859623: 859623: MSG_EOR = 0x80, 859623: 859623: MSG_WAITALL = 0x100, 859623: 859623: MSG_FIN = 0x200, 859623: 859623: MSG_SYN = 0x400, 859623: 859623: MSG_CONFIRM = 0x800, 859623: 859623: MSG_RST = 0x1000, 859623: 859623: MSG_ERRQUEUE = 0x2000, 859623: 859623: MSG_NOSIGNAL = 0x4000, 859623: 859623: MSG_MORE = 0x8000, 859623: 859623: MSG_WAITFORONE = 0x10000, 859623: 859623: MSG_BATCH = 0x40000, 859623: 859623: MSG_SOCK_DEVMEM = 0x2000000, 859623: 859623: MSG_ZEROCOPY = 0x4000000, 859623: 859623: MSG_FASTOPEN = 0x20000000, 859623: 859623: 859623: MSG_CMSG_CLOEXEC = 0x40000000 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: struct msghdr 859623: { 859623: void *msg_name; 859623: socklen_t msg_namelen; 859623: 859623: struct iovec *msg_iov; 859623: size_t msg_iovlen; 859623: 859623: void *msg_control; 859623: size_t msg_controllen; 859623: 859623: 859623: 859623: 859623: int msg_flags; 859623: }; 859623: 859623: 859623: struct cmsghdr 859623: { 859623: size_t cmsg_len; 859623: 859623: 859623: 859623: 859623: int cmsg_level; 859623: int cmsg_type; 859623: 859623: __extension__ unsigned char __cmsg_data []; 859623: 859623: }; 859623: # 319 "/usr/arm-linux-gnueabi/include/bits/socket.h" 3 859623: extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, 859623: struct cmsghdr *__cmsg) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern __inline __attribute__ ((__gnu_inline__)) struct cmsghdr * 859623: __attribute__ ((__leaf__)) __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) noexcept (true) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: unsigned char * __msg_control_ptr = (unsigned char *) __mhdr->msg_control; 859623: unsigned char * __cmsg_ptr = (unsigned char *) __cmsg; 859623: 859623: size_t __size_needed = sizeof (struct cmsghdr) 859623: + ((sizeof (size_t) - ((__cmsg->cmsg_len) & (sizeof (size_t) - 1))) & (sizeof (size_t) - 1)); 859623: 859623: 859623: if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) 859623: return (struct cmsghdr *) 0; 859623: 859623: 859623: 859623: if (((size_t) 859623: (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr) 859623: < __size_needed) 859623: || ((size_t) 859623: (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr 859623: - __size_needed) 859623: < __cmsg->cmsg_len)) 859623: 859623: return (struct cmsghdr *) 0; 859623: 859623: 859623: __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg 859623: + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))); 859623: return __cmsg; 859623: } 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: SCM_RIGHTS = 0x01 859623: 859623: 859623: , SCM_CREDENTIALS = 0x02 859623: 859623: , SCM_SECURITY = 0x03 859623: 859623: , SCM_PIDFD = 0x04 859623: 859623: 859623: }; 859623: 859623: 859623: 859623: struct ucred 859623: { 859623: pid_t pid; 859623: uid_t uid; 859623: gid_t gid; 859623: }; 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm/socket.h" 1 3 859623: # 1 "/usr/arm-linux-gnueabi/include/asm-generic/socket.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/asm/sockios.h" 1 3 859623: # 1 "/usr/arm-linux-gnueabi/include/asm-generic/sockios.h" 1 3 859623: # 2 "/usr/arm-linux-gnueabi/include/asm/sockios.h" 2 3 859623: # 7 "/usr/arm-linux-gnueabi/include/asm-generic/socket.h" 2 3 859623: # 2 "/usr/arm-linux-gnueabi/include/asm/socket.h" 2 3 859623: # 393 "/usr/arm-linux-gnueabi/include/bits/socket.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct linger 859623: { 859623: int l_onoff; 859623: int l_linger; 859623: }; 859623: # 34 "/usr/arm-linux-gnueabi/include/sys/socket.h" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/struct_osockaddr.h" 1 3 859623: 859623: 859623: 859623: 859623: 859623: struct osockaddr 859623: { 859623: unsigned short int sa_family; 859623: unsigned char sa_data[14]; 859623: }; 859623: # 37 "/usr/arm-linux-gnueabi/include/sys/socket.h" 2 3 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: SHUT_RD = 0, 859623: 859623: SHUT_WR, 859623: 859623: SHUT_RDWR 859623: 859623: }; 859623: # 90 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: struct mmsghdr 859623: { 859623: struct msghdr msg_hdr; 859623: unsigned int msg_len; 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int socket (int __domain, int __type, int __protocol) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern int socketpair (int __domain, int __type, int __protocol, 859623: int __fds[2]) noexcept (true); 859623: 859623: 859623: extern int bind (int __fd, const struct sockaddr * __addr, socklen_t __len) 859623: noexcept (true); 859623: 859623: 859623: extern int getsockname (int __fd, struct sockaddr *__restrict __addr, 859623: socklen_t *__restrict __len) noexcept (true); 859623: # 126 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int connect (int __fd, const struct sockaddr * __addr, socklen_t __len); 859623: 859623: 859623: 859623: extern int getpeername (int __fd, struct sockaddr *__restrict __addr, 859623: socklen_t *__restrict __len) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern ssize_t sendto (int __fd, const void *__buf, size_t __n, 859623: int __flags, const struct sockaddr * __addr, 859623: socklen_t __addr_len); 859623: # 163 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, 859623: int __flags, struct sockaddr *__restrict __addr, 859623: socklen_t *__restrict __addr_len); 859623: # 178 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern ssize_t sendmsg (int __fd, const struct msghdr *__message, int __flags) __asm__ ("" "__sendmsg64") 859623: 859623: ; 859623: # 199 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int sendmmsg (int __fd, struct mmsghdr *__vmessages, unsigned int __vlen, int __flags) __asm__ ("" "__sendmmsg64") 859623: 859623: ; 859623: # 219 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags) __asm__ ("" "__recvmsg64") 859623: 859623: ; 859623: # 240 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int recvmmsg (int __fd, struct mmsghdr *__vmessages, unsigned int __vlen, int __flags, struct timespec *__tmo) __asm__ ("" "__recvmmsg64") 859623: 859623: 859623: ; 859623: # 260 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, socklen_t *__restrict __optlen) noexcept (true) __asm__ ("" "__getsockopt64") 859623: 859623: 859623: 859623: ; 859623: # 281 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int setsockopt (int __fd, int __level, int __optname, const void *__optval, socklen_t __optlen) noexcept (true) __asm__ ("" "__setsockopt64") 859623: 859623: 859623: ; 859623: # 296 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int listen (int __fd, int __n) noexcept (true); 859623: # 306 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int accept (int __fd, struct sockaddr *__restrict __addr, 859623: socklen_t *__restrict __addr_len); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int accept4 (int __fd, struct sockaddr *__restrict __addr, 859623: socklen_t *__restrict __addr_len, int __flags); 859623: # 324 "/usr/arm-linux-gnueabi/include/sys/socket.h" 3 859623: extern int shutdown (int __fd, int __how) noexcept (true); 859623: 859623: 859623: 859623: 859623: extern int sockatmark (int __fd) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int isfdtype (int __fd, int __fdtype) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/socket2.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/socket2.h" 3 859623: extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen, 859623: int __flags); 859623: extern ssize_t __recv_alias (int __fd, void *__buf, size_t __n, int __flags) __asm__ ("" "recv") 859623: ; 859623: extern ssize_t __recv_chk_warn (int __fd, void *__buf, size_t __n, size_t __buflen, int __flags) __asm__ ("" "__recv_chk") 859623: 859623: 859623: __attribute__((__warning__ ("recv called with bigger length than size of destination " "buffer"))) 859623: ; 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) ssize_t 859623: recv (int __fd, void * __buf, size_t __n, 859623: int __flags) 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__buf, 0); 859623: 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))))))) 859623: return __recv_alias (__fd, __buf, __n, __flags); 859623: 859623: 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))))) 859623: return __recv_chk_warn (__fd, __buf, __n, __sz, __flags); 859623: 859623: return __recv_chk (__fd, __buf, __n, __sz, __flags); 859623: } 859623: 859623: extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, 859623: size_t __buflen, int __flags, 859623: struct sockaddr *__restrict __addr, 859623: socklen_t *__restrict __addr_len); 859623: extern ssize_t __recvfrom_alias (int __fd, void *__restrict __buf, size_t __n, int __flags, struct sockaddr *__restrict __addr, socklen_t *__restrict __addr_len) __asm__ ("" "recvfrom") 859623: 859623: 859623: ; 859623: extern ssize_t __recvfrom_chk_warn (int __fd, void *__restrict __buf, size_t __n, size_t __buflen, int __flags, struct sockaddr *__restrict __addr, socklen_t *__restrict __addr_len) __asm__ ("" "__recvfrom_chk") 859623: 859623: 859623: 859623: 859623: __attribute__((__warning__ ("recvfrom called with bigger length than size of " "destination buffer"))) 859623: ; 859623: 859623: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) ssize_t 859623: recvfrom (int __fd, void * __restrict __buf, 859623: size_t __n, int __flags, 859623: struct sockaddr *__restrict __addr, socklen_t *__restrict __addr_len) 859623: 859623: 859623: 859623: { 859623: size_t __sz = __builtin_object_size (__buf, 0); 859623: 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))))))) 859623: return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); 859623: 859623: 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))))) 859623: return __recvfrom_chk_warn (__fd, __buf, __n, __sz, __flags, __addr, 859623: __addr_len); 859623: 859623: return __recvfrom_chk (__fd, __buf, __n, __sz, __flags, __addr, __addr_len); 859623: } 859623: # 344 "/usr/arm-linux-gnueabi/include/sys/socket.h" 2 3 859623: 859623: 859623: } 859623: # 24 "/<>/_include/workflow/Communicator.h" 2 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/uio.h" 1 3 859623: # 31 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern "C" { 859623: # 41 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern ssize_t readv (int __fd, const struct iovec *__iovec, int __count) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: # 52 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern ssize_t writev (int __fd, const struct iovec *__iovec, int __count) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: # 86 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern ssize_t preadv (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "preadv64") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: extern ssize_t pwritev (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "pwritev64") 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: # 110 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern ssize_t preadv64 (int __fd, const struct iovec *__iovec, int __count, 859623: __off64_t __offset) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: # 123 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern ssize_t pwritev64 (int __fd, const struct iovec *__iovec, int __count, 859623: __off64_t __offset) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: # 143 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern ssize_t pwritev2 (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset, int __flags) __asm__ ("" "pwritev64v2") 859623: 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: extern ssize_t preadv2 (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset, int __flags) __asm__ ("" "preadv64v2") 859623: 859623: 859623: 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: # 161 "/usr/arm-linux-gnueabi/include/sys/uio.h" 3 859623: extern ssize_t preadv64v2 (int __fp, const struct iovec *__iovec, 859623: int __count, __off64_t __offset, 859623: int ___flags) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: 859623: 859623: extern ssize_t pwritev64v2 (int __fd, const struct iovec *__iodev, 859623: int __count, __off64_t __offset, 859623: int __flags) 859623: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/uio-ext.h" 1 3 859623: # 26 "/usr/arm-linux-gnueabi/include/bits/uio-ext.h" 3 859623: extern "C" { 859623: 859623: 859623: extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec, 859623: unsigned long int __liovcnt, 859623: const struct iovec *__rvec, 859623: unsigned long int __riovcnt, 859623: unsigned long int __flags) 859623: noexcept (true); 859623: 859623: 859623: extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec, 859623: unsigned long int __liovcnt, 859623: const struct iovec *__rvec, 859623: unsigned long int __riovcnt, 859623: unsigned long int __flags) 859623: noexcept (true); 859623: # 54 "/usr/arm-linux-gnueabi/include/bits/uio-ext.h" 3 859623: } 859623: # 180 "/usr/arm-linux-gnueabi/include/sys/uio.h" 2 3 859623: # 25 "/<>/_include/workflow/Communicator.h" 2 859623: 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 27 "/<>/_include/workflow/Communicator.h" 2 859623: 859623: 859623: 859623: # 1 "/<>/_include/workflow/poller.h" 1 859623: # 27 "/<>/_include/workflow/poller.h" 859623: 859623: # 27 "/<>/_include/workflow/poller.h" 859623: typedef struct __poller poller_t; 859623: typedef struct __poller_message poller_message_t; 859623: 859623: struct __poller_message 859623: { 859623: int (*append)(const void *, size_t *, poller_message_t *); 859623: char data[0]; 859623: }; 859623: 859623: struct poller_data 859623: { 859623: # 51 "/<>/_include/workflow/poller.h" 859623: short operation; 859623: unsigned short iovcnt; 859623: int fd; 859623: SSL *ssl; 859623: union 859623: { 859623: poller_message_t *(*create_message)(void *); 859623: int (*partial_written)(size_t, void *); 859623: void *(*accept)(const struct sockaddr *, socklen_t, int, void *); 859623: void *(*recvfrom)(const struct sockaddr *, socklen_t, 859623: const void *, size_t, void *); 859623: void *(*event)(void *); 859623: void *(*notify)(void *, void *); 859623: }; 859623: void *context; 859623: union 859623: { 859623: poller_message_t *message; 859623: struct iovec *write_iov; 859623: void *result; 859623: }; 859623: }; 859623: 859623: struct poller_result 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: int state; 859623: int error; 859623: struct poller_data data; 859623: 859623: }; 859623: 859623: struct poller_params 859623: { 859623: size_t max_open_files; 859623: void (*callback)(struct poller_result *, void *); 859623: void *context; 859623: }; 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: poller_t *poller_create(const struct poller_params *params); 859623: int poller_start(poller_t *poller); 859623: int poller_add(const struct poller_data *data, int timeout, poller_t *poller); 859623: int poller_del(int fd, poller_t *poller); 859623: int poller_mod(const struct poller_data *data, int timeout, poller_t *poller); 859623: int poller_set_timeout(int fd, int timeout, poller_t *poller); 859623: int poller_add_timer(const struct timespec *value, void *context, void **timer, 859623: poller_t *poller); 859623: int poller_del_timer(void *timer, poller_t *poller); 859623: void poller_set_callback(void (*callback)(struct poller_result *, void *), 859623: poller_t *poller); 859623: void poller_stop(poller_t *poller); 859623: void poller_destroy(poller_t *poller); 859623: 859623: 859623: } 859623: # 31 "/<>/_include/workflow/Communicator.h" 2 859623: 859623: class CommConnection 859623: { 859623: public: 859623: virtual ~CommConnection() { } 859623: }; 859623: 859623: class CommTarget 859623: { 859623: public: 859623: int init(const struct sockaddr *addr, socklen_t addrlen, 859623: int connect_timeout, int response_timeout); 859623: void deinit(); 859623: 859623: public: 859623: void get_addr(const struct sockaddr **addr, socklen_t *addrlen) const 859623: { 859623: *addr = this->addr; 859623: *addrlen = this->addrlen; 859623: } 859623: 859623: int has_idle_conn() const { return !list_empty(&this->idle_list); } 859623: 859623: protected: 859623: void set_ssl(SSL_CTX *ssl_ctx, int ssl_connect_timeout) 859623: { 859623: this->ssl_ctx = ssl_ctx; 859623: this->ssl_connect_timeout = ssl_connect_timeout; 859623: } 859623: 859623: SSL_CTX *get_ssl_ctx() const { return this->ssl_ctx; } 859623: 859623: private: 859623: virtual int create_connect_fd() 859623: { 859623: return socket(this->addr->sa_family, 859623: # 66 "/<>/_include/workflow/Communicator.h" 3 859623: SOCK_STREAM 859623: # 66 "/<>/_include/workflow/Communicator.h" 859623: , 0); 859623: } 859623: 859623: virtual CommConnection *new_connection(int connect_fd) 859623: { 859623: return new CommConnection; 859623: } 859623: 859623: virtual int init_ssl(SSL *ssl) { return 0; } 859623: 859623: public: 859623: virtual void release() { } 859623: 859623: private: 859623: struct sockaddr *addr; 859623: socklen_t addrlen; 859623: int connect_timeout; 859623: int response_timeout; 859623: int ssl_connect_timeout; 859623: SSL_CTX *ssl_ctx; 859623: 859623: private: 859623: struct list_head idle_list; 859623: pthread_mutex_t mutex; 859623: 859623: public: 859623: virtual ~CommTarget() { } 859623: friend class CommServiceTarget; 859623: friend class Communicator; 859623: }; 859623: 859623: class CommMessageOut 859623: { 859623: private: 859623: virtual int encode(struct iovec vectors[], int max) = 0; 859623: 859623: public: 859623: virtual ~CommMessageOut() { } 859623: friend class Communicator; 859623: }; 859623: 859623: class CommMessageIn : private poller_message_t 859623: { 859623: private: 859623: virtual int append(const void *buf, size_t *size) = 0; 859623: 859623: protected: 859623: 859623: virtual int feedback(const void *buf, size_t size); 859623: 859623: 859623: virtual void renew(); 859623: 859623: 859623: virtual CommMessageIn *inner() { return this; } 859623: 859623: private: 859623: struct CommConnEntry *entry; 859623: 859623: public: 859623: virtual ~CommMessageIn() { } 859623: friend class Communicator; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: class CommSession 859623: { 859623: private: 859623: virtual CommMessageOut *message_out() = 0; 859623: virtual CommMessageIn *message_in() = 0; 859623: virtual int send_timeout() { return -1; } 859623: virtual int receive_timeout() { return -1; } 859623: virtual int keep_alive_timeout() { return 0; } 859623: virtual int first_timeout() { return 0; } 859623: virtual void handle(int state, int error) = 0; 859623: 859623: protected: 859623: CommTarget *get_target() const { return this->target; } 859623: CommConnection *get_connection() const { return this->conn; } 859623: CommMessageOut *get_message_out() const { return this->out; } 859623: CommMessageIn *get_message_in() const { return this->in; } 859623: long long get_seq() const { return this->seq; } 859623: 859623: private: 859623: CommTarget *target; 859623: CommConnection *conn; 859623: CommMessageOut *out; 859623: CommMessageIn *in; 859623: long long seq; 859623: 859623: private: 859623: struct timespec begin_time; 859623: int timeout; 859623: int passive; 859623: 859623: public: 859623: CommSession() { this->passive = 0; } 859623: virtual ~CommSession(); 859623: friend class CommMessageIn; 859623: friend class Communicator; 859623: }; 859623: 859623: class CommService 859623: { 859623: public: 859623: int init(const struct sockaddr *bind_addr, socklen_t addrlen, 859623: int listen_timeout, int response_timeout); 859623: void deinit(); 859623: 859623: int drain(int max); 859623: 859623: public: 859623: void get_addr(const struct sockaddr **addr, socklen_t *addrlen) const 859623: { 859623: *addr = this->bind_addr; 859623: *addrlen = this->addrlen; 859623: } 859623: 859623: protected: 859623: void set_ssl(SSL_CTX *ssl_ctx, int ssl_accept_timeout) 859623: { 859623: this->ssl_ctx = ssl_ctx; 859623: this->ssl_accept_timeout = ssl_accept_timeout; 859623: } 859623: 859623: SSL_CTX *get_ssl_ctx() const { return this->ssl_ctx; } 859623: 859623: private: 859623: virtual CommSession *new_session(long long seq, CommConnection *conn) = 0; 859623: virtual void handle_stop(int error) { } 859623: virtual void handle_unbound() = 0; 859623: 859623: private: 859623: virtual int create_listen_fd() 859623: { 859623: return socket(this->bind_addr->sa_family, 859623: # 205 "/<>/_include/workflow/Communicator.h" 3 859623: SOCK_STREAM 859623: # 205 "/<>/_include/workflow/Communicator.h" 859623: , 0); 859623: } 859623: 859623: virtual CommConnection *new_connection(int accept_fd) 859623: { 859623: return new CommConnection; 859623: } 859623: 859623: virtual int init_ssl(SSL *ssl) { return 0; } 859623: 859623: private: 859623: struct sockaddr *bind_addr; 859623: socklen_t addrlen; 859623: int listen_timeout; 859623: int response_timeout; 859623: int ssl_accept_timeout; 859623: SSL_CTX *ssl_ctx; 859623: 859623: private: 859623: void incref(); 859623: void decref(); 859623: 859623: private: 859623: int reliable; 859623: int listen_fd; 859623: int ref; 859623: 859623: private: 859623: struct list_head keep_alive_list; 859623: pthread_mutex_t mutex; 859623: 859623: public: 859623: virtual ~CommService() { } 859623: friend class CommServiceTarget; 859623: friend class Communicator; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: class SleepSession 859623: { 859623: private: 859623: virtual int duration(struct timespec *value) = 0; 859623: virtual void handle(int state, int error) = 0; 859623: 859623: private: 859623: void *timer; 859623: int index; 859623: 859623: public: 859623: virtual ~SleepSession() { } 859623: friend class Communicator; 859623: }; 859623: 859623: 859623: # 1 "/<>/_include/workflow/IOService_linux.h" 1 859623: # 23 "/<>/_include/workflow/IOService_linux.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/eventfd.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/sys/eventfd.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/eventfd.h" 1 3 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/eventfd.h" 3 859623: 859623: # 23 "/usr/arm-linux-gnueabi/include/bits/eventfd.h" 3 859623: enum 859623: { 859623: EFD_SEMAPHORE = 00000001, 859623: 859623: EFD_CLOEXEC = 02000000, 859623: 859623: EFD_NONBLOCK = 00004000 859623: 859623: }; 859623: # 25 "/usr/arm-linux-gnueabi/include/sys/eventfd.h" 2 3 859623: 859623: 859623: typedef uint64_t eventfd_t; 859623: 859623: 859623: extern "C" { 859623: 859623: 859623: 859623: extern int eventfd (unsigned int __count, int __flags) noexcept (true); 859623: 859623: 859623: extern int eventfd_read (int __fd, eventfd_t *__value); 859623: 859623: 859623: extern int eventfd_write (int __fd, eventfd_t __value); 859623: 859623: } 859623: # 24 "/<>/_include/workflow/IOService_linux.h" 2 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 25 "/<>/_include/workflow/IOService_linux.h" 2 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 31 "/<>/_include/workflow/IOService_linux.h" 859623: class IOSession 859623: { 859623: private: 859623: virtual int prepare() = 0; 859623: virtual void handle(int state, int error) = 0; 859623: 859623: protected: 859623: 859623: void prep_pread(int fd, void *buf, size_t count, long long offset); 859623: void prep_pwrite(int fd, void *buf, size_t count, long long offset); 859623: void prep_preadv(int fd, const struct iovec *iov, int iovcnt, 859623: long long offset); 859623: void prep_pwritev(int fd, const struct iovec *iov, int iovcnt, 859623: long long offset); 859623: void prep_fsync(int fd); 859623: void prep_fdsync(int fd); 859623: 859623: protected: 859623: long get_res() const { return this->res; } 859623: 859623: private: 859623: char iocb_buf[64]; 859623: long res; 859623: 859623: private: 859623: struct list_head list; 859623: 859623: public: 859623: virtual ~IOSession() { } 859623: friend class IOService; 859623: friend class Communicator; 859623: }; 859623: 859623: class IOService 859623: { 859623: public: 859623: int init(int maxevents); 859623: void deinit(); 859623: 859623: int request(IOSession *session); 859623: 859623: private: 859623: virtual void handle_stop(int error) { } 859623: virtual void handle_unbound() = 0; 859623: 859623: private: 859623: virtual int create_event_fd() 859623: { 859623: return eventfd(0, 0); 859623: } 859623: 859623: private: 859623: struct io_context *io_ctx; 859623: 859623: private: 859623: void incref(); 859623: void decref(); 859623: 859623: private: 859623: int event_fd; 859623: int ref; 859623: 859623: private: 859623: struct list_head session_list; 859623: pthread_mutex_t mutex; 859623: 859623: private: 859623: static void *aio_finish(void *context); 859623: 859623: public: 859623: virtual ~IOService() { } 859623: friend class Communicator; 859623: }; 859623: # 263 "/<>/_include/workflow/Communicator.h" 2 859623: 859623: 859623: 859623: 859623: class CommEventHandler 859623: { 859623: private: 859623: virtual void schedule(void (*routine)(void *), void *context) = 0; 859623: virtual void wait() = 0; 859623: 859623: public: 859623: virtual ~CommEventHandler() { } 859623: friend class Communicator; 859623: }; 859623: 859623: class Communicator 859623: { 859623: public: 859623: int init(size_t poller_threads, size_t handler_threads); 859623: void deinit(); 859623: 859623: int request(CommSession *session, CommTarget *target); 859623: int reply(CommSession *session); 859623: 859623: int push(const void *buf, size_t size, CommSession *session); 859623: 859623: int shutdown(CommSession *session); 859623: 859623: int bind(CommService *service); 859623: void unbind(CommService *service); 859623: 859623: int sleep(SleepSession *session); 859623: int unsleep(SleepSession *session); 859623: 859623: int io_bind(IOService *service); 859623: void io_unbind(IOService *service); 859623: 859623: public: 859623: int is_handler_thread() const; 859623: 859623: int increase_handler_thread(); 859623: int decrease_handler_thread(); 859623: 859623: public: 859623: void customize_event_handler(CommEventHandler *handler); 859623: 859623: private: 859623: struct __mpoller *mpoller; 859623: struct __msgqueue *msgqueue; 859623: struct __thrdpool *thrdpool; 859623: int stop_flag; 859623: 859623: private: 859623: CommEventHandler *event_handler; 859623: 859623: private: 859623: int create_poller(size_t poller_threads); 859623: 859623: int create_handler_threads(size_t handler_threads); 859623: 859623: void shutdown_service(CommService *service); 859623: 859623: void shutdown_io_service(IOService *service); 859623: 859623: int send_message_sync(struct iovec vectors[], int cnt, 859623: struct CommConnEntry *entry); 859623: int send_message_async(struct iovec vectors[], int cnt, 859623: struct CommConnEntry *entry); 859623: 859623: int send_message(struct CommConnEntry *entry); 859623: 859623: int request_new_conn(CommSession *session, CommTarget *target); 859623: int request_idle_conn(CommSession *session, CommTarget *target); 859623: 859623: int reply_message_unreliable(struct CommConnEntry *entry); 859623: 859623: int reply_reliable(CommSession *session, CommTarget *target); 859623: int reply_unreliable(CommSession *session, CommTarget *target); 859623: 859623: void handle_poller_result(struct poller_result *res); 859623: 859623: void handle_incoming_request(struct poller_result *res); 859623: void handle_incoming_reply(struct poller_result *res); 859623: 859623: void handle_request_result(struct poller_result *res); 859623: void handle_reply_result(struct poller_result *res); 859623: 859623: void handle_write_result(struct poller_result *res); 859623: void handle_read_result(struct poller_result *res); 859623: 859623: void handle_connect_result(struct poller_result *res); 859623: void handle_listen_result(struct poller_result *res); 859623: 859623: void handle_recvfrom_result(struct poller_result *res); 859623: 859623: void handle_ssl_accept_result(struct poller_result *res); 859623: 859623: void handle_sleep_result(struct poller_result *res); 859623: 859623: void handle_aio_result(struct poller_result *res); 859623: 859623: static void handler_thread_routine(void *context); 859623: 859623: static int nonblock_connect(CommTarget *target); 859623: static int nonblock_listen(CommService *service); 859623: 859623: static struct CommConnEntry *launch_conn(CommSession *session, 859623: CommTarget *target); 859623: static struct CommConnEntry *accept_conn(class CommServiceTarget *target, 859623: CommService *service); 859623: 859623: static int first_timeout(CommSession *session); 859623: static int next_timeout(CommSession *session); 859623: 859623: static int first_timeout_send(CommSession *session); 859623: static int first_timeout_recv(CommSession *session); 859623: 859623: static int append_message(const void *buf, size_t *size, 859623: poller_message_t *msg); 859623: 859623: static poller_message_t *create_request(void *context); 859623: static poller_message_t *create_reply(void *context); 859623: 859623: static int recv_request(const void *buf, size_t size, 859623: struct CommConnEntry *entry); 859623: 859623: static int partial_written(size_t n, void *context); 859623: 859623: static void *accept(const struct sockaddr *addr, socklen_t addrlen, 859623: int sockfd, void *context); 859623: 859623: static void *recvfrom(const struct sockaddr *addr, socklen_t addrlen, 859623: const void *buf, size_t size, void *context); 859623: 859623: static void callback(struct poller_result *res, void *context); 859623: 859623: private: 859623: static void event_handler_routine(void *context); 859623: 859623: static void callback_custom(struct poller_result *res, void *context); 859623: 859623: public: 859623: virtual ~Communicator() { } 859623: }; 859623: # 26 "/<>/_include/workflow/ProtocolMessage.h" 2 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace protocol 859623: { 859623: 859623: class ProtocolMessage : public CommMessageOut, public CommMessageIn 859623: { 859623: protected: 859623: virtual int encode(struct iovec vectors[], int max) 859623: { 859623: 859623: # 40 "/<>/_include/workflow/ProtocolMessage.h" 3 859623: (*__errno_location ()) 859623: # 40 "/<>/_include/workflow/ProtocolMessage.h" 859623: = 859623: # 40 "/<>/_include/workflow/ProtocolMessage.h" 3 859623: 38 859623: # 40 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: return -1; 859623: } 859623: 859623: 859623: 859623: 859623: 859623: virtual int append(const void *buf, size_t *size) 859623: { 859623: return this->append(buf, *size); 859623: } 859623: 859623: 859623: 859623: virtual int append(const void *buf, size_t size) 859623: { 859623: 859623: # 57 "/<>/_include/workflow/ProtocolMessage.h" 3 859623: (*__errno_location ()) 859623: # 57 "/<>/_include/workflow/ProtocolMessage.h" 859623: = 859623: # 57 "/<>/_include/workflow/ProtocolMessage.h" 3 859623: 38 859623: # 57 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: return -1; 859623: } 859623: 859623: public: 859623: void set_size_limit(size_t limit) { this->size_limit = limit; } 859623: size_t get_size_limit() const { return this->size_limit; } 859623: 859623: public: 859623: class Attachment 859623: { 859623: public: 859623: virtual ~Attachment() { } 859623: }; 859623: 859623: void set_attachment(Attachment *att) { this->attachment = att; } 859623: Attachment *get_attachment() { return this->attachment; } 859623: const Attachment *get_attachment() const { return this->attachment; } 859623: 859623: protected: 859623: virtual int feedback(const void *buf, size_t size) 859623: { 859623: if (this->wrapper) 859623: return this->wrapper->feedback(buf, size); 859623: else 859623: return this->CommMessageIn::feedback(buf, size); 859623: } 859623: 859623: virtual void renew() 859623: { 859623: if (this->wrapper) 859623: return this->wrapper->renew(); 859623: else 859623: return this->CommMessageIn::renew(); 859623: } 859623: 859623: virtual ProtocolMessage *inner() { return this; } 859623: 859623: protected: 859623: size_t size_limit; 859623: 859623: private: 859623: Attachment *attachment; 859623: ProtocolMessage *wrapper; 859623: 859623: public: 859623: ProtocolMessage() 859623: { 859623: this->size_limit = (size_t)-1; 859623: this->attachment = 859623: # 106 "/<>/_include/workflow/ProtocolMessage.h" 3 4 859623: __null 859623: # 106 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: this->wrapper = 859623: # 107 "/<>/_include/workflow/ProtocolMessage.h" 3 4 859623: __null 859623: # 107 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: } 859623: 859623: virtual ~ProtocolMessage() { delete this->attachment; } 859623: 859623: public: 859623: ProtocolMessage(ProtocolMessage&& message) 859623: { 859623: this->size_limit = message.size_limit; 859623: this->attachment = message.attachment; 859623: message.attachment = 859623: # 117 "/<>/_include/workflow/ProtocolMessage.h" 3 4 859623: __null 859623: # 117 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: this->wrapper = 859623: # 118 "/<>/_include/workflow/ProtocolMessage.h" 3 4 859623: __null 859623: # 118 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: } 859623: 859623: ProtocolMessage& operator = (ProtocolMessage&& message) 859623: { 859623: if (&message != this) 859623: { 859623: this->size_limit = message.size_limit; 859623: delete this->attachment; 859623: this->attachment = message.attachment; 859623: message.attachment = 859623: # 128 "/<>/_include/workflow/ProtocolMessage.h" 3 4 859623: __null 859623: # 128 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: } 859623: 859623: return *this; 859623: } 859623: 859623: friend class ProtocolWrapper; 859623: }; 859623: 859623: class ProtocolWrapper : public ProtocolMessage 859623: { 859623: protected: 859623: virtual int encode(struct iovec vectors[], int max) 859623: { 859623: return this->message->encode(vectors, max); 859623: } 859623: 859623: virtual int append(const void *buf, size_t *size) 859623: { 859623: return this->message->append(buf, size); 859623: } 859623: 859623: protected: 859623: virtual ProtocolMessage *inner() 859623: { 859623: return this->message->inner(); 859623: } 859623: 859623: protected: 859623: void set_message(ProtocolMessage *message) 859623: { 859623: this->message = message; 859623: if (message) 859623: message->wrapper = this; 859623: } 859623: 859623: protected: 859623: ProtocolMessage *message; 859623: 859623: public: 859623: ProtocolWrapper(ProtocolMessage *message) 859623: { 859623: this->set_message(message); 859623: } 859623: 859623: public: 859623: ProtocolWrapper(ProtocolWrapper&& wrapper) : 859623: ProtocolMessage(std::move(wrapper)) 859623: { 859623: this->set_message(wrapper.message); 859623: wrapper.message = 859623: # 178 "/<>/_include/workflow/ProtocolMessage.h" 3 4 859623: __null 859623: # 178 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: } 859623: 859623: ProtocolWrapper& operator = (ProtocolWrapper&& wrapper) 859623: { 859623: if (&wrapper != this) 859623: { 859623: *(ProtocolMessage *)this = std::move(wrapper); 859623: this->set_message(wrapper.message); 859623: wrapper.message = 859623: # 187 "/<>/_include/workflow/ProtocolMessage.h" 3 4 859623: __null 859623: # 187 "/<>/_include/workflow/ProtocolMessage.h" 859623: ; 859623: } 859623: 859623: return *this; 859623: } 859623: }; 859623: 859623: } 859623: # 28 "/<>/_include/workflow/HttpMessage.h" 2 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace protocol 859623: { 859623: 859623: struct HttpMessageHeader 859623: { 859623: const void *name; 859623: size_t name_len; 859623: const void *value; 859623: size_t value_len; 859623: }; 859623: 859623: class HttpMessage : public ProtocolMessage 859623: { 859623: public: 859623: const char *get_http_version() const 859623: { 859623: return http_parser_get_version(this->parser); 859623: } 859623: 859623: bool set_http_version(const char *version) 859623: { 859623: return http_parser_set_version(version, this->parser) == 0; 859623: } 859623: 859623: bool is_chunked() const 859623: { 859623: return http_parser_chunked(this->parser); 859623: } 859623: 859623: bool is_keep_alive() const 859623: { 859623: return http_parser_keep_alive(this->parser); 859623: } 859623: 859623: bool add_header(const struct HttpMessageHeader *header) 859623: { 859623: return http_parser_add_header(header->name, header->name_len, 859623: header->value, header->value_len, 859623: this->parser) == 0; 859623: } 859623: 859623: bool add_header_pair(const char *name, const char *value) 859623: { 859623: if(strcmp(name, "Server") == 0) { 859623: std::string append = value; 859623: append += " - powered by Workflow v0.10"; 859623: return http_parser_add_header(name, strlen(name), 859623: append.c_str(), append.length(), 859623: this->parser) == 0; 859623: } else { 859623: return http_parser_add_header(name, strlen(name), 859623: value, strlen(value), 859623: this->parser) == 0; 859623: } 859623: } 859623: 859623: bool set_header(const struct HttpMessageHeader *header) 859623: { 859623: return http_parser_set_header(header->name, header->name_len, 859623: header->value, header->value_len, 859623: this->parser) == 0; 859623: } 859623: 859623: bool set_header_pair(const char *name, const char *value) 859623: { 859623: return http_parser_set_header(name, strlen(name), 859623: value, strlen(value), 859623: this->parser) == 0; 859623: } 859623: 859623: bool get_parsed_body(const void **body, size_t *size) const 859623: { 859623: return http_parser_get_body(body, size, this->parser) == 0; 859623: } 859623: 859623: 859623: 859623: 859623: bool append_output_body(const void *buf, size_t size); 859623: 859623: bool append_output_body(const char *buf) 859623: { 859623: return this->append_output_body(buf, strlen(buf)); 859623: } 859623: 859623: bool append_output_body_nocopy(const void *buf, size_t size); 859623: 859623: bool append_output_body_nocopy(const char *buf) 859623: { 859623: return this->append_output_body_nocopy(buf, strlen(buf)); 859623: } 859623: 859623: size_t get_output_body_size() const 859623: { 859623: return this->output_body_size; 859623: } 859623: 859623: size_t get_output_body_blocks(const void *buf[], size_t size[], 859623: size_t max) const; 859623: 859623: bool get_output_body_merged(void *buf, size_t *size) const; 859623: 859623: void clear_output_body(); 859623: 859623: 859623: public: 859623: bool get_http_version(std::string& version) const 859623: { 859623: const char *str = this->get_http_version(); 859623: 859623: if (str) 859623: { 859623: version.assign(str); 859623: return true; 859623: } 859623: 859623: return false; 859623: } 859623: 859623: bool set_http_version(const std::string& version) 859623: { 859623: return this->set_http_version(version.c_str()); 859623: } 859623: 859623: bool add_header_pair(const std::string& name, const std::string& value) 859623: { 859623: if(strcmp(name.c_str(), "Server") == 0) { 859623: std::string append = value; 859623: append += " - powered by Workflow v0.10"; 859623: return http_parser_add_header(name.c_str(), name.size(), 859623: append.c_str(), append.size(), 859623: this->parser) == 0; 859623: } else { 859623: return http_parser_add_header(name.c_str(), name.size(), 859623: value.c_str(), value.size(), 859623: this->parser) == 0; 859623: } 859623: } 859623: 859623: bool set_header_pair(const std::string& name, const std::string& value) 859623: { 859623: return http_parser_set_header(name.c_str(), name.size(), 859623: value.c_str(), value.size(), 859623: this->parser) == 0; 859623: } 859623: 859623: bool append_output_body(const std::string& buf) 859623: { 859623: return this->append_output_body(buf.c_str(), buf.size()); 859623: } 859623: 859623: bool append_output_body_nocopy(const std::string& buf) 859623: { 859623: return this->append_output_body_nocopy(buf.c_str(), buf.size()); 859623: } 859623: 859623: bool get_output_body_merged(std::string& body) const 859623: { 859623: size_t size = this->output_body_size; 859623: body.resize(size); 859623: return this->get_output_body_merged((void *)body.data(), &size); 859623: } 859623: 859623: 859623: public: 859623: bool is_header_complete() const 859623: { 859623: return http_parser_header_complete(this->parser); 859623: } 859623: 859623: bool has_connection_header() const 859623: { 859623: return http_parser_has_connection(this->parser); 859623: } 859623: 859623: bool has_content_length_header() const 859623: { 859623: return http_parser_has_content_length(this->parser); 859623: } 859623: 859623: bool has_keep_alive_header() const 859623: { 859623: return http_parser_has_keep_alive(this->parser); 859623: } 859623: 859623: void end_parsing() 859623: { 859623: http_parser_close_message(this->parser); 859623: } 859623: 859623: 859623: const http_parser_t *get_parser() const 859623: { 859623: return this->parser; 859623: } 859623: 859623: protected: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: protected: 859623: http_parser_t *parser; 859623: size_t cur_size; 859623: 859623: private: 859623: struct list_head *combine_from(struct list_head *pos, size_t size); 859623: 859623: private: 859623: struct list_head output_body; 859623: size_t output_body_size; 859623: 859623: public: 859623: HttpMessage(bool is_resp) : parser(new http_parser_t) 859623: { 859623: http_parser_init(is_resp, this->parser); 859623: INIT_LIST_HEAD(&this->output_body); 859623: this->output_body_size = 0; 859623: this->cur_size = 0; 859623: } 859623: 859623: virtual ~HttpMessage() 859623: { 859623: this->clear_output_body(); 859623: if (this->parser) 859623: { 859623: http_parser_deinit(this->parser); 859623: delete this->parser; 859623: } 859623: } 859623: 859623: public: 859623: HttpMessage(HttpMessage&& msg); 859623: HttpMessage& operator = (HttpMessage&& msg); 859623: }; 859623: 859623: class HttpRequest : public HttpMessage 859623: { 859623: public: 859623: const char *get_method() const 859623: { 859623: return http_parser_get_method(this->parser); 859623: } 859623: 859623: const char *get_request_uri() const 859623: { 859623: return http_parser_get_uri(this->parser); 859623: } 859623: 859623: bool set_method(const char *method) 859623: { 859623: return http_parser_set_method(method, this->parser) == 0; 859623: } 859623: 859623: bool set_request_uri(const char *uri) 859623: { 859623: return http_parser_set_uri(uri, this->parser) == 0; 859623: } 859623: 859623: 859623: public: 859623: bool get_method(std::string& method) const 859623: { 859623: const char *str = this->get_method(); 859623: 859623: if (str) 859623: { 859623: method.assign(str); 859623: return true; 859623: } 859623: 859623: return false; 859623: } 859623: 859623: bool get_request_uri(std::string& uri) const 859623: { 859623: const char *str = this->get_request_uri(); 859623: 859623: if (str) 859623: { 859623: uri.assign(str); 859623: return true; 859623: } 859623: 859623: return false; 859623: } 859623: 859623: bool set_method(const std::string& method) 859623: { 859623: return this->set_method(method.c_str()); 859623: } 859623: 859623: bool set_request_uri(const std::string& uri) 859623: { 859623: return this->set_request_uri(uri.c_str()); 859623: } 859623: 859623: protected: 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: private: 859623: int handle_expect_continue(); 859623: 859623: public: 859623: HttpRequest() : HttpMessage(false) { } 859623: 859623: public: 859623: HttpRequest(HttpRequest&& req) = default; 859623: HttpRequest& operator = (HttpRequest&& req) = default; 859623: }; 859623: 859623: class HttpResponse : public HttpMessage 859623: { 859623: public: 859623: const char *get_status_code() const 859623: { 859623: return http_parser_get_code(this->parser); 859623: } 859623: 859623: const char *get_reason_phrase() const 859623: { 859623: return http_parser_get_phrase(this->parser); 859623: } 859623: 859623: bool set_status_code(const char *code) 859623: { 859623: return http_parser_set_code(code, this->parser) == 0; 859623: } 859623: 859623: bool set_reason_phrase(const char *phrase) 859623: { 859623: return http_parser_set_phrase(phrase, this->parser) == 0; 859623: } 859623: 859623: 859623: public: 859623: bool get_status_code(std::string& code) const 859623: { 859623: const char *str = this->get_status_code(); 859623: 859623: if (str) 859623: { 859623: code.assign(str); 859623: return true; 859623: } 859623: 859623: return false; 859623: } 859623: 859623: bool get_reason_phrase(std::string& phrase) const 859623: { 859623: const char *str = this->get_reason_phrase(); 859623: 859623: if (str) 859623: { 859623: phrase.assign(str); 859623: return true; 859623: } 859623: 859623: return false; 859623: } 859623: 859623: bool set_status_code(const std::string& code) 859623: { 859623: return this->set_status_code(code.c_str()); 859623: } 859623: 859623: bool set_reason_phrase(const std::string& phrase) 859623: { 859623: return this->set_reason_phrase(phrase.c_str()); 859623: } 859623: 859623: public: 859623: 859623: void parse_zero_body() 859623: { 859623: this->parser->transfer_length = 0; 859623: } 859623: 859623: protected: 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: public: 859623: HttpResponse() : HttpMessage(true) { } 859623: 859623: public: 859623: HttpResponse(HttpResponse&& resp) = default; 859623: HttpResponse& operator = (HttpResponse&& resp) = default; 859623: }; 859623: 859623: class HttpMessageChunk : public ProtocolMessage 859623: { 859623: public: 859623: bool get_chunk_data(const void **chunk_data, size_t *size) const; 859623: bool move_chunk_data(void **chunk_data, size_t *size); 859623: bool set_chunk_data(const void *chunk_data, size_t size); 859623: 859623: protected: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: private: 859623: int append_chunk_line(const void *buf, size_t size); 859623: 859623: private: 859623: char chunk_line[32]; 859623: void *chunk_data; 859623: size_t chunk_size; 859623: size_t nreceived; 859623: 859623: public: 859623: HttpMessageChunk() 859623: { 859623: this->chunk_data = 859623: # 447 "/<>/_include/workflow/HttpMessage.h" 3 4 859623: __null 859623: # 447 "/<>/_include/workflow/HttpMessage.h" 859623: ; 859623: this->nreceived = 0; 859623: } 859623: 859623: virtual ~HttpMessageChunk() 859623: { 859623: free(this->chunk_data); 859623: } 859623: 859623: public: 859623: HttpMessageChunk(HttpMessageChunk&& msg); 859623: HttpMessageChunk& operator = (HttpMessageChunk&& msg); 859623: }; 859623: 859623: } 859623: # 28 "/<>/_include/workflow/HttpUtil.h" 2 859623: # 44 "/<>/_include/workflow/HttpUtil.h" 859623: enum 859623: { 859623: HttpStatusContinue = 100, 859623: HttpStatusSwitchingProtocols = 101, 859623: HttpStatusProcessing = 102, 859623: 859623: HttpStatusOK = 200, 859623: HttpStatusCreated = 201, 859623: HttpStatusAccepted = 202, 859623: HttpStatusNonAuthoritativeInfo = 203, 859623: HttpStatusNoContent = 204, 859623: HttpStatusResetContent = 205, 859623: HttpStatusPartialContent = 206, 859623: HttpStatusMultiStatus = 207, 859623: HttpStatusAlreadyReported = 208, 859623: HttpStatusIMUsed = 226, 859623: 859623: HttpStatusMultipleChoices = 300, 859623: HttpStatusMovedPermanently = 301, 859623: HttpStatusFound = 302, 859623: HttpStatusSeeOther = 303, 859623: HttpStatusNotModified = 304, 859623: HttpStatusUseProxy = 305, 859623: 859623: HttpStatusTemporaryRedirect = 307, 859623: HttpStatusPermanentRedirect = 308, 859623: 859623: HttpStatusBadRequest = 400, 859623: HttpStatusUnauthorized = 401, 859623: HttpStatusPaymentRequired = 402, 859623: HttpStatusForbidden = 403, 859623: HttpStatusNotFound = 404, 859623: HttpStatusMethodNotAllowed = 405, 859623: HttpStatusNotAcceptable = 406, 859623: HttpStatusProxyAuthRequired = 407, 859623: HttpStatusRequestTimeout = 408, 859623: HttpStatusConflict = 409, 859623: HttpStatusGone = 410, 859623: HttpStatusLengthRequired = 411, 859623: HttpStatusPreconditionFailed = 412, 859623: HttpStatusRequestEntityTooLarge = 413, 859623: HttpStatusRequestURITooLong = 414, 859623: HttpStatusUnsupportedMediaType = 415, 859623: HttpStatusRequestedRangeNotSatisfiable = 416, 859623: HttpStatusExpectationFailed = 417, 859623: HttpStatusTeapot = 418, 859623: HttpStatusEnhanceYourCaim = 420, 859623: HttpStatusMisdirectedRequest = 421, 859623: HttpStatusUnprocessableEntity = 422, 859623: HttpStatusLocked = 423, 859623: HttpStatusFailedDependency = 424, 859623: HttpStatusTooEarly = 425, 859623: HttpStatusUpgradeRequired = 426, 859623: HttpStatusPreconditionRequired = 428, 859623: HttpStatusTooManyRequests = 429, 859623: HttpStatusRequestHeaderFieldsTooLarge = 431, 859623: HttpStatusNoResponse = 444, 859623: HttpStatusBlocked = 450, 859623: HttpStatusUnavailableForLegalReasons = 451, 859623: HttpStatusTooLargeForNginx = 494, 859623: 859623: HttpStatusInternalServerError = 500, 859623: HttpStatusNotImplemented = 501, 859623: HttpStatusBadGateway = 502, 859623: HttpStatusServiceUnavailable = 503, 859623: HttpStatusGatewayTimeout = 504, 859623: HttpStatusHTTPVersionNotSupported = 505, 859623: HttpStatusVariantAlsoNegotiates = 506, 859623: HttpStatusInsufficientStorage = 507, 859623: HttpStatusLoopDetected = 508, 859623: HttpStatusNotExtended = 510, 859623: HttpStatusNetworkAuthenticationRequired = 511, 859623: }; 859623: 859623: namespace protocol 859623: { 859623: 859623: 859623: class HttpUtil 859623: { 859623: public: 859623: static void set_response_status(HttpResponse *resp, int status_code); 859623: static std::string decode_chunked_body(const HttpMessage *msg); 859623: }; 859623: 859623: class HttpHeaderMap 859623: { 859623: public: 859623: HttpHeaderMap(const HttpMessage *message); 859623: 859623: bool key_exists(std::string key); 859623: std::string get(std::string key); 859623: bool get(std::string key, std::string& value); 859623: std::vector get_strict(std::string key); 859623: bool get_strict(std::string key, std::vector& values); 859623: 859623: private: 859623: std::unordered_map> header_map_; 859623: }; 859623: 859623: class HttpHeaderCursor 859623: { 859623: public: 859623: HttpHeaderCursor(const HttpMessage *message); 859623: virtual ~HttpHeaderCursor(); 859623: 859623: public: 859623: bool next(struct HttpMessageHeader *header); 859623: bool find(struct HttpMessageHeader *header); 859623: bool erase(); 859623: bool find_and_erase(struct HttpMessageHeader *header); 859623: void rewind(); 859623: 859623: 859623: public: 859623: bool next(std::string& name, std::string& value); 859623: bool find(const std::string& name, std::string& value); 859623: bool find_and_erase(const std::string& name); 859623: 859623: protected: 859623: http_header_cursor_t cursor; 859623: }; 859623: 859623: class HttpChunkCursor 859623: { 859623: public: 859623: HttpChunkCursor(const HttpMessage *message); 859623: virtual ~HttpChunkCursor() { } 859623: 859623: public: 859623: bool next(const void **chunk, size_t *size); 859623: void rewind(); 859623: 859623: protected: 859623: const void *body; 859623: size_t body_len; 859623: const void *pos; 859623: bool chunked; 859623: bool end; 859623: }; 859623: 859623: 859623: 859623: inline HttpHeaderCursor::HttpHeaderCursor(const HttpMessage *message) 859623: { 859623: http_header_cursor_init(&this->cursor, message->get_parser()); 859623: } 859623: 859623: inline HttpHeaderCursor::~HttpHeaderCursor() 859623: { 859623: http_header_cursor_deinit(&this->cursor); 859623: } 859623: 859623: inline bool HttpHeaderCursor::next(struct HttpMessageHeader *header) 859623: { 859623: return http_header_cursor_next(&header->name, &header->name_len, 859623: &header->value, &header->value_len, 859623: &this->cursor) == 0; 859623: } 859623: 859623: inline bool HttpHeaderCursor::find(struct HttpMessageHeader *header) 859623: { 859623: return http_header_cursor_find(header->name, header->name_len, 859623: &header->value, &header->value_len, 859623: &this->cursor) == 0; 859623: } 859623: 859623: inline bool HttpHeaderCursor::erase() 859623: { 859623: return http_header_cursor_erase(&this->cursor) == 0; 859623: } 859623: 859623: inline bool HttpHeaderCursor::find_and_erase(struct HttpMessageHeader *header) 859623: { 859623: if (this->find(header)) 859623: return this->erase(); 859623: 859623: return false; 859623: } 859623: 859623: inline void HttpHeaderCursor::rewind() 859623: { 859623: http_header_cursor_rewind(&this->cursor); 859623: } 859623: 859623: } 859623: # 30 "/<>/src/client/WFConsulClient.cc" 2 859623: # 1 "/<>/src/client/WFConsulClient.h" 1 859623: # 27 "/<>/src/client/WFConsulClient.h" 859623: # 1 "/<>/_include/workflow/HttpMessage.h" 1 859623: # 28 "/<>/src/client/WFConsulClient.h" 2 859623: # 1 "/<>/_include/workflow/WFTaskFactory.h" 1 859623: # 29 "/<>/_include/workflow/WFTaskFactory.h" 859623: # 1 "/<>/_include/workflow/URIParser.h" 1 859623: # 30 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: # 1 "/<>/_include/workflow/RedisMessage.h" 1 859623: # 27 "/<>/_include/workflow/RedisMessage.h" 859623: # 1 "/<>/_include/workflow/redis_parser.h" 1 859623: # 22 "/<>/_include/workflow/redis_parser.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 23 "/<>/_include/workflow/redis_parser.h" 2 859623: # 35 "/<>/_include/workflow/redis_parser.h" 859623: typedef struct __redis_reply { 859623: int type; 859623: long long integer; 859623: size_t len; 859623: char *str; 859623: size_t elements; 859623: struct __redis_reply **element; 859623: } redis_reply_t; 859623: 859623: typedef struct __redis_parser 859623: { 859623: int parse_succ; 859623: int status; 859623: char *msgbuf; 859623: size_t msgsize; 859623: size_t bufsize; 859623: redis_reply_t *cur; 859623: struct list_head read_list; 859623: size_t msgidx; 859623: size_t findidx; 859623: int nleft; 859623: int nchar; 859623: char cmd; 859623: redis_reply_t reply; 859623: } redis_parser_t; 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: void redis_parser_init(redis_parser_t *parser); 859623: void redis_parser_deinit(redis_parser_t *parser); 859623: int redis_parser_append_message(const void *buf, size_t *size, 859623: redis_parser_t *parser); 859623: 859623: void redis_reply_deinit(redis_reply_t *reply); 859623: 859623: int redis_reply_set_array(size_t size, redis_reply_t *reply); 859623: 859623: 859623: } 859623: 859623: 859623: static inline void redis_reply_init(redis_reply_t *reply) 859623: { 859623: reply->type = 4; 859623: reply->integer = 0; 859623: reply->len = 0; 859623: reply->str = 859623: # 84 "/<>/_include/workflow/redis_parser.h" 3 4 859623: __null 859623: # 84 "/<>/_include/workflow/redis_parser.h" 859623: ; 859623: reply->elements = 0; 859623: reply->element = 859623: # 86 "/<>/_include/workflow/redis_parser.h" 3 4 859623: __null 859623: # 86 "/<>/_include/workflow/redis_parser.h" 859623: ; 859623: } 859623: 859623: static inline void redis_reply_set_string(const char *str, size_t len, 859623: redis_reply_t *reply) 859623: { 859623: reply->type = 1; 859623: reply->len = len; 859623: reply->str = (char *)str; 859623: } 859623: 859623: static inline void redis_reply_set_integer(long long intv, redis_reply_t *reply) 859623: { 859623: reply->type = 3; 859623: reply->integer = intv; 859623: } 859623: 859623: static inline void redis_reply_set_null(redis_reply_t *reply) 859623: { 859623: reply->type = 4; 859623: } 859623: 859623: static inline void redis_reply_set_error(const char *err, size_t len, 859623: redis_reply_t *reply) 859623: { 859623: reply->type = 6; 859623: reply->len = len; 859623: reply->str = (char *)err; 859623: } 859623: 859623: static inline void redis_reply_set_status(const char *str, size_t len, 859623: redis_reply_t *reply) 859623: { 859623: reply->type = 5; 859623: reply->len = len; 859623: reply->str = (char *)str; 859623: } 859623: # 28 "/<>/_include/workflow/RedisMessage.h" 2 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace protocol 859623: { 859623: 859623: class RedisValue 859623: { 859623: public: 859623: 859623: RedisValue(); 859623: virtual ~RedisValue(); 859623: 859623: 859623: RedisValue(const RedisValue& copy); 859623: 859623: RedisValue& operator= (const RedisValue& copy); 859623: 859623: RedisValue(RedisValue&& move); 859623: 859623: RedisValue& operator= (RedisValue&& move); 859623: 859623: 859623: void set_nil(); 859623: void set_int(int64_t intv); 859623: void set_string(const std::string& strv); 859623: void set_status(const std::string& strv); 859623: void set_error(const std::string& strv); 859623: void set_string(const char *str, size_t len); 859623: void set_status(const char *str, size_t len); 859623: void set_error(const char *str, size_t len); 859623: void set_string(const char *str); 859623: void set_status(const char *str); 859623: void set_error(const char *str); 859623: 859623: void set_array(size_t new_size); 859623: 859623: void set(const redis_reply_t *reply); 859623: 859623: 859623: bool is_ok() const; 859623: 859623: bool is_error() const; 859623: 859623: bool is_nil() const; 859623: 859623: bool is_int() const; 859623: 859623: bool is_array() const; 859623: 859623: bool is_string() const; 859623: 859623: int get_type() const; 859623: 859623: 859623: std::string string_value() const; 859623: 859623: const std::string *string_view() const; 859623: 859623: int64_t int_value() const; 859623: 859623: size_t arr_size() const; 859623: 859623: void arr_clear(); 859623: 859623: void arr_resize(size_t new_size); 859623: 859623: RedisValue& arr_at(size_t pos) const; 859623: 859623: RedisValue& operator[] (size_t pos) const; 859623: 859623: 859623: bool transform(redis_reply_t *reply) const; 859623: 859623: void clear(); 859623: 859623: std::string debug_string() const; 859623: 859623: private: 859623: void free_data(); 859623: void only_set_string_data(const std::string& strv); 859623: void only_set_string_data(const char *str, size_t len); 859623: void only_set_string_data(const char *str); 859623: 859623: int type_; 859623: void *data_; 859623: }; 859623: 859623: class RedisMessage : public ProtocolMessage 859623: { 859623: public: 859623: RedisMessage(); 859623: virtual ~RedisMessage(); 859623: 859623: RedisMessage(RedisMessage&& move); 859623: 859623: RedisMessage& operator= (RedisMessage&& move); 859623: 859623: public: 859623: 859623: 859623: bool parse_success() const; 859623: bool is_asking() const; 859623: void set_asking(bool asking); 859623: 859623: protected: 859623: redis_parser_t *parser_; 859623: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int append(const void *buf, size_t *size); 859623: bool encode_reply(redis_reply_t *reply); 859623: 859623: class EncodeStream *stream_; 859623: 859623: private: 859623: size_t cur_size_; 859623: bool asking_; 859623: }; 859623: 859623: class RedisRequest : public RedisMessage 859623: { 859623: public: 859623: RedisRequest() = default; 859623: 859623: RedisRequest(RedisRequest&& move) = default; 859623: 859623: RedisRequest& operator= (RedisRequest&& move) = default; 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: void set_request(const std::string& command, 859623: const std::vector& params); 859623: 859623: bool get_command(std::string& command) const; 859623: bool get_params(std::vector& params) const; 859623: 859623: protected: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: private: 859623: std::vector user_request_; 859623: }; 859623: 859623: class RedisResponse : public RedisMessage 859623: { 859623: public: 859623: RedisResponse() = default; 859623: 859623: RedisResponse(RedisResponse&& move) = default; 859623: 859623: RedisResponse& operator= (RedisResponse&& move) = default; 859623: 859623: public: 859623: 859623: void get_result(RedisValue& value) const; 859623: 859623: 859623: bool set_result(const RedisValue& value); 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: 859623: 859623: redis_reply_t *result_ptr(); 859623: 859623: protected: 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: private: 859623: RedisValue value_; 859623: }; 859623: 859623: 859623: 859623: inline RedisValue::RedisValue(): 859623: type_(4), 859623: data_( 859623: # 214 "/<>/_include/workflow/RedisMessage.h" 3 4 859623: __null 859623: # 214 "/<>/_include/workflow/RedisMessage.h" 859623: ) 859623: { 859623: } 859623: 859623: inline RedisValue::RedisValue(const RedisValue& copy): 859623: type_(4), 859623: data_( 859623: # 220 "/<>/_include/workflow/RedisMessage.h" 3 4 859623: __null 859623: # 220 "/<>/_include/workflow/RedisMessage.h" 859623: ) 859623: { 859623: this->operator= (copy); 859623: } 859623: 859623: inline RedisValue::RedisValue(RedisValue&& move): 859623: type_(4), 859623: data_( 859623: # 227 "/<>/_include/workflow/RedisMessage.h" 3 4 859623: __null 859623: # 227 "/<>/_include/workflow/RedisMessage.h" 859623: ) 859623: { 859623: this->operator= (std::move(move)); 859623: } 859623: 859623: inline bool RedisValue::is_ok() const { return type_ != 6; } 859623: inline bool RedisValue::is_error() const { return type_ == 6; } 859623: inline bool RedisValue::is_nil() const { return type_ == 4; } 859623: inline bool RedisValue::is_int() const { return type_ == 3; } 859623: inline bool RedisValue::is_array() const { return type_ == 2; } 859623: inline int RedisValue::get_type() const { return type_; } 859623: 859623: inline bool RedisValue::is_string() const 859623: { 859623: return type_ == 1 || type_ == 5; 859623: } 859623: 859623: inline std::string RedisValue::string_value() const 859623: { 859623: if (type_ == 1 || 859623: type_ == 5 || 859623: type_ == 6) 859623: return *((std::string *)data_); 859623: else 859623: return ""; 859623: } 859623: 859623: inline const std::string *RedisValue::string_view() const 859623: { 859623: if (type_ == 1 || 859623: type_ == 5 || 859623: type_ == 6) 859623: return ((std::string *)data_); 859623: else 859623: return 859623: # 261 "/<>/_include/workflow/RedisMessage.h" 3 4 859623: __null 859623: # 261 "/<>/_include/workflow/RedisMessage.h" 859623: ; 859623: } 859623: 859623: inline int64_t RedisValue::int_value() const 859623: { 859623: if (type_ == 3) 859623: return *((int64_t *)data_); 859623: else 859623: return 0; 859623: } 859623: 859623: inline size_t RedisValue::arr_size() const 859623: { 859623: if (type_ == 2) 859623: return ((std::vector *)data_)->size(); 859623: else 859623: return 0; 859623: } 859623: 859623: inline RedisValue& RedisValue::arr_at(size_t pos) const 859623: { 859623: return ((std::vector *)data_)->at(pos); 859623: } 859623: 859623: inline RedisValue& RedisValue::operator[] (size_t pos) const 859623: { 859623: return (*((std::vector *)data_))[pos]; 859623: } 859623: 859623: inline void RedisValue::set_nil() 859623: { 859623: free_data(); 859623: type_ = 4; 859623: } 859623: 859623: inline void RedisValue::clear() 859623: { 859623: set_nil(); 859623: } 859623: 859623: inline bool RedisMessage::parse_success() const { return parser_->parse_succ; } 859623: 859623: inline bool RedisMessage::is_asking() const { return asking_; } 859623: 859623: inline void RedisMessage::set_asking(bool asking) { asking_ = asking; } 859623: 859623: inline redis_reply_t *RedisResponse::result_ptr() 859623: { 859623: return &parser_->reply; 859623: } 859623: 859623: inline void RedisResponse::get_result(RedisValue& value) const 859623: { 859623: if (parser_->parse_succ) 859623: value.set(&parser_->reply); 859623: else 859623: value.set_nil(); 859623: } 859623: 859623: } 859623: # 31 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: 859623: # 1 "/<>/_include/workflow/MySQLMessage.h" 1 859623: # 25 "/<>/_include/workflow/MySQLMessage.h" 859623: # 1 "/<>/_include/workflow/mysql_stream.h" 1 859623: # 22 "/<>/_include/workflow/mysql_stream.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/stdlib.h" 1 3 859623: # 23 "/<>/_include/workflow/mysql_stream.h" 2 859623: 859623: typedef struct __mysql_stream 859623: { 859623: unsigned char head[4]; 859623: unsigned char head_left; 859623: unsigned char sequence_id; 859623: int payload_length; 859623: int payload_left; 859623: void *buf; 859623: size_t length; 859623: size_t bufsize; 859623: int (*write)(const void *, size_t *, struct __mysql_stream *); 859623: } mysql_stream_t; 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: void mysql_stream_init(mysql_stream_t *stream); 859623: 859623: 859623: } 859623: 859623: 859623: static inline int mysql_stream_write(const void *buf, size_t *n, 859623: mysql_stream_t *stream) 859623: { 859623: return stream->write(buf, n, stream); 859623: } 859623: 859623: static inline int mysql_stream_get_seq(mysql_stream_t *stream) 859623: { 859623: return stream->sequence_id; 859623: } 859623: 859623: static inline void mysql_stream_get_buf(const void **buf, size_t *length, 859623: mysql_stream_t *stream) 859623: { 859623: *buf = stream->buf; 859623: *length = stream->length; 859623: } 859623: 859623: static inline void mysql_stream_deinit(mysql_stream_t *stream) 859623: { 859623: free(stream->buf); 859623: } 859623: # 26 "/<>/_include/workflow/MySQLMessage.h" 2 859623: # 1 "/<>/_include/workflow/mysql_parser.h" 1 859623: # 22 "/<>/_include/workflow/mysql_parser.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 23 "/<>/_include/workflow/mysql_parser.h" 2 859623: 859623: 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: MYSQL_PACKET_HEADER_OK = 0, 859623: MYSQL_PACKET_HEADER_NULL = 251, 859623: MYSQL_PACKET_HEADER_EOF = 254, 859623: MYSQL_PACKET_HEADER_ERROR = 255, 859623: }; 859623: 859623: typedef struct __mysql_field 859623: { 859623: size_t name_offset; 859623: size_t org_name_offset; 859623: size_t table_offset; 859623: size_t org_table_offset; 859623: size_t db_offset; 859623: size_t catalog_offset; 859623: size_t def_offset; 859623: int length; 859623: int name_length; 859623: int org_name_length; 859623: int table_length; 859623: int org_table_length; 859623: int db_length; 859623: int catalog_length; 859623: int def_length; 859623: int flags; 859623: int decimals; 859623: int charsetnr; 859623: int data_type; 859623: 859623: } mysql_field_t; 859623: 859623: struct __mysql_result_set 859623: { 859623: struct list_head list; 859623: int type; 859623: int server_status; 859623: 859623: int field_count; 859623: int row_count; 859623: size_t rows_begin_offset; 859623: size_t rows_end_offset; 859623: mysql_field_t **fields; 859623: 859623: unsigned long long affected_rows; 859623: unsigned long long insert_id; 859623: int warning_count; 859623: size_t info_offset; 859623: int info_len; 859623: }; 859623: 859623: typedef struct __mysql_result_set_cursor 859623: { 859623: const struct list_head *head; 859623: const struct list_head *current; 859623: } mysql_result_set_cursor_t; 859623: 859623: typedef struct __mysql_parser 859623: { 859623: size_t offset; 859623: int cmd; 859623: int packet_type; 859623: int (*parse)(const void *, size_t, struct __mysql_parser *); 859623: 859623: size_t net_state_offset; 859623: size_t err_msg_offset; 859623: int err_msg_len; 859623: 859623: size_t local_inline_offset; 859623: int local_inline_length; 859623: const void *buf; 859623: int error; 859623: 859623: int result_set_count; 859623: struct list_head result_set_list; 859623: struct __mysql_result_set *current_result_set; 859623: int current_field_count; 859623: } mysql_parser_t; 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: void mysql_parser_init(mysql_parser_t *parser); 859623: void mysql_parser_deinit(mysql_parser_t *parser); 859623: void mysql_parser_get_info(const char **info_str, 859623: size_t *info_len, 859623: mysql_parser_t *parser); 859623: void mysql_parser_get_net_state(const char **net_state_str, 859623: size_t *net_state_len, 859623: mysql_parser_t *parser); 859623: void mysql_parser_get_err_msg(const char **err_msg_str, 859623: size_t *err_msg_len, 859623: mysql_parser_t *parser); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: int mysql_parser_parse(const void *buf, size_t len, mysql_parser_t *parser); 859623: 859623: 859623: } 859623: 859623: 859623: static inline void mysql_parser_set_command(int cmd, mysql_parser_t *parser) 859623: { 859623: parser->cmd = cmd; 859623: } 859623: 859623: static inline void mysql_parser_get_local_inline(const char **local_inline_name, 859623: size_t *local_inline_len, 859623: mysql_parser_t *parser) 859623: { 859623: *local_inline_name = (const char *)parser->buf + parser->local_inline_offset; 859623: *local_inline_len = parser->local_inline_length; 859623: } 859623: 859623: static inline void mysql_result_set_cursor_init(mysql_result_set_cursor_t *cursor, 859623: mysql_parser_t *parser) 859623: { 859623: cursor->head = &parser->result_set_list; 859623: cursor->current = cursor->head; 859623: } 859623: 859623: static inline void mysql_result_set_cursor_rewind(mysql_result_set_cursor_t *cursor) 859623: { 859623: cursor->current = cursor->head; 859623: } 859623: 859623: static inline void mysql_result_set_cursor_deinit(mysql_result_set_cursor_t *cursor) 859623: { 859623: } 859623: 859623: static inline int mysql_result_set_cursor_next(struct __mysql_result_set **result_set, 859623: mysql_result_set_cursor_t *cursor) 859623: { 859623: if (cursor->current->next != cursor->head) 859623: { 859623: cursor->current = cursor->current->next; 859623: *result_set = ((struct __mysql_result_set *)((char *)(cursor->current)-(unsigned long)(&((struct __mysql_result_set *)0)->list))); 859623: return 0; 859623: } 859623: return 1; 859623: } 859623: # 27 "/<>/_include/workflow/MySQLMessage.h" 2 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace protocol 859623: { 859623: 859623: class MySQLMessage : public ProtocolMessage 859623: { 859623: public: 859623: mysql_parser_t *get_parser() const; 859623: int get_seqid() const; 859623: void set_seqid(int seqid); 859623: int get_command() const; 859623: 859623: protected: 859623: virtual int append(const void *buf, size_t *size); 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen) { return 1; } 859623: 859623: void set_command(int cmd) const; 859623: 859623: 859623: mysql_stream_t *stream_; 859623: mysql_parser_t *parser_; 859623: 859623: 859623: unsigned char heads_[256][4]; 859623: uint8_t seqid_; 859623: std::string buf_; 859623: size_t cur_size_; 859623: 859623: public: 859623: MySQLMessage(); 859623: virtual ~MySQLMessage(); 859623: 859623: MySQLMessage(MySQLMessage&& move); 859623: 859623: MySQLMessage& operator= (MySQLMessage&& move); 859623: }; 859623: 859623: class MySQLRequest : public MySQLMessage 859623: { 859623: public: 859623: void set_query(const char *query); 859623: void set_query(const std::string& query); 859623: void set_query(const char *query, size_t length); 859623: 859623: std::string get_query() const; 859623: bool query_is_unset() const; 859623: 859623: public: 859623: MySQLRequest() = default; 859623: 859623: MySQLRequest(MySQLRequest&& move) = default; 859623: 859623: MySQLRequest& operator= (MySQLRequest&& move) = default; 859623: }; 859623: 859623: class MySQLResponse : public MySQLMessage 859623: { 859623: public: 859623: bool is_ok_packet() const; 859623: bool is_error_packet() const; 859623: int get_packet_type() const; 859623: 859623: unsigned long long get_affected_rows() const; 859623: unsigned long long get_last_insert_id() const; 859623: int get_warnings() const; 859623: int get_error_code() const; 859623: std::string get_error_msg() const; 859623: std::string get_sql_state() const; 859623: std::string get_info() const; 859623: 859623: void set_ok_packet(); 859623: 859623: public: 859623: MySQLResponse() = default; 859623: 859623: MySQLResponse(MySQLResponse&& move) = default; 859623: 859623: MySQLResponse& operator= (MySQLResponse&& move) = default; 859623: 859623: protected: 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen); 859623: }; 859623: 859623: } 859623: 859623: 859623: # 1 "/<>/_include/workflow/MySQLMessage.inl" 1 859623: # 25 "/<>/_include/workflow/MySQLMessage.inl" 859623: # 1 "/<>/_include/workflow/SSLWrapper.h" 1 859623: # 25 "/<>/_include/workflow/SSLWrapper.h" 859623: namespace protocol 859623: { 859623: 859623: class SSLHandshaker : public ProtocolMessage 859623: { 859623: public: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: protected: 859623: SSL *ssl; 859623: 859623: public: 859623: SSLHandshaker(SSL *ssl) 859623: { 859623: this->ssl = ssl; 859623: } 859623: 859623: public: 859623: SSLHandshaker(SSLHandshaker&& handshaker) = default; 859623: SSLHandshaker& operator = (SSLHandshaker&& handshaker) = default; 859623: }; 859623: 859623: class SSLWrapper : public ProtocolWrapper 859623: { 859623: protected: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: protected: 859623: virtual int feedback(const void *buf, size_t size); 859623: 859623: protected: 859623: int append_message(); 859623: 859623: protected: 859623: SSL *ssl; 859623: 859623: public: 859623: SSLWrapper(ProtocolMessage *message, SSL *ssl) : 859623: ProtocolWrapper(message) 859623: { 859623: this->ssl = ssl; 859623: } 859623: 859623: public: 859623: SSLWrapper(SSLWrapper&& wrapper) = default; 859623: SSLWrapper& operator = (SSLWrapper&& wrapper) = default; 859623: }; 859623: 859623: class ServerSSLWrapper : public SSLWrapper 859623: { 859623: protected: 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: public: 859623: ServerSSLWrapper(ProtocolMessage *message, SSL *ssl) : 859623: SSLWrapper(message, ssl) 859623: { 859623: } 859623: 859623: public: 859623: ServerSSLWrapper(ServerSSLWrapper&& wrapper) = default; 859623: ServerSSLWrapper& operator = (ServerSSLWrapper&& wrapper) = default; 859623: }; 859623: 859623: } 859623: # 26 "/<>/_include/workflow/MySQLMessage.inl" 2 859623: 859623: namespace protocol 859623: { 859623: 859623: class MySQLHandshakeRequest : public MySQLRequest 859623: { 859623: private: 859623: virtual int encode(struct iovec vectors[], int max) { return 0; } 859623: }; 859623: 859623: class MySQLHandshakeResponse : public MySQLResponse 859623: { 859623: public: 859623: std::string get_server_version() const { return server_version_; } 859623: std::string get_auth_plugin_name() const { return auth_plugin_name_; } 859623: 859623: void get_seed(unsigned char seed[20]) const 859623: { 859623: memcpy(seed, auth_plugin_data_, 20); 859623: } 859623: 859623: virtual int encode(struct iovec vectors[], int max); 859623: 859623: void server_set(uint8_t protocol_version, const std::string server_version, 859623: uint32_t connection_id, const unsigned char seed[20], 859623: uint32_t capability_flags, uint8_t character_set, 859623: uint16_t status_flags) 859623: { 859623: protocol_version_ = protocol_version; 859623: server_version_ = server_version; 859623: connection_id_ = connection_id; 859623: memcpy(auth_plugin_data_, seed, 20); 859623: capability_flags_ = capability_flags; 859623: character_set_ = character_set; 859623: status_flags_ = status_flags; 859623: } 859623: 859623: bool host_disallowed() const { return disallowed_; } 859623: uint32_t get_capability_flags() const { return capability_flags_; } 859623: uint16_t get_status_flags() const { return status_flags_; } 859623: 859623: private: 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen); 859623: 859623: std::string server_version_; 859623: std::string auth_plugin_name_; 859623: unsigned char auth_plugin_data_[20]; 859623: uint32_t connection_id_; 859623: uint32_t capability_flags_; 859623: uint16_t status_flags_; 859623: uint8_t character_set_; 859623: uint8_t auth_plugin_data_len_; 859623: uint8_t protocol_version_; 859623: bool disallowed_; 859623: 859623: public: 859623: MySQLHandshakeResponse() : disallowed_(false) { } 859623: 859623: MySQLHandshakeResponse(MySQLHandshakeResponse&& move) = default; 859623: 859623: MySQLHandshakeResponse& operator= (MySQLHandshakeResponse&& move) = default; 859623: }; 859623: 859623: class MySQLSSLRequest : public MySQLRequest 859623: { 859623: private: 859623: virtual int encode(struct iovec vectors[], int max); 859623: 859623: 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen) 859623: { 859623: return -2; 859623: } 859623: 859623: private: 859623: int character_set_; 859623: SSLHandshaker ssl_handshaker_; 859623: 859623: public: 859623: MySQLSSLRequest(int character_set, SSL *ssl) : ssl_handshaker_(ssl) 859623: { 859623: character_set_ = character_set; 859623: } 859623: 859623: MySQLSSLRequest(MySQLSSLRequest&& move) = default; 859623: MySQLSSLRequest& operator= (MySQLSSLRequest&& move) = default; 859623: }; 859623: 859623: class MySQLAuthRequest : public MySQLRequest 859623: { 859623: public: 859623: void set_auth(const std::string username, 859623: const std::string password, 859623: const std::string db, 859623: int character_set) 859623: { 859623: username_ = std::move(username); 859623: password_ = std::move(password); 859623: db_ = std::move(db); 859623: character_set_ = character_set; 859623: } 859623: 859623: void set_auth_plugin_name(std::string name) 859623: { 859623: auth_plugin_name_ = std::move(name); 859623: } 859623: 859623: void set_seed(const unsigned char seed[20]) 859623: { 859623: memcpy(seed_, seed, 20); 859623: } 859623: 859623: private: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen); 859623: 859623: std::string username_; 859623: std::string password_; 859623: std::string db_; 859623: std::string auth_plugin_name_; 859623: unsigned char seed_[20]; 859623: int character_set_; 859623: 859623: public: 859623: MySQLAuthRequest() : character_set_(33) { } 859623: 859623: MySQLAuthRequest(MySQLAuthRequest&& move) = default; 859623: 859623: MySQLAuthRequest& operator= (MySQLAuthRequest&& move) = default; 859623: }; 859623: 859623: class MySQLAuthResponse : public MySQLResponse 859623: { 859623: public: 859623: std::string get_auth_plugin_name() const { return auth_plugin_name_; } 859623: 859623: void get_seed(unsigned char seed[20]) const 859623: { 859623: memcpy(seed, seed_, 20); 859623: } 859623: 859623: bool is_continue() const 859623: { 859623: return continue_; 859623: } 859623: 859623: private: 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen); 859623: 859623: private: 859623: std::string auth_plugin_name_; 859623: unsigned char seed_[20]; 859623: bool continue_; 859623: 859623: public: 859623: MySQLAuthResponse() : continue_(false) { } 859623: 859623: MySQLAuthResponse(MySQLAuthResponse&& move) = default; 859623: 859623: MySQLAuthResponse& operator= (MySQLAuthResponse&& move) = default; 859623: }; 859623: 859623: class MySQLAuthSwitchRequest : public MySQLRequest 859623: { 859623: public: 859623: void set_password(std::string password) 859623: { 859623: password_ = std::move(password); 859623: } 859623: 859623: void set_auth_plugin_name(std::string name) 859623: { 859623: auth_plugin_name_ = std::move(name); 859623: } 859623: 859623: void set_seed(const unsigned char seed[20]) 859623: { 859623: memcpy(seed_, seed, 20); 859623: } 859623: 859623: private: 859623: virtual int encode(struct iovec vectors[], int max); 859623: 859623: 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen) 859623: { 859623: return -2; 859623: } 859623: 859623: std::string password_; 859623: std::string auth_plugin_name_; 859623: unsigned char seed_[20]; 859623: 859623: public: 859623: MySQLAuthSwitchRequest() { } 859623: 859623: MySQLAuthSwitchRequest(MySQLAuthSwitchRequest&& move) = default; 859623: 859623: MySQLAuthSwitchRequest& operator= (MySQLAuthSwitchRequest&& move) = default; 859623: }; 859623: 859623: class MySQLPublicKeyRequest : public MySQLRequest 859623: { 859623: public: 859623: void set_caching_sha2() { byte_ = 0x02; } 859623: void set_sha256() { byte_ = 0x01; } 859623: 859623: private: 859623: virtual int encode(struct iovec vectors[], int max) 859623: { 859623: buf_.assign(&byte_, 1); 859623: return MySQLRequest::encode(vectors, max); 859623: } 859623: 859623: 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen) 859623: { 859623: return -2; 859623: } 859623: 859623: char byte_; 859623: 859623: public: 859623: MySQLPublicKeyRequest() : byte_(0x01) { } 859623: 859623: MySQLPublicKeyRequest(MySQLPublicKeyRequest&& move) = default; 859623: 859623: MySQLPublicKeyRequest& operator= (MySQLPublicKeyRequest&& move) = default; 859623: }; 859623: 859623: class MySQLPublicKeyResponse : public MySQLResponse 859623: { 859623: public: 859623: std::string get_public_key() const 859623: { 859623: return public_key_; 859623: } 859623: 859623: void set_public_key(std::string key) 859623: { 859623: public_key_ = std::move(key); 859623: } 859623: 859623: private: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen); 859623: 859623: std::string public_key_; 859623: 859623: public: 859623: MySQLPublicKeyResponse() { } 859623: 859623: MySQLPublicKeyResponse(MySQLPublicKeyResponse&& move) = default; 859623: 859623: MySQLPublicKeyResponse& operator= (MySQLPublicKeyResponse&& move) = default; 859623: }; 859623: 859623: class MySQLRSAAuthRequest : public MySQLRequest 859623: { 859623: public: 859623: void set_password(std::string password) 859623: { 859623: password_ = std::move(password); 859623: } 859623: 859623: void set_public_key(std::string key) 859623: { 859623: public_key_ = std::move(key); 859623: } 859623: 859623: void set_seed(const unsigned char seed[20]) 859623: { 859623: memcpy(seed_, seed, 20); 859623: } 859623: 859623: private: 859623: virtual int encode(struct iovec vectors[], int max); 859623: 859623: 859623: virtual int decode_packet(const unsigned char *buf, size_t buflen) 859623: { 859623: return -2; 859623: } 859623: 859623: int rsa_encrypt(void *ctx); 859623: 859623: std::string password_; 859623: std::string public_key_; 859623: unsigned char seed_[20]; 859623: 859623: public: 859623: MySQLRSAAuthRequest() { } 859623: 859623: MySQLRSAAuthRequest(MySQLRSAAuthRequest&& move) = default; 859623: 859623: MySQLRSAAuthRequest& operator= (MySQLRSAAuthRequest&& move) = default; 859623: }; 859623: 859623: 859623: 859623: inline mysql_parser_t *MySQLMessage::get_parser() const 859623: { 859623: return parser_; 859623: } 859623: 859623: inline int MySQLMessage::get_seqid() const 859623: { 859623: return seqid_; 859623: } 859623: 859623: inline void MySQLMessage::set_seqid(int seqid) 859623: { 859623: seqid_ = seqid; 859623: } 859623: 859623: inline int MySQLMessage::get_command() const 859623: { 859623: return parser_->cmd; 859623: } 859623: 859623: inline void MySQLMessage::set_command(int cmd) const 859623: { 859623: mysql_parser_set_command(cmd, parser_); 859623: } 859623: 859623: inline MySQLMessage::MySQLMessage(): 859623: stream_(new mysql_stream_t), 859623: parser_(new mysql_parser_t), 859623: seqid_(0), 859623: cur_size_(0) 859623: { 859623: mysql_stream_init(stream_); 859623: mysql_parser_init(parser_); 859623: } 859623: 859623: inline bool MySQLRequest::query_is_unset() const 859623: { 859623: return buf_.empty(); 859623: } 859623: 859623: inline void MySQLRequest::set_query(const char *query) 859623: { 859623: set_query(query, strlen(query)); 859623: } 859623: 859623: inline void MySQLRequest::set_query(const std::string& query) 859623: { 859623: set_query(query.c_str(), query.size()); 859623: } 859623: 859623: inline int MySQLResponse::get_packet_type() const 859623: { 859623: return parser_->packet_type; 859623: } 859623: 859623: inline int MySQLResponse::get_error_code() const 859623: { 859623: return is_error_packet() ? parser_->error : 0; 859623: } 859623: 859623: inline std::string MySQLResponse::get_error_msg() const 859623: { 859623: if (is_error_packet()) 859623: { 859623: const char *s; 859623: size_t slen; 859623: 859623: mysql_parser_get_err_msg(&s, &slen, parser_); 859623: if (slen > 0) 859623: return std::string(s, slen); 859623: } 859623: 859623: return std::string(); 859623: } 859623: 859623: inline std::string MySQLResponse::get_sql_state() const 859623: { 859623: if (is_error_packet()) 859623: { 859623: const char *s; 859623: size_t slen; 859623: 859623: mysql_parser_get_net_state(&s, &slen, parser_); 859623: if (slen > 0) 859623: return std::string(s, slen); 859623: } 859623: 859623: return std::string(); 859623: } 859623: 859623: } 859623: # 120 "/<>/_include/workflow/MySQLMessage.h" 2 859623: # 33 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: # 1 "/<>/_include/workflow/DnsMessage.h" 1 859623: # 30 "/<>/_include/workflow/DnsMessage.h" 859623: # 1 "/<>/_include/workflow/dns_parser.h" 1 859623: # 31 "/<>/_include/workflow/dns_parser.h" 859623: #pragma pack(1) 859623: struct dns_header 859623: { 859623: uint16_t id; 859623: 859623: uint8_t rd : 1; 859623: uint8_t tc : 1; 859623: uint8_t aa : 1; 859623: uint8_t opcode : 4; 859623: uint8_t qr : 1; 859623: uint8_t rcode : 4; 859623: uint8_t z : 3; 859623: uint8_t ra : 1; 859623: # 56 "/<>/_include/workflow/dns_parser.h" 859623: uint16_t qdcount; 859623: uint16_t ancount; 859623: uint16_t nscount; 859623: uint16_t arcount; 859623: }; 859623: #pragma pack() 859623: 859623: struct dns_question 859623: { 859623: char *qname; 859623: uint16_t qtype; 859623: uint16_t qclass; 859623: }; 859623: 859623: struct dns_record_soa 859623: { 859623: char *mname; 859623: char *rname; 859623: uint32_t serial; 859623: int32_t refresh; 859623: int32_t retry; 859623: int32_t expire; 859623: uint32_t minimum; 859623: }; 859623: 859623: struct dns_record_srv 859623: { 859623: uint16_t priority; 859623: uint16_t weight; 859623: uint16_t port; 859623: char *target; 859623: }; 859623: 859623: struct dns_record_mx 859623: { 859623: int16_t preference; 859623: char *exchange; 859623: }; 859623: 859623: struct dns_record 859623: { 859623: char *name; 859623: uint16_t type; 859623: uint16_t rclass; 859623: uint32_t ttl; 859623: uint16_t rdlength; 859623: void *rdata; 859623: }; 859623: 859623: typedef struct __dns_parser 859623: { 859623: void *msgbuf; 859623: void *msgbase; 859623: const char *cur; 859623: size_t msgsize; 859623: size_t bufsize; 859623: char complete; 859623: char single_packet; 859623: struct dns_header header; 859623: struct dns_question question; 859623: struct list_head answer_list; 859623: struct list_head authority_list; 859623: struct list_head additional_list; 859623: } dns_parser_t; 859623: 859623: typedef struct __dns_record_cursor 859623: { 859623: const struct list_head *head; 859623: const struct list_head *next; 859623: } dns_record_cursor_t; 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: void dns_parser_init(dns_parser_t *parser); 859623: 859623: void dns_parser_set_id(uint16_t id, dns_parser_t *parser); 859623: int dns_parser_set_question(const char *name, 859623: uint16_t qtype, 859623: uint16_t qclass, 859623: dns_parser_t *parser); 859623: int dns_parser_set_question_name(const char *name, 859623: dns_parser_t *parser); 859623: 859623: int dns_parser_parse_all(dns_parser_t *parser); 859623: int dns_parser_append_message(const void *buf, size_t *n, 859623: dns_parser_t *parser); 859623: 859623: void dns_parser_deinit(dns_parser_t *parser); 859623: 859623: int dns_record_cursor_next(struct dns_record **record, 859623: dns_record_cursor_t *cursor); 859623: 859623: int dns_record_cursor_find_cname(const char *name, 859623: const char **cname, 859623: dns_record_cursor_t *cursor); 859623: 859623: int dns_add_raw_record(const char *name, uint16_t type, uint16_t rclass, 859623: uint32_t ttl, uint16_t rlen, const void *rdata, 859623: struct list_head *list); 859623: 859623: int dns_add_str_record(const char *name, uint16_t type, uint16_t rclass, 859623: uint32_t ttl, const char *rdata, 859623: struct list_head *list); 859623: 859623: int dns_add_soa_record(const char *name, uint16_t rclass, uint32_t ttl, 859623: const char *mname, const char *rname, 859623: uint32_t serial, int32_t refresh, 859623: int32_t retry, int32_t expire, uint32_t minimum, 859623: struct list_head *list); 859623: 859623: int dns_add_srv_record(const char *name, uint16_t rclass, uint32_t ttl, 859623: uint16_t priority, uint16_t weight, 859623: uint16_t port, const char *target, 859623: struct list_head *list); 859623: 859623: int dns_add_mx_record(const char *name, uint16_t rclass, uint32_t ttl, 859623: int16_t preference, const char *exchange, 859623: struct list_head *list); 859623: 859623: const char *dns_type2str(int type); 859623: const char *dns_class2str(int dnsclass); 859623: const char *dns_opcode2str(int opcode); 859623: const char *dns_rcode2str(int rcode); 859623: 859623: 859623: } 859623: 859623: 859623: static inline void dns_answer_cursor_init(dns_record_cursor_t *cursor, 859623: const dns_parser_t *parser) 859623: { 859623: cursor->head = &parser->answer_list; 859623: cursor->next = cursor->head; 859623: } 859623: 859623: static inline void dns_authority_cursor_init(dns_record_cursor_t *cursor, 859623: const dns_parser_t *parser) 859623: { 859623: cursor->head = &parser->authority_list; 859623: cursor->next = cursor->head; 859623: } 859623: 859623: static inline void dns_additional_cursor_init(dns_record_cursor_t *cursor, 859623: const dns_parser_t *parser) 859623: { 859623: cursor->head = &parser->additional_list; 859623: cursor->next = cursor->head; 859623: } 859623: 859623: static inline void dns_record_cursor_deinit(dns_record_cursor_t *cursor) 859623: { 859623: } 859623: # 31 "/<>/_include/workflow/DnsMessage.h" 2 859623: 859623: namespace protocol 859623: { 859623: 859623: class DnsMessage : public ProtocolMessage 859623: { 859623: protected: 859623: virtual int encode(struct iovec vectors[], int max); 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: public: 859623: int get_id() const 859623: { 859623: return parser->header.id; 859623: } 859623: int get_qr() const 859623: { 859623: return parser->header.qr; 859623: } 859623: int get_opcode() const 859623: { 859623: return parser->header.opcode; 859623: } 859623: int get_aa() const 859623: { 859623: return parser->header.aa; 859623: } 859623: int get_tc() const 859623: { 859623: return parser->header.tc; 859623: } 859623: int get_rd() const 859623: { 859623: return parser->header.rd; 859623: } 859623: int get_ra() const 859623: { 859623: return parser->header.ra; 859623: } 859623: int get_rcode() const 859623: { 859623: return parser->header.rcode; 859623: } 859623: int get_qdcount() const 859623: { 859623: return parser->header.qdcount; 859623: } 859623: int get_ancount() const 859623: { 859623: return parser->header.ancount; 859623: } 859623: int get_nscount() const 859623: { 859623: return parser->header.nscount; 859623: } 859623: int get_arcount() const 859623: { 859623: return parser->header.arcount; 859623: } 859623: 859623: void set_id(int id) 859623: { 859623: parser->header.id = id; 859623: } 859623: void set_qr(int qr) 859623: { 859623: parser->header.qr = qr; 859623: } 859623: void set_opcode(int opcode) 859623: { 859623: parser->header.opcode = opcode; 859623: } 859623: void set_aa(int aa) 859623: { 859623: parser->header.aa = aa; 859623: } 859623: void set_tc(int tc) 859623: { 859623: parser->header.tc = tc; 859623: } 859623: void set_rd(int rd) 859623: { 859623: parser->header.rd = rd; 859623: } 859623: void set_ra(int ra) 859623: { 859623: parser->header.ra = ra; 859623: } 859623: void set_rcode(int rcode) 859623: { 859623: parser->header.rcode = rcode; 859623: } 859623: 859623: int get_question_type() const 859623: { 859623: return parser->question.qtype; 859623: } 859623: int get_question_class() const 859623: { 859623: return parser->question.qclass; 859623: } 859623: std::string get_question_name() const 859623: { 859623: const char *name = parser->question.qname; 859623: if (name == 859623: # 135 "/<>/_include/workflow/DnsMessage.h" 3 4 859623: __null 859623: # 135 "/<>/_include/workflow/DnsMessage.h" 859623: ) 859623: return ""; 859623: return name; 859623: } 859623: void set_question_type(int qtype) 859623: { 859623: parser->question.qtype = qtype; 859623: } 859623: void set_question_class(int qclass) 859623: { 859623: parser->question.qclass = qclass; 859623: } 859623: void set_question_name(const std::string& name) 859623: { 859623: char *pname = parser->question.qname; 859623: if (pname != 859623: # 150 "/<>/_include/workflow/DnsMessage.h" 3 4 859623: __null 859623: # 150 "/<>/_include/workflow/DnsMessage.h" 859623: ) 859623: free(pname); 859623: parser->question.qname = strdup(name.c_str()); 859623: } 859623: 859623: int add_a_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: const void *data); 859623: 859623: int add_aaaa_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: const void *data); 859623: 859623: int add_ns_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: const char *data); 859623: 859623: int add_cname_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: const char *data); 859623: 859623: int add_ptr_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: const char *data); 859623: 859623: int add_soa_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: const char *mname, const char *rname, 859623: uint32_t serial, int32_t refresh, 859623: int32_t retry, int32_t expire, uint32_t minimum); 859623: 859623: int add_srv_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: uint16_t priority, uint16_t weight, 859623: uint16_t port, const char *target); 859623: 859623: int add_mx_record(int section, const char *name, 859623: uint16_t rclass, uint32_t ttl, 859623: int16_t preference, const char *exchange); 859623: 859623: int add_raw_record(int section, const char *name, uint16_t type, 859623: uint16_t rclass, uint32_t ttl, 859623: const void *data, uint16_t dlen); 859623: 859623: 859623: bool is_single_packet() const 859623: { 859623: return parser->single_packet; 859623: } 859623: void set_single_packet(bool single) 859623: { 859623: parser->single_packet = single; 859623: } 859623: 859623: public: 859623: DnsMessage() : 859623: parser(new dns_parser_t) 859623: { 859623: dns_parser_init(parser); 859623: this->cur_size = 0; 859623: } 859623: 859623: virtual ~DnsMessage() 859623: { 859623: if (this->parser) 859623: { 859623: dns_parser_deinit(parser); 859623: delete this->parser; 859623: } 859623: } 859623: 859623: DnsMessage(DnsMessage&& msg); 859623: DnsMessage& operator = (DnsMessage&& msg); 859623: 859623: protected: 859623: dns_parser_t *parser; 859623: std::string msgbuf; 859623: size_t cur_size; 859623: 859623: private: 859623: int encode_reply(); 859623: int encode_truncation_reply(); 859623: struct list_head *get_section(int section); 859623: 859623: 859623: uint16_t msgsize; 859623: }; 859623: 859623: class DnsRequest : public DnsMessage 859623: { 859623: public: 859623: DnsRequest() = default; 859623: DnsRequest(DnsRequest&& req) = default; 859623: DnsRequest& operator = (DnsRequest&& req) = default; 859623: 859623: void set_question(const char *host, uint16_t qtype, uint16_t qclass) 859623: { 859623: dns_parser_set_question(host, qtype, qclass, this->parser); 859623: } 859623: }; 859623: 859623: class DnsResponse : public DnsMessage 859623: { 859623: public: 859623: DnsResponse() 859623: { 859623: this->request_id = 0; 859623: } 859623: 859623: DnsResponse(DnsResponse&& req) = default; 859623: DnsResponse& operator = (DnsResponse&& req) = default; 859623: 859623: const dns_parser_t *get_parser() const 859623: { 859623: return this->parser; 859623: } 859623: 859623: void set_request_id(uint16_t id) 859623: { 859623: this->request_id = id; 859623: } 859623: 859623: void set_request_name(const std::string& name) 859623: { 859623: std::string& req_name = this->request_name; 859623: 859623: req_name = name; 859623: while (req_name.size() > 1 && req_name.back() == '.') 859623: req_name.pop_back(); 859623: } 859623: 859623: protected: 859623: virtual int append(const void *buf, size_t *size); 859623: 859623: private: 859623: uint16_t request_id; 859623: std::string request_name; 859623: }; 859623: 859623: } 859623: # 34 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: # 1 "/<>/_include/workflow/Workflow.h" 1 859623: # 22 "/<>/_include/workflow/Workflow.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/assert.h" 1 3 859623: # 66 "/usr/arm-linux-gnueabi/include/assert.h" 3 859623: 859623: # 66 "/usr/arm-linux-gnueabi/include/assert.h" 3 859623: extern "C" { 859623: 859623: 859623: extern void __assert_fail (const char *__assertion, const char *__file, 859623: unsigned int __line, const char *__function) 859623: noexcept (true) __attribute__ ((__noreturn__)) __attribute__ ((__cold__)); 859623: 859623: 859623: extern void __assert_perror_fail (int __errnum, const char *__file, 859623: unsigned int __line, const char *__function) 859623: noexcept (true) __attribute__ ((__noreturn__)) __attribute__ ((__cold__)); 859623: 859623: 859623: 859623: 859623: extern void __assert (const char *__assertion, const char *__file, int __line) 859623: noexcept (true) __attribute__ ((__noreturn__)) __attribute__ ((__cold__)); 859623: 859623: 859623: } 859623: # 23 "/<>/_include/workflow/Workflow.h" 2 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 24 "/<>/_include/workflow/Workflow.h" 2 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 1 3 859623: # 45 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/cstdint" 1 3 859623: # 50 "/usr/arm-linux-gnueabi/include/c++/15/cstdint" 3 859623: namespace std 859623: { 859623: 859623: using ::int8_t; 859623: using ::int16_t; 859623: using ::int32_t; 859623: using ::int64_t; 859623: 859623: using ::int_fast8_t; 859623: using ::int_fast16_t; 859623: using ::int_fast32_t; 859623: using ::int_fast64_t; 859623: 859623: using ::int_least8_t; 859623: using ::int_least16_t; 859623: using ::int_least32_t; 859623: using ::int_least64_t; 859623: 859623: using ::intmax_t; 859623: using ::intptr_t; 859623: 859623: using ::uint8_t; 859623: using ::uint16_t; 859623: using ::uint32_t; 859623: using ::uint64_t; 859623: 859623: using ::uint_fast8_t; 859623: using ::uint_fast16_t; 859623: using ::uint_fast32_t; 859623: using ::uint_fast64_t; 859623: 859623: using ::uint_least8_t; 859623: using ::uint_least16_t; 859623: using ::uint_least32_t; 859623: using ::uint_least64_t; 859623: 859623: using ::uintmax_t; 859623: using ::uintptr_t; 859623: # 144 "/usr/arm-linux-gnueabi/include/c++/15/cstdint" 3 859623: } 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 2 3 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 61 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 3 859623: template 859623: struct __static_sign 859623: : integral_constant 859623: { }; 859623: 859623: template 859623: struct __static_abs 859623: : integral_constant::value> 859623: { }; 859623: 859623: template 859623: struct __static_gcd 859623: : __static_gcd<_Qn, (_Pn % _Qn)> 859623: { }; 859623: 859623: template 859623: struct __static_gcd<_Pn, 0> 859623: : integral_constant::value> 859623: { }; 859623: 859623: template 859623: struct __static_gcd<0, _Qn> 859623: : integral_constant::value> 859623: { }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __safe_multiply 859623: { 859623: private: 859623: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 859623: 859623: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; 859623: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; 859623: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; 859623: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; 859623: 859623: static_assert(__a1 == 0 || __b1 == 0, 859623: "overflow in multiplication"); 859623: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), 859623: "overflow in multiplication"); 859623: static_assert(__b0 * __a0 <= 0x7fffffffffffffffLL, 859623: "overflow in multiplication"); 859623: static_assert((__a0 * __b1 + __b0 * __a1) * __c 859623: <= 0x7fffffffffffffffLL - __b0 * __a0, 859623: "overflow in multiplication"); 859623: 859623: public: 859623: static const intmax_t value = _Pn * _Qn; 859623: }; 859623: 859623: 859623: 859623: template 859623: struct __big_less 859623: : integral_constant 859623: { }; 859623: 859623: template 859623: struct __big_add 859623: { 859623: static constexpr uintmax_t __lo = __lo1 + __lo2; 859623: static constexpr uintmax_t __hi = (__hi1 + __hi2 + 859623: (__lo1 + __lo2 < __lo1)); 859623: }; 859623: 859623: 859623: template 859623: struct __big_sub 859623: { 859623: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, 859623: "Internal library error"); 859623: static constexpr uintmax_t __lo = __lo1 - __lo2; 859623: static constexpr uintmax_t __hi = (__hi1 - __hi2 - 859623: (__lo1 < __lo2)); 859623: }; 859623: 859623: 859623: template 859623: struct __big_mul 859623: { 859623: private: 859623: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 859623: static constexpr uintmax_t __x0 = __x % __c; 859623: static constexpr uintmax_t __x1 = __x / __c; 859623: static constexpr uintmax_t __y0 = __y % __c; 859623: static constexpr uintmax_t __y1 = __y / __c; 859623: static constexpr uintmax_t __x0y0 = __x0 * __y0; 859623: static constexpr uintmax_t __x0y1 = __x0 * __y1; 859623: static constexpr uintmax_t __x1y0 = __x1 * __y0; 859623: static constexpr uintmax_t __x1y1 = __x1 * __y1; 859623: static constexpr uintmax_t __mix = __x0y1 + __x1y0; 859623: static constexpr uintmax_t __mix_lo = __mix * __c; 859623: static constexpr uintmax_t __mix_hi 859623: = __mix / __c + ((__mix < __x0y1) ? __c : 0); 859623: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; 859623: public: 859623: static constexpr uintmax_t __hi = _Res::__hi; 859623: static constexpr uintmax_t __lo = _Res::__lo; 859623: }; 859623: 859623: 859623: 859623: template 859623: struct __big_div_impl 859623: { 859623: private: 859623: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), 859623: "Internal library error"); 859623: static_assert(__n1 < __d, "Internal library error"); 859623: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 859623: static constexpr uintmax_t __d1 = __d / __c; 859623: static constexpr uintmax_t __d0 = __d % __c; 859623: 859623: static constexpr uintmax_t __q1x = __n1 / __d1; 859623: static constexpr uintmax_t __r1x = __n1 % __d1; 859623: static constexpr uintmax_t __m = __q1x * __d0; 859623: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; 859623: static constexpr uintmax_t __r1z = __r1y + __d; 859623: static constexpr uintmax_t __r1 859623: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) 859623: ? (__r1z + __d) : __r1z : __r1y) - __m; 859623: static constexpr uintmax_t __q1 859623: = __q1x - ((__r1y < __m) 859623: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); 859623: static constexpr uintmax_t __q0x = __r1 / __d1; 859623: static constexpr uintmax_t __r0x = __r1 % __d1; 859623: static constexpr uintmax_t __n = __q0x * __d0; 859623: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; 859623: static constexpr uintmax_t __r0z = __r0y + __d; 859623: static constexpr uintmax_t __r0 859623: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) 859623: ? (__r0z + __d) : __r0z : __r0y) - __n; 859623: static constexpr uintmax_t __q0 859623: = __q0x - ((__r0y < __n) ? ((__r0z >= __d) 859623: && (__r0z < __n)) ? 2 : 1 : 0); 859623: 859623: public: 859623: static constexpr uintmax_t __quot = __q1 * __c + __q0; 859623: static constexpr uintmax_t __rem = __r0; 859623: 859623: private: 859623: typedef __big_mul<__quot, __d> _Prod; 859623: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; 859623: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 859623: "Internal library error"); 859623: }; 859623: 859623: template 859623: struct __big_div 859623: { 859623: private: 859623: static_assert(__d != 0, "Internal library error"); 859623: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), 859623: "This library calls __builtin_clzll on uintmax_t, which " 859623: "is unsafe on your platform. Please complain to " 859623: "http://gcc.gnu.org/bugzilla/"); 859623: static constexpr int __shift = __builtin_clzll(__d); 859623: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; 859623: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; 859623: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; 859623: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; 859623: static constexpr uintmax_t __new_d = __d * __c1; 859623: static constexpr uintmax_t __new_n0 = __n0 * __c1; 859623: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; 859623: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; 859623: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; 859623: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; 859623: 859623: public: 859623: static constexpr uintmax_t __quot_hi = __n1 / __d; 859623: static constexpr uintmax_t __quot_lo = _Res::__quot; 859623: static constexpr uintmax_t __rem = _Res::__rem / __c1; 859623: 859623: private: 859623: typedef __big_mul<__quot_lo, __d> _P0; 859623: typedef __big_mul<__quot_hi, __d> _P1; 859623: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; 859623: 859623: static_assert(_P1::__hi == 0, "Internal library error"); 859623: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); 859623: 859623: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 859623: "Internal library error"); 859623: static_assert(__rem < __d, "Internal library error"); 859623: }; 859623: # 270 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 3 859623: template 859623: struct ratio 859623: { 859623: static_assert(_Den != 0, "denominator cannot be zero"); 859623: static_assert(_Num >= -0x7fffffffffffffffLL && _Den >= -0x7fffffffffffffffLL, 859623: "out of range"); 859623: 859623: 859623: static constexpr intmax_t num = 859623: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; 859623: 859623: static constexpr intmax_t den = 859623: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; 859623: 859623: typedef ratio type; 859623: }; 859623: 859623: 859623: template 859623: constexpr intmax_t ratio<_Num, _Den>::num; 859623: 859623: template 859623: constexpr intmax_t ratio<_Num, _Den>::den; 859623: 859623: 859623: 859623: 859623: template 859623: struct __is_ratio 859623: : std::false_type 859623: { }; 859623: 859623: template 859623: struct __is_ratio> 859623: : std::true_type 859623: { }; 859623: # 314 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 3 859623: template 859623: constexpr bool 859623: __are_both_ratios() noexcept 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: return __and_<__is_ratio<_R1>, __is_ratio<_R2>>::value; 859623: 859623: } 859623: 859623: template 859623: struct __ratio_multiply 859623: { 859623: static_assert(std::__are_both_ratios<_R1, _R2>(), 859623: "both template arguments must be a std::ratio"); 859623: 859623: private: 859623: static const intmax_t __gcd1 = 859623: __static_gcd<_R1::num, _R2::den>::value; 859623: static const intmax_t __gcd2 = 859623: __static_gcd<_R2::num, _R1::den>::value; 859623: 859623: public: 859623: typedef ratio< 859623: __safe_multiply<(_R1::num / __gcd1), 859623: (_R2::num / __gcd2)>::value, 859623: __safe_multiply<(_R1::den / __gcd2), 859623: (_R2::den / __gcd1)>::value> type; 859623: 859623: static constexpr intmax_t num = type::num; 859623: static constexpr intmax_t den = type::den; 859623: }; 859623: 859623: 859623: template 859623: constexpr intmax_t __ratio_multiply<_R1, _R2>::num; 859623: 859623: template 859623: constexpr intmax_t __ratio_multiply<_R1, _R2>::den; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; 859623: 859623: 859623: 859623: template 859623: struct __ratio_divide 859623: { 859623: static_assert(_R2::num != 0, "division by 0"); 859623: 859623: typedef typename __ratio_multiply< 859623: _R1, 859623: ratio<_R2::den, _R2::num>>::type type; 859623: 859623: static constexpr intmax_t num = type::num; 859623: static constexpr intmax_t den = type::den; 859623: }; 859623: 859623: 859623: template 859623: constexpr intmax_t __ratio_divide<_R1, _R2>::num; 859623: 859623: template 859623: constexpr intmax_t __ratio_divide<_R1, _R2>::den; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: using ratio_divide = typename __ratio_divide<_R1, _R2>::type; 859623: 859623: 859623: template 859623: struct ratio_equal 859623: : integral_constant 859623: { 859623: static_assert(std::__are_both_ratios<_R1, _R2>(), 859623: "both template arguments must be a std::ratio"); 859623: }; 859623: 859623: 859623: template 859623: struct ratio_not_equal 859623: : integral_constant::value> 859623: { }; 859623: 859623: 859623: 859623: 859623: template, 859623: typename _Right = __big_mul<_R2::num,_R1::den> > 859623: struct __ratio_less_impl_1 859623: : integral_constant::value> 859623: { }; 859623: 859623: template::value 859623: != __static_sign<_R2::num>::value)), 859623: bool = (__static_sign<_R1::num>::value == -1 859623: && __static_sign<_R2::num>::value == -1)> 859623: struct __ratio_less_impl 859623: : __ratio_less_impl_1<_R1, _R2>::type 859623: { }; 859623: 859623: template 859623: struct __ratio_less_impl<_R1, _R2, true, false> 859623: : integral_constant 859623: { }; 859623: 859623: template 859623: struct __ratio_less_impl<_R1, _R2, false, true> 859623: : __ratio_less_impl_1, 859623: ratio<-_R1::num, _R1::den> >::type 859623: { }; 859623: 859623: 859623: 859623: 859623: template 859623: struct ratio_less 859623: : __ratio_less_impl<_R1, _R2>::type 859623: { 859623: static_assert(std::__are_both_ratios<_R1, _R2>(), 859623: "both template arguments must be a std::ratio"); 859623: }; 859623: 859623: 859623: template 859623: struct ratio_less_equal 859623: : integral_constant::value> 859623: { }; 859623: 859623: 859623: template 859623: struct ratio_greater 859623: : integral_constant::value> 859623: { }; 859623: 859623: 859623: template 859623: struct ratio_greater_equal 859623: : integral_constant::value> 859623: { }; 859623: # 489 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 3 859623: template= 0), 859623: bool = (_R2::num >= 0), 859623: bool = ratio_less::value, _R1::den>, 859623: ratio<__static_abs<_R2::num>::value, _R2::den> >::value> 859623: struct __ratio_add_impl 859623: { 859623: private: 859623: typedef typename __ratio_add_impl< 859623: ratio<-_R1::num, _R1::den>, 859623: ratio<-_R2::num, _R2::den> >::type __t; 859623: public: 859623: typedef ratio<-__t::num, __t::den> type; 859623: }; 859623: 859623: 859623: template 859623: struct __ratio_add_impl<_R1, _R2, true, true, __b> 859623: { 859623: private: 859623: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 859623: static constexpr uintmax_t __d2 = _R2::den / __g; 859623: typedef __big_mul<_R1::den, __d2> __d; 859623: typedef __big_mul<_R1::num, _R2::den / __g> __x; 859623: typedef __big_mul<_R2::num, _R1::den / __g> __y; 859623: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 859623: static_assert(__n::__hi >= __x::__hi, "Internal library error"); 859623: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 859623: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 859623: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 859623: static_assert(__n_final::__rem == 0, "Internal library error"); 859623: static_assert(__n_final::__quot_hi == 0 && 859623: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); 859623: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 859623: static_assert(__d_final::__hi == 0 && 859623: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); 859623: public: 859623: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 859623: }; 859623: 859623: template 859623: struct __ratio_add_impl<_R1, _R2, false, true, true> 859623: : __ratio_add_impl<_R2, _R1> 859623: { }; 859623: 859623: 859623: template 859623: struct __ratio_add_impl<_R1, _R2, true, false, false> 859623: { 859623: private: 859623: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 859623: static constexpr uintmax_t __d2 = _R2::den / __g; 859623: typedef __big_mul<_R1::den, __d2> __d; 859623: typedef __big_mul<_R1::num, _R2::den / __g> __x; 859623: typedef __big_mul<-_R2::num, _R1::den / __g> __y; 859623: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 859623: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 859623: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 859623: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 859623: static_assert(__n_final::__rem == 0, "Internal library error"); 859623: static_assert(__n_final::__quot_hi == 0 && 859623: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); 859623: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 859623: static_assert(__d_final::__hi == 0 && 859623: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); 859623: public: 859623: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 859623: }; 859623: 859623: template 859623: struct __ratio_add 859623: { 859623: static_assert(std::__are_both_ratios<_R1, _R2>(), 859623: "both template arguments must be a std::ratio"); 859623: 859623: typedef typename __ratio_add_impl<_R1, _R2>::type type; 859623: static constexpr intmax_t num = type::num; 859623: static constexpr intmax_t den = type::den; 859623: }; 859623: 859623: 859623: template 859623: constexpr intmax_t __ratio_add<_R1, _R2>::num; 859623: 859623: template 859623: constexpr intmax_t __ratio_add<_R1, _R2>::den; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: using ratio_add = typename __ratio_add<_R1, _R2>::type; 859623: 859623: 859623: 859623: template 859623: struct __ratio_subtract 859623: { 859623: typedef typename __ratio_add< 859623: _R1, 859623: ratio<-_R2::num, _R2::den>>::type type; 859623: 859623: static constexpr intmax_t num = type::num; 859623: static constexpr intmax_t den = type::den; 859623: }; 859623: 859623: 859623: template 859623: constexpr intmax_t __ratio_subtract<_R1, _R2>::num; 859623: 859623: template 859623: constexpr intmax_t __ratio_subtract<_R1, _R2>::den; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; 859623: # 620 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 3 859623: using atto = ratio< 1, 1000000000000000000>; 859623: using femto = ratio< 1, 1000000000000000>; 859623: using pico = ratio< 1, 1000000000000>; 859623: using nano = ratio< 1, 1000000000>; 859623: using micro = ratio< 1, 1000000>; 859623: using milli = ratio< 1, 1000>; 859623: using centi = ratio< 1, 100>; 859623: using deci = ratio< 1, 10>; 859623: using deca = ratio< 10, 1>; 859623: using hecto = ratio< 100, 1>; 859623: using kilo = ratio< 1000, 1>; 859623: using mega = ratio< 1000000, 1>; 859623: using giga = ratio< 1000000000, 1>; 859623: using tera = ratio< 1000000000000, 1>; 859623: using peta = ratio< 1000000000000000, 1>; 859623: using exa = ratio< 1000000000000000000, 1>; 859623: # 648 "/usr/arm-linux-gnueabi/include/c++/15/ratio" 3 859623: 859623: } 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/limits" 1 3 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wpedantic" 859623: #pragma GCC diagnostic ignored "-Wlong-long" 859623: #pragma GCC diagnostic ignored "-Wc++23-extensions" 859623: # 165 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: enum float_round_style 859623: { 859623: round_indeterminate = -1, 859623: round_toward_zero = 0, 859623: round_to_nearest = 1, 859623: round_toward_infinity = 2, 859623: round_toward_neg_infinity = 3 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: enum float_denorm_style 859623: { 859623: 859623: denorm_indeterminate = -1, 859623: 859623: denorm_absent = 0, 859623: 859623: denorm_present = 1 859623: }; 859623: # 209 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: struct __numeric_limits_base 859623: { 859623: 859623: 859623: static constexpr bool is_specialized = false; 859623: 859623: 859623: 859623: 859623: static constexpr int digits = 0; 859623: 859623: 859623: static constexpr int digits10 = 0; 859623: 859623: 859623: 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: 859623: 859623: static constexpr bool is_signed = false; 859623: 859623: 859623: static constexpr bool is_integer = false; 859623: 859623: 859623: 859623: 859623: static constexpr bool is_exact = false; 859623: 859623: 859623: 859623: static constexpr int radix = 0; 859623: 859623: 859623: 859623: static constexpr int min_exponent = 0; 859623: 859623: 859623: 859623: static constexpr int min_exponent10 = 0; 859623: 859623: 859623: 859623: 859623: static constexpr int max_exponent = 0; 859623: 859623: 859623: 859623: static constexpr int max_exponent10 = 0; 859623: 859623: 859623: static constexpr bool has_infinity = false; 859623: 859623: 859623: 859623: static constexpr bool has_quiet_NaN = false; 859623: 859623: 859623: 859623: static constexpr bool has_signaling_NaN = false; 859623: 859623: 859623: static constexpr float_denorm_style has_denorm = denorm_absent; 859623: 859623: 859623: 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: 859623: 859623: static constexpr bool is_iec559 = false; 859623: 859623: 859623: 859623: 859623: static constexpr bool is_bounded = false; 859623: # 295 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: static constexpr bool is_modulo = false; 859623: 859623: 859623: static constexpr bool traps = false; 859623: 859623: 859623: static constexpr bool tinyness_before = false; 859623: 859623: 859623: 859623: 859623: static constexpr float_round_style round_style = 859623: round_toward_zero; 859623: }; 859623: # 318 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: template 859623: struct numeric_limits : public __numeric_limits_base 859623: { 859623: 859623: 859623: static constexpr _Tp 859623: min() noexcept { return _Tp(); } 859623: 859623: 859623: static constexpr _Tp 859623: max() noexcept { return _Tp(); } 859623: 859623: 859623: 859623: 859623: static constexpr _Tp 859623: lowest() noexcept { return _Tp(); } 859623: 859623: 859623: 859623: 859623: static constexpr _Tp 859623: epsilon() noexcept { return _Tp(); } 859623: 859623: 859623: static constexpr _Tp 859623: round_error() noexcept { return _Tp(); } 859623: 859623: 859623: static constexpr _Tp 859623: infinity() noexcept { return _Tp(); } 859623: 859623: 859623: 859623: static constexpr _Tp 859623: quiet_NaN() noexcept { return _Tp(); } 859623: 859623: 859623: 859623: static constexpr _Tp 859623: signaling_NaN() noexcept { return _Tp(); } 859623: 859623: 859623: 859623: 859623: static constexpr _Tp 859623: denorm_min() noexcept { return _Tp(); } 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: struct numeric_limits 859623: : public numeric_limits<_Tp> { }; 859623: 859623: template 859623: struct numeric_limits 859623: : public numeric_limits<_Tp> { }; 859623: 859623: template 859623: struct numeric_limits 859623: : public numeric_limits<_Tp> { }; 859623: # 390 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr bool 859623: min() noexcept { return false; } 859623: 859623: static constexpr bool 859623: max() noexcept { return true; } 859623: 859623: 859623: static constexpr bool 859623: lowest() noexcept { return min(); } 859623: 859623: static constexpr int digits = 1; 859623: static constexpr int digits10 = 0; 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = false; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr bool 859623: epsilon() noexcept { return false; } 859623: 859623: static constexpr bool 859623: round_error() noexcept { return false; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr bool 859623: infinity() noexcept { return false; } 859623: 859623: static constexpr bool 859623: quiet_NaN() noexcept { return false; } 859623: 859623: static constexpr bool 859623: signaling_NaN() noexcept { return false; } 859623: 859623: static constexpr bool 859623: denorm_min() noexcept { return false; } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: 859623: 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr char 859623: 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); } 859623: 859623: static constexpr char 859623: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } 859623: 859623: 859623: static constexpr char 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); 859623: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = ((char)(-1) < 0); 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr char 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr char 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr 859623: char infinity() noexcept { return char(); } 859623: 859623: static constexpr char 859623: quiet_NaN() noexcept { return char(); } 859623: 859623: static constexpr char 859623: signaling_NaN() noexcept { return char(); } 859623: 859623: static constexpr char 859623: denorm_min() noexcept { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = !is_signed; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr signed char 859623: min() noexcept { return -0x7f - 1; } 859623: 859623: static constexpr signed char 859623: max() noexcept { return 0x7f; } 859623: 859623: 859623: static constexpr signed char 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr signed char 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr signed char 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr signed char 859623: infinity() noexcept { return static_cast(0); } 859623: 859623: static constexpr signed char 859623: quiet_NaN() noexcept { return static_cast(0); } 859623: 859623: static constexpr signed char 859623: signaling_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr signed char 859623: denorm_min() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr unsigned char 859623: min() noexcept { return 0; } 859623: 859623: static constexpr unsigned char 859623: max() noexcept { return 0x7f * 2U + 1; } 859623: 859623: 859623: static constexpr unsigned char 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits 859623: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = false; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr unsigned char 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr unsigned char 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr unsigned char 859623: infinity() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned char 859623: quiet_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned char 859623: signaling_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned char 859623: denorm_min() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = true; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr wchar_t 859623: 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); } 859623: 859623: static constexpr wchar_t 859623: 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); } 859623: 859623: 859623: static constexpr wchar_t 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = ((wchar_t)(-1) < 0); 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr wchar_t 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr wchar_t 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr wchar_t 859623: infinity() noexcept { return wchar_t(); } 859623: 859623: static constexpr wchar_t 859623: quiet_NaN() noexcept { return wchar_t(); } 859623: 859623: static constexpr wchar_t 859623: signaling_NaN() noexcept { return wchar_t(); } 859623: 859623: static constexpr wchar_t 859623: denorm_min() noexcept { return wchar_t(); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = !is_signed; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: # 803 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr char16_t 859623: 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); } 859623: 859623: static constexpr char16_t 859623: 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); } 859623: 859623: static constexpr char16_t 859623: lowest() noexcept { return min(); } 859623: 859623: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); 859623: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); 859623: static constexpr int max_digits10 = 0; 859623: static constexpr bool is_signed = ((char16_t)(-1) < 0); 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr char16_t 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr char16_t 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr char16_t 859623: infinity() noexcept { return char16_t(); } 859623: 859623: static constexpr char16_t 859623: quiet_NaN() noexcept { return char16_t(); } 859623: 859623: static constexpr char16_t 859623: signaling_NaN() noexcept { return char16_t(); } 859623: 859623: static constexpr char16_t 859623: denorm_min() noexcept { return char16_t(); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = !is_signed; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr char32_t 859623: 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); } 859623: 859623: static constexpr char32_t 859623: 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); } 859623: 859623: static constexpr char32_t 859623: lowest() noexcept { return min(); } 859623: 859623: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); 859623: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); 859623: static constexpr int max_digits10 = 0; 859623: static constexpr bool is_signed = ((char32_t)(-1) < 0); 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr char32_t 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr char32_t 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr char32_t 859623: infinity() noexcept { return char32_t(); } 859623: 859623: static constexpr char32_t 859623: quiet_NaN() noexcept { return char32_t(); } 859623: 859623: static constexpr char32_t 859623: signaling_NaN() noexcept { return char32_t(); } 859623: 859623: static constexpr char32_t 859623: denorm_min() noexcept { return char32_t(); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = !is_signed; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style = round_toward_zero; 859623: }; 859623: 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr short 859623: min() noexcept { return -0x7fff - 1; } 859623: 859623: static constexpr short 859623: max() noexcept { return 0x7fff; } 859623: 859623: 859623: static constexpr short 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); 859623: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr short 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr short 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr short 859623: infinity() noexcept { return short(); } 859623: 859623: static constexpr short 859623: quiet_NaN() noexcept { return short(); } 859623: 859623: static constexpr short 859623: signaling_NaN() noexcept { return short(); } 859623: 859623: static constexpr short 859623: denorm_min() noexcept { return short(); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr unsigned short 859623: min() noexcept { return 0; } 859623: 859623: static constexpr unsigned short 859623: max() noexcept { return 0x7fff * 2U + 1; } 859623: 859623: 859623: static constexpr unsigned short 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits 859623: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = false; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr unsigned short 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr unsigned short 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr unsigned short 859623: infinity() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned short 859623: quiet_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned short 859623: signaling_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned short 859623: denorm_min() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = true; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr int 859623: min() noexcept { return -0x7fffffff - 1; } 859623: 859623: static constexpr int 859623: max() noexcept { return 0x7fffffff; } 859623: 859623: 859623: static constexpr int 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); 859623: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr int 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr int 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr int 859623: infinity() noexcept { return static_cast(0); } 859623: 859623: static constexpr int 859623: quiet_NaN() noexcept { return static_cast(0); } 859623: 859623: static constexpr int 859623: signaling_NaN() noexcept { return static_cast(0); } 859623: 859623: static constexpr int 859623: denorm_min() noexcept { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr unsigned int 859623: min() noexcept { return 0; } 859623: 859623: static constexpr unsigned int 859623: max() noexcept { return 0x7fffffff * 2U + 1; } 859623: 859623: 859623: static constexpr unsigned int 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits 859623: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = false; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr unsigned int 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr unsigned int 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr unsigned int 859623: infinity() noexcept { return static_cast(0); } 859623: 859623: static constexpr unsigned int 859623: quiet_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned int 859623: signaling_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned int 859623: denorm_min() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = true; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr long 859623: min() noexcept { return -0x7fffffffL - 1; } 859623: 859623: static constexpr long 859623: max() noexcept { return 0x7fffffffL; } 859623: 859623: 859623: static constexpr long 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); 859623: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr long 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr long 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr long 859623: infinity() noexcept { return static_cast(0); } 859623: 859623: static constexpr long 859623: quiet_NaN() noexcept { return static_cast(0); } 859623: 859623: static constexpr long 859623: signaling_NaN() noexcept { return static_cast(0); } 859623: 859623: static constexpr long 859623: denorm_min() noexcept { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr unsigned long 859623: min() noexcept { return 0; } 859623: 859623: static constexpr unsigned long 859623: max() noexcept { return 0x7fffffffL * 2UL + 1; } 859623: 859623: 859623: static constexpr unsigned long 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits 859623: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = false; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr unsigned long 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr unsigned long 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr unsigned long 859623: infinity() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned long 859623: quiet_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned long 859623: signaling_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned long 859623: denorm_min() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = true; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr long long 859623: min() noexcept { return -0x7fffffffffffffffLL - 1; } 859623: 859623: static constexpr long long 859623: max() noexcept { return 0x7fffffffffffffffLL; } 859623: 859623: 859623: static constexpr long long 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits 859623: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr long long 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr long long 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr long long 859623: infinity() noexcept { return static_cast(0); } 859623: 859623: static constexpr long long 859623: quiet_NaN() noexcept { return static_cast(0); } 859623: 859623: static constexpr long long 859623: signaling_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr long long 859623: denorm_min() noexcept { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr unsigned long long 859623: min() noexcept { return 0; } 859623: 859623: static constexpr unsigned long long 859623: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } 859623: 859623: 859623: static constexpr unsigned long long 859623: lowest() noexcept { return min(); } 859623: 859623: 859623: static constexpr int digits 859623: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); 859623: static constexpr int digits10 859623: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); 859623: 859623: static constexpr int max_digits10 = 0; 859623: 859623: static constexpr bool is_signed = false; 859623: static constexpr bool is_integer = true; 859623: static constexpr bool is_exact = true; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr unsigned long long 859623: epsilon() noexcept { return 0; } 859623: 859623: static constexpr unsigned long long 859623: round_error() noexcept { return 0; } 859623: 859623: static constexpr int min_exponent = 0; 859623: static constexpr int min_exponent10 = 0; 859623: static constexpr int max_exponent = 0; 859623: static constexpr int max_exponent10 = 0; 859623: 859623: static constexpr bool has_infinity = false; 859623: static constexpr bool has_quiet_NaN = false; 859623: static constexpr bool has_signaling_NaN = false; 859623: static constexpr float_denorm_style has_denorm 859623: = denorm_absent; 859623: static constexpr bool has_denorm_loss = false; 859623: 859623: static constexpr unsigned long long 859623: infinity() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned long long 859623: quiet_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned long long 859623: signaling_NaN() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr unsigned long long 859623: denorm_min() noexcept 859623: { return static_cast(0); } 859623: 859623: static constexpr bool is_iec559 = false; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = true; 859623: 859623: static constexpr bool traps = true; 859623: static constexpr bool tinyness_before = false; 859623: static constexpr float_round_style round_style 859623: = round_toward_zero; 859623: }; 859623: # 1676 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr float 859623: min() noexcept { return 1.1754943508222875e-38F; } 859623: 859623: static constexpr float 859623: max() noexcept { return 3.4028234663852886e+38F; } 859623: 859623: 859623: static constexpr float 859623: lowest() noexcept { return -3.4028234663852886e+38F; } 859623: 859623: 859623: static constexpr int digits = 24; 859623: static constexpr int digits10 = 6; 859623: 859623: static constexpr int max_digits10 859623: = (2 + (24) * 643L / 2136); 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = false; 859623: static constexpr bool is_exact = false; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr float 859623: epsilon() noexcept { return 1.1920928955078125e-7F; } 859623: 859623: static constexpr float 859623: round_error() noexcept { return 0.5F; } 859623: 859623: static constexpr int min_exponent = (-125); 859623: static constexpr int min_exponent10 = (-37); 859623: static constexpr int max_exponent = 128; 859623: static constexpr int max_exponent10 = 38; 859623: 859623: static constexpr bool has_infinity = 1; 859623: static constexpr bool has_quiet_NaN = 1; 859623: static constexpr bool has_signaling_NaN = has_quiet_NaN; 859623: static constexpr float_denorm_style has_denorm 859623: = bool(1) ? denorm_present : denorm_absent; 859623: static constexpr bool has_denorm_loss 859623: = false; 859623: 859623: static constexpr float 859623: infinity() noexcept { return __builtin_huge_valf(); } 859623: 859623: static constexpr float 859623: quiet_NaN() noexcept { return __builtin_nanf(""); } 859623: 859623: static constexpr float 859623: signaling_NaN() noexcept { return __builtin_nansf(""); } 859623: 859623: static constexpr float 859623: denorm_min() noexcept { return 1.4012984643248171e-45F; } 859623: 859623: static constexpr bool is_iec559 859623: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = false; 859623: static constexpr bool tinyness_before 859623: = false; 859623: static constexpr float_round_style round_style 859623: = round_to_nearest; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr double 859623: min() noexcept { return double(2.2250738585072014e-308L); } 859623: 859623: static constexpr double 859623: max() noexcept { return double(1.7976931348623157e+308L); } 859623: 859623: 859623: static constexpr double 859623: lowest() noexcept { return -double(1.7976931348623157e+308L); } 859623: 859623: 859623: static constexpr int digits = 53; 859623: static constexpr int digits10 = 15; 859623: 859623: static constexpr int max_digits10 859623: = (2 + (53) * 643L / 2136); 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = false; 859623: static constexpr bool is_exact = false; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr double 859623: epsilon() noexcept { return double(2.2204460492503131e-16L); } 859623: 859623: static constexpr double 859623: round_error() noexcept { return 0.5; } 859623: 859623: static constexpr int min_exponent = (-1021); 859623: static constexpr int min_exponent10 = (-307); 859623: static constexpr int max_exponent = 1024; 859623: static constexpr int max_exponent10 = 308; 859623: 859623: static constexpr bool has_infinity = 1; 859623: static constexpr bool has_quiet_NaN = 1; 859623: static constexpr bool has_signaling_NaN = has_quiet_NaN; 859623: static constexpr float_denorm_style has_denorm 859623: = bool(1) ? denorm_present : denorm_absent; 859623: static constexpr bool has_denorm_loss 859623: = false; 859623: 859623: static constexpr double 859623: infinity() noexcept { return __builtin_huge_val(); } 859623: 859623: static constexpr double 859623: quiet_NaN() noexcept { return __builtin_nan(""); } 859623: 859623: static constexpr double 859623: signaling_NaN() noexcept { return __builtin_nans(""); } 859623: 859623: static constexpr double 859623: denorm_min() noexcept { return double(4.9406564584124654e-324L); } 859623: 859623: static constexpr bool is_iec559 859623: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = false; 859623: static constexpr bool tinyness_before 859623: = false; 859623: static constexpr float_round_style round_style 859623: = round_to_nearest; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template<> 859623: struct numeric_limits 859623: { 859623: static constexpr bool is_specialized = true; 859623: 859623: static constexpr long double 859623: min() noexcept { return 2.2250738585072014e-308L; } 859623: 859623: static constexpr long double 859623: max() noexcept { return 1.7976931348623157e+308L; } 859623: 859623: 859623: static constexpr long double 859623: lowest() noexcept { return -1.7976931348623157e+308L; } 859623: 859623: 859623: static constexpr int digits = 53; 859623: static constexpr int digits10 = 15; 859623: 859623: static constexpr int max_digits10 859623: = (2 + (53) * 643L / 2136); 859623: 859623: static constexpr bool is_signed = true; 859623: static constexpr bool is_integer = false; 859623: static constexpr bool is_exact = false; 859623: static constexpr int radix = 2; 859623: 859623: static constexpr long double 859623: epsilon() noexcept { return 2.2204460492503131e-16L; } 859623: 859623: static constexpr long double 859623: round_error() noexcept { return 0.5L; } 859623: 859623: static constexpr int min_exponent = (-1021); 859623: static constexpr int min_exponent10 = (-307); 859623: static constexpr int max_exponent = 1024; 859623: static constexpr int max_exponent10 = 308; 859623: 859623: static constexpr bool has_infinity = 1; 859623: static constexpr bool has_quiet_NaN = 1; 859623: static constexpr bool has_signaling_NaN = has_quiet_NaN; 859623: static constexpr float_denorm_style has_denorm 859623: = bool(1) ? denorm_present : denorm_absent; 859623: static constexpr bool has_denorm_loss 859623: = false; 859623: 859623: static constexpr long double 859623: infinity() noexcept { return __builtin_huge_vall(); } 859623: 859623: static constexpr long double 859623: quiet_NaN() noexcept { return __builtin_nanl(""); } 859623: 859623: static constexpr long double 859623: signaling_NaN() noexcept { return __builtin_nansl(""); } 859623: 859623: static constexpr long double 859623: denorm_min() noexcept { return 4.9406564584124654e-324L; } 859623: 859623: static constexpr bool is_iec559 859623: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 859623: static constexpr bool is_bounded = true; 859623: static constexpr bool is_modulo = false; 859623: 859623: static constexpr bool traps = false; 859623: static constexpr bool tinyness_before = 859623: false; 859623: static constexpr float_round_style round_style = 859623: round_to_nearest; 859623: }; 859623: # 1996 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: __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; }; 859623: 859623: 859623: __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; }; 859623: # 2229 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: 859623: } 859623: # 2239 "/usr/arm-linux-gnueabi/include/c++/15/limits" 3 859623: #pragma GCC diagnostic pop 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ctime" 1 3 859623: # 60 "/usr/arm-linux-gnueabi/include/c++/15/ctime" 3 859623: namespace std 859623: { 859623: using ::clock_t; 859623: using ::time_t; 859623: using ::tm; 859623: 859623: using ::clock; 859623: using ::difftime; 859623: using ::mktime; 859623: using ::time; 859623: using ::asctime; 859623: using ::ctime; 859623: using ::gmtime; 859623: using ::localtime; 859623: using ::strftime; 859623: } 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/parse_numbers.h" 1 3 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 2 3 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: namespace chrono 859623: { 859623: 859623: 859623: 859623: 859623: template> 859623: class duration; 859623: 859623: 859623: template 859623: class time_point; 859623: 859623: } 859623: # 83 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: struct __duration_common_type 859623: { }; 859623: 859623: template 859623: struct __duration_common_type<_CT, _Period1, _Period2, 859623: __void_t> 859623: { 859623: private: 859623: using __gcd_num = __static_gcd<_Period1::num, _Period2::num>; 859623: using __gcd_den = __static_gcd<_Period1::den, _Period2::den>; 859623: using __cr = typename _CT::type; 859623: using __r = ratio<__gcd_num::value, 859623: (_Period1::den / __gcd_den::value) * _Period2::den>; 859623: 859623: public: 859623: using type = chrono::duration<__cr, typename __r::type>; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct common_type, 859623: chrono::duration<_Rep2, _Period2>> 859623: : __duration_common_type, 859623: typename _Period1::type, 859623: typename _Period2::type> 859623: { }; 859623: 859623: 859623: template 859623: struct common_type, 859623: chrono::duration<_Rep, _Period>> 859623: { 859623: using type = chrono::duration::type, 859623: typename _Period::type>; 859623: }; 859623: 859623: 859623: template 859623: struct common_type> 859623: { 859623: using type = chrono::duration::type, 859623: typename _Period::type>; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __timepoint_common_type 859623: { }; 859623: 859623: template 859623: struct __timepoint_common_type<_CT, _Clock, __void_t> 859623: { 859623: using type = chrono::time_point<_Clock, typename _CT::type>; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct common_type, 859623: chrono::time_point<_Clock, _Duration2>> 859623: : __timepoint_common_type, _Clock> 859623: { }; 859623: 859623: 859623: template 859623: struct common_type, 859623: chrono::time_point<_Clock, _Duration>> 859623: { using type = chrono::time_point<_Clock, _Duration>; }; 859623: 859623: 859623: template 859623: struct common_type> 859623: { using type = chrono::time_point<_Clock, _Duration>; }; 859623: 859623: 859623: 859623: 859623: namespace chrono 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct __duration_cast_impl 859623: { 859623: template 859623: static constexpr _ToDur 859623: __cast(const duration<_Rep, _Period>& __d) 859623: { 859623: typedef typename _ToDur::rep __to_rep; 859623: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) 859623: * static_cast<_CR>(_CF::num) 859623: / static_cast<_CR>(_CF::den))); 859623: } 859623: }; 859623: 859623: template 859623: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> 859623: { 859623: template 859623: static constexpr _ToDur 859623: __cast(const duration<_Rep, _Period>& __d) 859623: { 859623: typedef typename _ToDur::rep __to_rep; 859623: return _ToDur(static_cast<__to_rep>(__d.count())); 859623: } 859623: }; 859623: 859623: template 859623: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> 859623: { 859623: template 859623: static constexpr _ToDur 859623: __cast(const duration<_Rep, _Period>& __d) 859623: { 859623: typedef typename _ToDur::rep __to_rep; 859623: return _ToDur(static_cast<__to_rep>( 859623: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); 859623: } 859623: }; 859623: 859623: template 859623: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> 859623: { 859623: template 859623: static constexpr _ToDur 859623: __cast(const duration<_Rep, _Period>& __d) 859623: { 859623: typedef typename _ToDur::rep __to_rep; 859623: return _ToDur(static_cast<__to_rep>( 859623: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); 859623: } 859623: }; 859623: 859623: template 859623: struct __is_duration 859623: : std::false_type 859623: { }; 859623: 859623: template 859623: struct __is_duration> 859623: : std::true_type 859623: { }; 859623: 859623: template 859623: using __enable_if_is_duration 859623: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; 859623: 859623: template 859623: using __disable_if_is_duration 859623: = typename enable_if::value, _Tp>::type; 859623: # 276 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: [[__nodiscard__]] 859623: constexpr __enable_if_is_duration<_ToDur> 859623: duration_cast(const duration<_Rep, _Period>& __d) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: using __to_period = typename _ToDur::period; 859623: using __to_rep = typename _ToDur::rep; 859623: using __cf = ratio_divide<_Period, __to_period>; 859623: using __cr = typename common_type<__to_rep, _Rep, intmax_t>::type; 859623: using __dc = __duration_cast_impl<_ToDur, __cf, __cr, 859623: __cf::num == 1, __cf::den == 1>; 859623: return __dc::__cast(__d); 859623: 859623: 859623: 859623: } 859623: # 310 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: struct treat_as_floating_point 859623: : is_floating_point<_Rep> 859623: { }; 859623: # 478 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: namespace __detail 859623: { 859623: template 859623: constexpr _Tp 859623: __ceil_impl(const _Tp& __t, const _Up& __u) 859623: { 859623: return (__t < __u) ? (__t + _Tp{1}) : __t; 859623: } 859623: 859623: 859623: template 859623: constexpr _ToDur 859623: ceil(const duration<_Rep, _Period>& __d) 859623: { 859623: return __detail::__ceil_impl(chrono::duration_cast<_ToDur>(__d), __d); 859623: } 859623: } 859623: 859623: 859623: 859623: template 859623: struct duration_values 859623: { 859623: static constexpr _Rep 859623: zero() noexcept 859623: { return _Rep(0); } 859623: 859623: static constexpr _Rep 859623: max() noexcept 859623: { return numeric_limits<_Rep>::max(); } 859623: 859623: static constexpr _Rep 859623: min() noexcept 859623: { return numeric_limits<_Rep>::lowest(); } 859623: }; 859623: 859623: template 859623: class duration 859623: { 859623: static_assert(!__is_duration<_Rep>::value, 859623: "rep cannot be a std::chrono::duration"); 859623: static_assert(__is_ratio<_Period>::value, 859623: "period must be a specialization of std::ratio"); 859623: static_assert(_Period::num > 0, "period must be positive"); 859623: 859623: template 859623: using __is_float = treat_as_floating_point<_Rep2>; 859623: 859623: static constexpr intmax_t 859623: _S_gcd(intmax_t __m, intmax_t __n) noexcept 859623: { 859623: # 543 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: return (__n == 0) ? __m : _S_gcd(__n, __m % __n); 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: template 859623: using __divide = ratio<(_R1::num / __gcd1) * (_R2::den / __gcd2), 859623: (_R1::den / __gcd2) * (_R2::num / __gcd1)>; 859623: 859623: 859623: template 859623: using __is_harmonic 859623: = __bool_constant<__divide<_Period2, _Period>::den == 1>; 859623: 859623: public: 859623: 859623: using rep = _Rep; 859623: using period = typename _Period::type; 859623: 859623: 859623: constexpr duration() = default; 859623: 859623: duration(const duration&) = default; 859623: 859623: 859623: 859623: template, 859623: __or_<__is_float, __not_<__is_float<_Rep2>>>>> 859623: constexpr explicit duration(const _Rep2& __rep) 859623: : __r(static_cast(__rep)) { } 859623: 859623: template, 859623: __or_<__is_float, 859623: __and_<__is_harmonic<_Period2>, 859623: __not_<__is_float<_Rep2>>>>>> 859623: constexpr duration(const duration<_Rep2, _Period2>& __d) 859623: : __r(duration_cast(__d).count()) { } 859623: 859623: ~duration() = default; 859623: duration& operator=(const duration&) = default; 859623: 859623: 859623: constexpr rep 859623: count() const 859623: { return __r; } 859623: 859623: 859623: 859623: constexpr duration::type, period> 859623: operator+() const 859623: { return duration::type, period>(__r); } 859623: 859623: constexpr duration::type, period> 859623: operator-() const 859623: { return duration::type, period>(-__r); } 859623: 859623: duration& 859623: operator++() 859623: { 859623: ++__r; 859623: return *this; 859623: } 859623: 859623: duration 859623: operator++(int) 859623: { return duration(__r++); } 859623: 859623: duration& 859623: operator--() 859623: { 859623: --__r; 859623: return *this; 859623: } 859623: 859623: duration 859623: operator--(int) 859623: { return duration(__r--); } 859623: 859623: duration& 859623: operator+=(const duration& __d) 859623: { 859623: __r += __d.count(); 859623: return *this; 859623: } 859623: 859623: duration& 859623: operator-=(const duration& __d) 859623: { 859623: __r -= __d.count(); 859623: return *this; 859623: } 859623: 859623: duration& 859623: operator*=(const rep& __rhs) 859623: { 859623: __r *= __rhs; 859623: return *this; 859623: } 859623: 859623: duration& 859623: operator/=(const rep& __rhs) 859623: { 859623: __r /= __rhs; 859623: return *this; 859623: } 859623: 859623: 859623: template 859623: 859623: __enable_if_t::value, duration&> 859623: operator%=(const rep& __rhs) 859623: { 859623: __r %= __rhs; 859623: return *this; 859623: } 859623: 859623: template 859623: 859623: __enable_if_t::value, duration&> 859623: operator%=(const duration& __d) 859623: { 859623: __r %= __d.count(); 859623: return *this; 859623: } 859623: 859623: 859623: static constexpr duration 859623: zero() noexcept 859623: { return duration(duration_values::zero()); } 859623: 859623: static constexpr duration 859623: min() noexcept 859623: { return duration(duration_values::min()); } 859623: 859623: static constexpr duration 859623: max() noexcept 859623: { return duration(duration_values::max()); } 859623: 859623: private: 859623: rep __r; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: constexpr typename common_type, 859623: duration<_Rep2, _Period2>>::type 859623: operator+(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep1, _Period1> __dur1; 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<__dur1,__dur2>::type __cd; 859623: return __cd(__cd(__lhs).count() + __cd(__rhs).count()); 859623: } 859623: 859623: 859623: template 859623: constexpr typename common_type, 859623: duration<_Rep2, _Period2>>::type 859623: operator-(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep1, _Period1> __dur1; 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<__dur1,__dur2>::type __cd; 859623: return __cd(__cd(__lhs).count() - __cd(__rhs).count()); 859623: } 859623: # 731 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template::type> 859623: using __common_rep_t = typename 859623: enable_if::value, _CRep>::type; 859623: # 743 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> 859623: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 859623: { 859623: typedef duration::type, _Period> 859623: __cd; 859623: return __cd(__cd(__d).count() * __s); 859623: } 859623: 859623: template 859623: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> 859623: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) 859623: { return __d * __s; } 859623: 859623: template 859623: constexpr 859623: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 859623: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 859623: { 859623: typedef duration::type, _Period> 859623: __cd; 859623: return __cd(__cd(__d).count() / __s); 859623: } 859623: 859623: template 859623: constexpr typename common_type<_Rep1, _Rep2>::type 859623: operator/(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep1, _Period1> __dur1; 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<__dur1,__dur2>::type __cd; 859623: return __cd(__lhs).count() / __cd(__rhs).count(); 859623: } 859623: 859623: 859623: template 859623: constexpr 859623: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 859623: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 859623: { 859623: typedef duration::type, _Period> 859623: __cd; 859623: return __cd(__cd(__d).count() % __s); 859623: } 859623: 859623: template 859623: constexpr typename common_type, 859623: duration<_Rep2, _Period2>>::type 859623: operator%(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep1, _Period1> __dur1; 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<__dur1,__dur2>::type __cd; 859623: return __cd(__cd(__lhs).count() % __cd(__rhs).count()); 859623: } 859623: # 811 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: constexpr bool 859623: operator==(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep1, _Period1> __dur1; 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<__dur1,__dur2>::type __ct; 859623: return __ct(__lhs).count() == __ct(__rhs).count(); 859623: } 859623: 859623: template 859623: constexpr bool 859623: operator<(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep1, _Period1> __dur1; 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<__dur1,__dur2>::type __ct; 859623: return __ct(__lhs).count() < __ct(__rhs).count(); 859623: } 859623: # 848 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: constexpr bool 859623: operator!=(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { return !(__lhs == __rhs); } 859623: 859623: 859623: template 859623: constexpr bool 859623: operator<=(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { return !(__rhs < __lhs); } 859623: 859623: template 859623: constexpr bool 859623: operator>(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { return __rhs < __lhs; } 859623: 859623: template 859623: constexpr bool 859623: operator>=(const duration<_Rep1, _Period1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { return !(__lhs < __rhs); } 859623: # 892 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: using nanoseconds = duration; 859623: 859623: 859623: using microseconds = duration; 859623: 859623: 859623: using milliseconds = duration; 859623: 859623: 859623: using seconds = duration; 859623: 859623: 859623: using minutes = duration>; 859623: 859623: 859623: using hours = duration>; 859623: # 925 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: class time_point 859623: { 859623: static_assert(__is_duration<_Dur>::value, 859623: "duration must be a specialization of std::chrono::duration"); 859623: 859623: public: 859623: typedef _Clock clock; 859623: typedef _Dur duration; 859623: typedef typename duration::rep rep; 859623: typedef typename duration::period period; 859623: 859623: constexpr time_point() : __d(duration::zero()) 859623: { } 859623: 859623: constexpr explicit time_point(const duration& __dur) 859623: : __d(__dur) 859623: { } 859623: 859623: 859623: template>> 859623: constexpr time_point(const time_point& __t) 859623: : __d(__t.time_since_epoch()) 859623: { } 859623: 859623: 859623: constexpr duration 859623: time_since_epoch() const 859623: { return __d; } 859623: # 981 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: time_point& 859623: operator+=(const duration& __dur) 859623: { 859623: __d += __dur; 859623: return *this; 859623: } 859623: 859623: time_point& 859623: operator-=(const duration& __dur) 859623: { 859623: __d -= __dur; 859623: return *this; 859623: } 859623: 859623: 859623: static constexpr time_point 859623: min() noexcept 859623: { return time_point(duration::min()); } 859623: 859623: static constexpr time_point 859623: max() noexcept 859623: { return time_point(duration::max()); } 859623: 859623: private: 859623: duration __d; 859623: }; 859623: # 1020 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: [[__nodiscard__]] constexpr 859623: __enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> 859623: time_point_cast(const time_point<_Clock, _Dur>& __t) 859623: { 859623: typedef time_point<_Clock, _ToDur> __time_point; 859623: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); 859623: } 859623: # 1101 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: constexpr time_point<_Clock, 859623: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 859623: operator+(const time_point<_Clock, _Dur1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<_Dur1,__dur2>::type __ct; 859623: typedef time_point<_Clock, __ct> __time_point; 859623: return __time_point(__lhs.time_since_epoch() + __rhs); 859623: } 859623: 859623: 859623: template 859623: constexpr time_point<_Clock, 859623: typename common_type, _Dur2>::type> 859623: operator+(const duration<_Rep1, _Period1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { 859623: typedef duration<_Rep1, _Period1> __dur1; 859623: typedef typename common_type<__dur1,_Dur2>::type __ct; 859623: typedef time_point<_Clock, __ct> __time_point; 859623: return __time_point(__rhs.time_since_epoch() + __lhs); 859623: } 859623: 859623: 859623: template 859623: constexpr time_point<_Clock, 859623: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 859623: operator-(const time_point<_Clock, _Dur1>& __lhs, 859623: const duration<_Rep2, _Period2>& __rhs) 859623: { 859623: typedef duration<_Rep2, _Period2> __dur2; 859623: typedef typename common_type<_Dur1,__dur2>::type __ct; 859623: typedef time_point<_Clock, __ct> __time_point; 859623: return __time_point(__lhs.time_since_epoch() -__rhs); 859623: } 859623: 859623: 859623: template 859623: constexpr typename common_type<_Dur1, _Dur2>::type 859623: operator-(const time_point<_Clock, _Dur1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: constexpr bool 859623: operator==(const time_point<_Clock, _Dur1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } 859623: # 1169 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: template 859623: constexpr bool 859623: operator!=(const time_point<_Clock, _Dur1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { return !(__lhs == __rhs); } 859623: 859623: 859623: template 859623: constexpr bool 859623: operator<(const time_point<_Clock, _Dur1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } 859623: 859623: template 859623: constexpr bool 859623: operator<=(const time_point<_Clock, _Dur1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { return !(__rhs < __lhs); } 859623: 859623: template 859623: constexpr bool 859623: operator>(const time_point<_Clock, _Dur1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { return __rhs < __lhs; } 859623: 859623: template 859623: constexpr bool 859623: operator>=(const time_point<_Clock, _Dur1>& __lhs, 859623: const time_point<_Clock, _Dur2>& __rhs) 859623: { return !(__lhs < __rhs); } 859623: # 1222 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: inline namespace _V2 { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct system_clock 859623: { 859623: typedef chrono::nanoseconds duration; 859623: typedef duration::rep rep; 859623: typedef duration::period period; 859623: typedef chrono::time_point time_point; 859623: 859623: static_assert(system_clock::duration::min() 859623: < system_clock::duration::zero(), 859623: "a clock's minimum duration cannot be less than its epoch"); 859623: 859623: static constexpr bool is_steady = false; 859623: 859623: static time_point 859623: now() noexcept; 859623: 859623: 859623: [[__gnu__::__always_inline__]] 859623: static std::time_t 859623: to_time_t(const time_point& __t) noexcept 859623: { 859623: return std::time_t(duration_cast 859623: (__t.time_since_epoch()).count()); 859623: } 859623: 859623: [[__gnu__::__always_inline__]] 859623: static time_point 859623: from_time_t(std::time_t __t) noexcept 859623: { 859623: typedef chrono::time_point __from; 859623: return time_point_cast 859623: (__from(chrono::seconds(__t))); 859623: } 859623: }; 859623: # 1272 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: struct steady_clock 859623: { 859623: typedef chrono::nanoseconds duration; 859623: typedef duration::rep rep; 859623: typedef duration::period period; 859623: typedef chrono::time_point time_point; 859623: 859623: static constexpr bool is_steady = true; 859623: 859623: static time_point 859623: now() noexcept; 859623: }; 859623: # 1294 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: using high_resolution_clock = system_clock; 859623: 859623: } 859623: # 1329 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: } 859623: # 1518 "/usr/arm-linux-gnueabi/include/c++/15/bits/chrono.h" 3 859623: 859623: } 859623: # 46 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 2 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_mutex.h" 1 3 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_mutex.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr.h" 1 3 859623: # 30 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr.h" 3 859623: #pragma GCC visibility push(default) 859623: # 157 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr-default.h" 1 3 859623: # 62 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr-default.h" 3 859623: typedef pthread_t __gthread_t; 859623: typedef pthread_key_t __gthread_key_t; 859623: typedef pthread_once_t __gthread_once_t; 859623: typedef pthread_mutex_t __gthread_mutex_t; 859623: 859623: 859623: 859623: typedef pthread_mutex_t __gthread_recursive_mutex_t; 859623: typedef pthread_cond_t __gthread_cond_t; 859623: typedef struct timespec __gthread_time_t; 859623: # 123 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr-default.h" 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 345 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr-default.h" 3 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_active_p (void) 859623: { 859623: return 1; 859623: } 859623: # 705 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr-default.h" 3 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 859623: void *__args) 859623: { 859623: return pthread_create (__threadid, __null, __func, __args); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_join (__gthread_t __threadid, void **__value_ptr) 859623: { 859623: return pthread_join (__threadid, __value_ptr); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_detach (__gthread_t __threadid) 859623: { 859623: return pthread_detach (__threadid); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 859623: { 859623: return pthread_equal (__t1, __t2); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) __gthread_t 859623: __gthread_self (void) 859623: { 859623: return pthread_self (); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_yield (void) 859623: { 859623: return sched_yield (); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 859623: { 859623: if (__gthread_active_p ()) 859623: return pthread_once (__once, __func); 859623: else 859623: return -1; 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 859623: { 859623: return pthread_key_create (__key, __dtor); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_key_delete (__gthread_key_t __key) 859623: { 859623: return pthread_key_delete (__key); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) void * 859623: __gthread_getspecific (__gthread_key_t __key) 859623: { 859623: return pthread_getspecific (__key); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 859623: { 859623: return pthread_setspecific (__key, __ptr); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) void 859623: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 859623: { 859623: if (__gthread_active_p ()) 859623: pthread_mutex_init (__mutex, __null); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 859623: { 859623: if (__gthread_active_p ()) 859623: return pthread_mutex_destroy (__mutex); 859623: else 859623: return 0; 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 859623: { 859623: if (__gthread_active_p ()) 859623: return pthread_mutex_lock (__mutex); 859623: else 859623: return 0; 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 859623: { 859623: if (__gthread_active_p ()) 859623: return pthread_mutex_trylock (__mutex); 859623: else 859623: return 0; 859623: } 859623: 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 859623: const __gthread_time_t *__abs_timeout) 859623: { 859623: if (__gthread_active_p ()) 859623: return pthread_mutex_timedlock (__mutex, __abs_timeout); 859623: else 859623: return 0; 859623: } 859623: 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 859623: { 859623: if (__gthread_active_p ()) 859623: return pthread_mutex_unlock (__mutex); 859623: else 859623: return 0; 859623: } 859623: # 854 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr-default.h" 3 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 859623: { 859623: return __gthread_mutex_lock (__mutex); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 859623: { 859623: return __gthread_mutex_trylock (__mutex); 859623: } 859623: 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 859623: const __gthread_time_t *__abs_timeout) 859623: { 859623: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 859623: } 859623: 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 859623: { 859623: return __gthread_mutex_unlock (__mutex); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 859623: { 859623: return __gthread_mutex_destroy (__mutex); 859623: } 859623: # 896 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr-default.h" 3 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_cond_broadcast (__gthread_cond_t *__cond) 859623: { 859623: return pthread_cond_broadcast (__cond); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_cond_signal (__gthread_cond_t *__cond) 859623: { 859623: return pthread_cond_signal (__cond); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 859623: { 859623: return pthread_cond_wait (__cond, __mutex); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 859623: const __gthread_time_t *__abs_timeout) 859623: { 859623: return pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 859623: __gthread_recursive_mutex_t *__mutex) 859623: { 859623: return __gthread_cond_wait (__cond, __mutex); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) int 859623: __gthread_cond_destroy (__gthread_cond_t* __cond) 859623: { 859623: return pthread_cond_destroy (__cond); 859623: } 859623: # 158 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/gthr.h" 2 3 859623: 859623: 859623: #pragma GCC visibility pop 859623: # 44 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_mutex.h" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 61 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_mutex.h" 3 859623: class __mutex_base 859623: { 859623: protected: 859623: typedef __gthread_mutex_t __native_type; 859623: 859623: 859623: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } }; 859623: 859623: constexpr __mutex_base() noexcept = default; 859623: # 82 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_mutex.h" 3 859623: __mutex_base(const __mutex_base&) = delete; 859623: __mutex_base& operator=(const __mutex_base&) = delete; 859623: }; 859623: # 98 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_mutex.h" 3 859623: class mutex : private __mutex_base 859623: { 859623: public: 859623: typedef __native_type* native_handle_type; 859623: 859623: 859623: constexpr 859623: 859623: mutex() noexcept = default; 859623: ~mutex() = default; 859623: 859623: mutex(const mutex&) = delete; 859623: mutex& operator=(const mutex&) = delete; 859623: 859623: void 859623: lock() 859623: { 859623: int __e = __gthread_mutex_lock(&_M_mutex); 859623: 859623: 859623: if (__e) 859623: __throw_system_error(__e); 859623: } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: try_lock() noexcept 859623: { 859623: 859623: return !__gthread_mutex_trylock(&_M_mutex); 859623: } 859623: 859623: void 859623: unlock() 859623: { 859623: 859623: __gthread_mutex_unlock(&_M_mutex); 859623: } 859623: 859623: native_handle_type 859623: native_handle() noexcept 859623: { return &_M_mutex; } 859623: }; 859623: 859623: 859623: 859623: 859623: class __condvar 859623: { 859623: using timespec = __gthread_time_t; 859623: 859623: public: 859623: __condvar() noexcept 859623: { 859623: 859623: 859623: 859623: } 859623: 859623: ~__condvar() 859623: { 859623: int __e __attribute__((__unused__)) = __gthread_cond_destroy(&_M_cond); 859623: do { if (std::__is_constant_evaluated() && !bool(__e != 16)) std::__glibcxx_assert_fail(); } while (false); 859623: } 859623: 859623: __condvar(const __condvar&) = delete; 859623: __condvar& operator=(const __condvar&) = delete; 859623: 859623: __gthread_cond_t* native_handle() noexcept { return &_M_cond; } 859623: 859623: 859623: void 859623: wait(mutex& __m) 859623: { 859623: int __e __attribute__((__unused__)) 859623: = __gthread_cond_wait(&_M_cond, __m.native_handle()); 859623: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 859623: } 859623: 859623: void 859623: wait_until(mutex& __m, timespec& __abs_time) 859623: { 859623: __gthread_cond_timedwait(&_M_cond, __m.native_handle(), &__abs_time); 859623: } 859623: 859623: 859623: void 859623: wait_until(mutex& __m, clockid_t __clock, timespec& __abs_time) 859623: { 859623: pthread_cond_clockwait(&_M_cond, __m.native_handle(), __clock, 859623: &__abs_time); 859623: } 859623: 859623: 859623: void 859623: notify_one() noexcept 859623: { 859623: int __e __attribute__((__unused__)) = __gthread_cond_signal(&_M_cond); 859623: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 859623: } 859623: 859623: void 859623: notify_all() noexcept 859623: { 859623: int __e __attribute__((__unused__)) = __gthread_cond_broadcast(&_M_cond); 859623: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); 859623: } 859623: 859623: protected: 859623: 859623: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, 0, 0, {0, 0}, 0, 0 } }; 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: struct defer_lock_t { explicit defer_lock_t() = default; }; 859623: 859623: 859623: struct try_to_lock_t { explicit try_to_lock_t() = default; }; 859623: 859623: 859623: 859623: struct adopt_lock_t { explicit adopt_lock_t() = default; }; 859623: 859623: 859623: constexpr defer_lock_t defer_lock { }; 859623: 859623: 859623: constexpr try_to_lock_t try_to_lock { }; 859623: 859623: 859623: constexpr adopt_lock_t adopt_lock { }; 859623: # 244 "/usr/arm-linux-gnueabi/include/c++/15/bits/std_mutex.h" 3 859623: template 859623: class lock_guard 859623: { 859623: public: 859623: typedef _Mutex mutex_type; 859623: 859623: [[__nodiscard__]] 859623: explicit lock_guard(mutex_type& __m) : _M_device(__m) 859623: { _M_device.lock(); } 859623: 859623: [[__nodiscard__]] 859623: lock_guard(mutex_type& __m, adopt_lock_t) noexcept : _M_device(__m) 859623: { } 859623: 859623: ~lock_guard() 859623: { _M_device.unlock(); } 859623: 859623: lock_guard(const lock_guard&) = delete; 859623: lock_guard& operator=(const lock_guard&) = delete; 859623: 859623: private: 859623: mutex_type& _M_device; 859623: }; 859623: 859623: 859623: 859623: } 859623: # 50 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/unique_lock.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/c++/15/bits/unique_lock.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/error_constants.h" 1 3 859623: # 36 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/error_constants.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: enum class errc 859623: { 859623: address_family_not_supported = 97, 859623: address_in_use = 98, 859623: address_not_available = 99, 859623: already_connected = 106, 859623: argument_list_too_long = 7, 859623: argument_out_of_domain = 33, 859623: bad_address = 14, 859623: bad_file_descriptor = 9, 859623: 859623: 859623: bad_message = 74, 859623: 859623: 859623: broken_pipe = 32, 859623: connection_aborted = 103, 859623: connection_already_in_progress = 114, 859623: connection_refused = 111, 859623: connection_reset = 104, 859623: cross_device_link = 18, 859623: destination_address_required = 89, 859623: device_or_resource_busy = 16, 859623: directory_not_empty = 39, 859623: executable_format_error = 8, 859623: file_exists = 17, 859623: file_too_large = 27, 859623: filename_too_long = 36, 859623: function_not_supported = 38, 859623: host_unreachable = 113, 859623: 859623: 859623: identifier_removed = 43, 859623: 859623: 859623: illegal_byte_sequence = 84, 859623: inappropriate_io_control_operation = 25, 859623: interrupted = 4, 859623: invalid_argument = 22, 859623: invalid_seek = 29, 859623: io_error = 5, 859623: is_a_directory = 21, 859623: message_size = 90, 859623: network_down = 100, 859623: network_reset = 102, 859623: network_unreachable = 101, 859623: no_buffer_space = 105, 859623: no_child_process = 10, 859623: 859623: 859623: no_link = 67, 859623: 859623: 859623: no_lock_available = 37, 859623: 859623: 859623: no_message_available = 61, 859623: 859623: 859623: no_message = 42, 859623: no_protocol_option = 92, 859623: no_space_on_device = 28, 859623: 859623: 859623: no_stream_resources = 63, 859623: 859623: 859623: no_such_device_or_address = 6, 859623: no_such_device = 19, 859623: no_such_file_or_directory = 2, 859623: no_such_process = 3, 859623: not_a_directory = 20, 859623: not_a_socket = 88, 859623: 859623: 859623: not_a_stream = 60, 859623: 859623: 859623: not_connected = 107, 859623: not_enough_memory = 12, 859623: 859623: 859623: not_supported = 95, 859623: 859623: 859623: 859623: operation_canceled = 125, 859623: 859623: 859623: operation_in_progress = 115, 859623: operation_not_permitted = 1, 859623: operation_not_supported = 95, 859623: operation_would_block = 11, 859623: 859623: 859623: owner_dead = 130, 859623: 859623: 859623: permission_denied = 13, 859623: 859623: 859623: protocol_error = 71, 859623: 859623: 859623: protocol_not_supported = 93, 859623: read_only_file_system = 30, 859623: resource_deadlock_would_occur = 35, 859623: resource_unavailable_try_again = 11, 859623: result_out_of_range = 34, 859623: 859623: 859623: state_not_recoverable = 131, 859623: 859623: 859623: 859623: stream_timeout = 62, 859623: 859623: 859623: 859623: text_file_busy = 26, 859623: 859623: 859623: timed_out = 110, 859623: too_many_files_open_in_system = 23, 859623: too_many_files_open = 24, 859623: too_many_links = 31, 859623: too_many_symbolic_link_levels = 40, 859623: 859623: 859623: value_too_large = 75, 859623: 859623: 859623: 859623: 859623: wrong_protocol_type = 91 859623: }; 859623: 859623: 859623: } 859623: # 43 "/usr/arm-linux-gnueabi/include/c++/15/bits/unique_lock.h" 2 3 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 61 "/usr/arm-linux-gnueabi/include/c++/15/bits/unique_lock.h" 3 859623: template 859623: class unique_lock 859623: { 859623: public: 859623: typedef _Mutex mutex_type; 859623: 859623: unique_lock() noexcept 859623: : _M_device(0), _M_owns(false) 859623: { } 859623: 859623: [[__nodiscard__]] 859623: explicit unique_lock(mutex_type& __m) 859623: : _M_device(std::__addressof(__m)), _M_owns(false) 859623: { 859623: lock(); 859623: _M_owns = true; 859623: } 859623: 859623: unique_lock(mutex_type& __m, defer_lock_t) noexcept 859623: : _M_device(std::__addressof(__m)), _M_owns(false) 859623: { } 859623: 859623: [[__nodiscard__]] 859623: unique_lock(mutex_type& __m, try_to_lock_t) 859623: : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock()) 859623: { } 859623: 859623: [[__nodiscard__]] 859623: unique_lock(mutex_type& __m, adopt_lock_t) noexcept 859623: : _M_device(std::__addressof(__m)), _M_owns(true) 859623: { 859623: 859623: } 859623: 859623: template 859623: [[__nodiscard__]] 859623: unique_lock(mutex_type& __m, 859623: const chrono::time_point<_Clock, _Duration>& __atime) 859623: : _M_device(std::__addressof(__m)), 859623: _M_owns(_M_device->try_lock_until(__atime)) 859623: { } 859623: 859623: template 859623: [[__nodiscard__]] 859623: unique_lock(mutex_type& __m, 859623: const chrono::duration<_Rep, _Period>& __rtime) 859623: : _M_device(std::__addressof(__m)), 859623: _M_owns(_M_device->try_lock_for(__rtime)) 859623: { } 859623: 859623: ~unique_lock() 859623: { 859623: if (_M_owns) 859623: unlock(); 859623: } 859623: 859623: unique_lock(const unique_lock&) = delete; 859623: unique_lock& operator=(const unique_lock&) = delete; 859623: 859623: unique_lock(unique_lock&& __u) noexcept 859623: : _M_device(__u._M_device), _M_owns(__u._M_owns) 859623: { 859623: __u._M_device = 0; 859623: __u._M_owns = false; 859623: } 859623: 859623: unique_lock& operator=(unique_lock&& __u) noexcept 859623: { 859623: 859623: 859623: unique_lock(std::move(__u)).swap(*this); 859623: return *this; 859623: } 859623: 859623: void 859623: lock() 859623: { 859623: if (!_M_device) 859623: __throw_system_error(int(errc::operation_not_permitted)); 859623: else if (_M_owns) 859623: __throw_system_error(int(errc::resource_deadlock_would_occur)); 859623: else 859623: { 859623: _M_device->lock(); 859623: _M_owns = true; 859623: } 859623: } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: try_lock() 859623: { 859623: if (!_M_device) 859623: __throw_system_error(int(errc::operation_not_permitted)); 859623: else if (_M_owns) 859623: __throw_system_error(int(errc::resource_deadlock_would_occur)); 859623: else 859623: { 859623: _M_owns = _M_device->try_lock(); 859623: return _M_owns; 859623: } 859623: } 859623: 859623: template 859623: [[__nodiscard__]] 859623: bool 859623: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 859623: { 859623: if (!_M_device) 859623: __throw_system_error(int(errc::operation_not_permitted)); 859623: else if (_M_owns) 859623: __throw_system_error(int(errc::resource_deadlock_would_occur)); 859623: else 859623: { 859623: _M_owns = _M_device->try_lock_until(__atime); 859623: return _M_owns; 859623: } 859623: } 859623: 859623: template 859623: [[__nodiscard__]] 859623: bool 859623: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 859623: { 859623: if (!_M_device) 859623: __throw_system_error(int(errc::operation_not_permitted)); 859623: else if (_M_owns) 859623: __throw_system_error(int(errc::resource_deadlock_would_occur)); 859623: else 859623: { 859623: _M_owns = _M_device->try_lock_for(__rtime); 859623: return _M_owns; 859623: } 859623: } 859623: 859623: void 859623: unlock() 859623: { 859623: if (!_M_owns) 859623: __throw_system_error(int(errc::operation_not_permitted)); 859623: else if (_M_device) 859623: { 859623: _M_device->unlock(); 859623: _M_owns = false; 859623: } 859623: } 859623: 859623: void 859623: swap(unique_lock& __u) noexcept 859623: { 859623: std::swap(_M_device, __u._M_device); 859623: std::swap(_M_owns, __u._M_owns); 859623: } 859623: 859623: mutex_type* 859623: release() noexcept 859623: { 859623: mutex_type* __ret = _M_device; 859623: _M_device = 0; 859623: _M_owns = false; 859623: return __ret; 859623: } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: owns_lock() const noexcept 859623: { return _M_owns; } 859623: 859623: explicit operator bool() const noexcept 859623: { return owns_lock(); } 859623: 859623: [[__nodiscard__]] 859623: mutex_type* 859623: mutex() const noexcept 859623: { return _M_device; } 859623: 859623: private: 859623: mutex_type* _M_device; 859623: bool _M_owns; 859623: }; 859623: 859623: 859623: 859623: template 859623: inline void 859623: swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept 859623: { __x.swap(__y); } 859623: 859623: 859623: } 859623: # 51 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 2 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/ext/atomicity.h" 1 3 859623: # 38 "/usr/arm-linux-gnueabi/include/c++/15/ext/atomicity.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/atomic_word.h" 1 3 859623: # 32 "/usr/arm-linux-gnueabi/include/c++/15/arm-linux-gnueabi/bits/atomic_word.h" 3 859623: typedef int _Atomic_word; 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/ext/atomicity.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/sys/single_threaded.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/sys/single_threaded.h" 3 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: extern char __libc_single_threaded; 859623: 859623: } 859623: # 41 "/usr/arm-linux-gnueabi/include/c++/15/ext/atomicity.h" 2 3 859623: 859623: 859623: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: __attribute__((__always_inline__)) 859623: inline bool 859623: __is_single_threaded() noexcept 859623: { 859623: 859623: 859623: 859623: return ::__libc_single_threaded; 859623: 859623: 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: inline _Atomic_word 859623: __attribute__((__always_inline__)) 859623: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 859623: { return __atomic_fetch_add(__mem, __val, 4); } 859623: 859623: inline void 859623: __attribute__((__always_inline__)) 859623: __atomic_add(volatile _Atomic_word* __mem, int __val) 859623: { __atomic_fetch_add(__mem, __val, 4); } 859623: # 82 "/usr/arm-linux-gnueabi/include/c++/15/ext/atomicity.h" 3 859623: inline _Atomic_word 859623: __attribute__((__always_inline__)) 859623: __exchange_and_add_single(_Atomic_word* __mem, int __val) 859623: { 859623: _Atomic_word __result = *__mem; 859623: *__mem += __val; 859623: return __result; 859623: } 859623: 859623: inline void 859623: __attribute__((__always_inline__)) 859623: __atomic_add_single(_Atomic_word* __mem, int __val) 859623: { *__mem += __val; } 859623: 859623: inline _Atomic_word 859623: __attribute__ ((__always_inline__)) 859623: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 859623: { 859623: if (__is_single_threaded()) 859623: return __exchange_and_add_single(__mem, __val); 859623: else 859623: return __exchange_and_add(__mem, __val); 859623: } 859623: 859623: inline void 859623: __attribute__ ((__always_inline__)) 859623: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 859623: { 859623: if (__is_single_threaded()) 859623: __atomic_add_single(__mem, __val); 859623: else 859623: __atomic_add(__mem, __val); 859623: } 859623: 859623: 859623: } 859623: # 56 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 2 3 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 63 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 2 3 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 77 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: class __recursive_mutex_base 859623: { 859623: protected: 859623: typedef __gthread_recursive_mutex_t __native_type; 859623: 859623: __recursive_mutex_base(const __recursive_mutex_base&) = delete; 859623: __recursive_mutex_base& operator=(const __recursive_mutex_base&) = delete; 859623: 859623: 859623: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; 859623: 859623: __recursive_mutex_base() = default; 859623: # 101 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: }; 859623: # 113 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: class recursive_mutex : private __recursive_mutex_base 859623: { 859623: public: 859623: typedef __native_type* native_handle_type; 859623: 859623: recursive_mutex() = default; 859623: ~recursive_mutex() = default; 859623: 859623: recursive_mutex(const recursive_mutex&) = delete; 859623: recursive_mutex& operator=(const recursive_mutex&) = delete; 859623: 859623: void 859623: lock() 859623: { 859623: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 859623: 859623: 859623: if (__e) 859623: __throw_system_error(__e); 859623: } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: try_lock() noexcept 859623: { 859623: 859623: return !__gthread_recursive_mutex_trylock(&_M_mutex); 859623: } 859623: 859623: void 859623: unlock() 859623: { 859623: 859623: __gthread_recursive_mutex_unlock(&_M_mutex); 859623: } 859623: 859623: native_handle_type 859623: native_handle() noexcept 859623: { return &_M_mutex; } 859623: }; 859623: 859623: 859623: 859623: 859623: template 859623: class __timed_mutex_impl 859623: { 859623: protected: 859623: template 859623: bool 859623: _M_try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 859623: { 859623: 859623: using __clock = chrono::steady_clock; 859623: 859623: 859623: 859623: 859623: auto __rt = chrono::duration_cast<__clock::duration>(__rtime); 859623: if (ratio_greater<__clock::period, _Period>()) 859623: ++__rt; 859623: return _M_try_lock_until(__clock::now() + __rt); 859623: } 859623: 859623: template 859623: bool 859623: _M_try_lock_until(const chrono::time_point& __atime) 859623: { 859623: auto __s = chrono::time_point_cast(__atime); 859623: auto __ns = chrono::duration_cast(__atime - __s); 859623: 859623: __gthread_time_t __ts = { 859623: static_cast(__s.time_since_epoch().count()), 859623: static_cast(__ns.count()) 859623: }; 859623: 859623: return static_cast<_Derived*>(this)->_M_timedlock(__ts); 859623: } 859623: 859623: 859623: template 859623: bool 859623: _M_try_lock_until(const chrono::time_point& __atime) 859623: { 859623: auto __s = chrono::time_point_cast(__atime); 859623: auto __ns = chrono::duration_cast(__atime - __s); 859623: 859623: __gthread_time_t __ts = { 859623: static_cast(__s.time_since_epoch().count()), 859623: static_cast(__ns.count()) 859623: }; 859623: 859623: return static_cast<_Derived*>(this)->_M_clocklock(1, 859623: __ts); 859623: } 859623: 859623: 859623: template 859623: bool 859623: _M_try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: auto __now = _Clock::now(); 859623: do { 859623: auto __rtime = __atime - __now; 859623: if (_M_try_lock_for(__rtime)) 859623: return true; 859623: __now = _Clock::now(); 859623: } while (__atime > __now); 859623: return false; 859623: } 859623: }; 859623: # 242 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: class timed_mutex 859623: : private __mutex_base, public __timed_mutex_impl 859623: { 859623: public: 859623: typedef __native_type* native_handle_type; 859623: 859623: timed_mutex() = default; 859623: ~timed_mutex() = default; 859623: 859623: timed_mutex(const timed_mutex&) = delete; 859623: timed_mutex& operator=(const timed_mutex&) = delete; 859623: 859623: void 859623: lock() 859623: { 859623: int __e = __gthread_mutex_lock(&_M_mutex); 859623: 859623: 859623: if (__e) 859623: __throw_system_error(__e); 859623: } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: try_lock() noexcept 859623: { 859623: 859623: return !__gthread_mutex_trylock(&_M_mutex); 859623: } 859623: 859623: template 859623: [[__nodiscard__]] 859623: bool 859623: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 859623: { return _M_try_lock_for(__rtime); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: bool 859623: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 859623: { return _M_try_lock_until(__atime); } 859623: 859623: void 859623: unlock() 859623: { 859623: 859623: __gthread_mutex_unlock(&_M_mutex); 859623: } 859623: 859623: native_handle_type 859623: native_handle() noexcept 859623: { return &_M_mutex; } 859623: 859623: private: 859623: friend class __timed_mutex_impl; 859623: 859623: bool 859623: _M_timedlock(const __gthread_time_t& __ts) 859623: { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); } 859623: 859623: 859623: bool 859623: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) 859623: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } 859623: 859623: }; 859623: # 319 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: class recursive_timed_mutex 859623: : private __recursive_mutex_base, 859623: public __timed_mutex_impl 859623: { 859623: public: 859623: typedef __native_type* native_handle_type; 859623: 859623: recursive_timed_mutex() = default; 859623: ~recursive_timed_mutex() = default; 859623: 859623: recursive_timed_mutex(const recursive_timed_mutex&) = delete; 859623: recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete; 859623: 859623: void 859623: lock() 859623: { 859623: int __e = __gthread_recursive_mutex_lock(&_M_mutex); 859623: 859623: 859623: if (__e) 859623: __throw_system_error(__e); 859623: } 859623: 859623: [[__nodiscard__]] 859623: bool 859623: try_lock() noexcept 859623: { 859623: 859623: return !__gthread_recursive_mutex_trylock(&_M_mutex); 859623: } 859623: 859623: template 859623: [[__nodiscard__]] 859623: bool 859623: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) 859623: { return _M_try_lock_for(__rtime); } 859623: 859623: template 859623: [[__nodiscard__]] 859623: bool 859623: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) 859623: { return _M_try_lock_until(__atime); } 859623: 859623: void 859623: unlock() 859623: { 859623: 859623: __gthread_recursive_mutex_unlock(&_M_mutex); 859623: } 859623: 859623: native_handle_type 859623: native_handle() noexcept 859623: { return &_M_mutex; } 859623: 859623: private: 859623: friend class __timed_mutex_impl; 859623: 859623: bool 859623: _M_timedlock(const __gthread_time_t& __ts) 859623: { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); } 859623: 859623: 859623: bool 859623: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) 859623: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } 859623: 859623: }; 859623: # 566 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: namespace __detail 859623: { 859623: 859623: template 859623: inline int 859623: __try_lock_impl(_Lockable& __l) 859623: { 859623: if (unique_lock<_Lockable> __lock{__l, try_to_lock}) 859623: { 859623: __lock.release(); 859623: return -1; 859623: } 859623: else 859623: return 0; 859623: } 859623: 859623: 859623: 859623: template 859623: inline int 859623: __try_lock_impl(_L0& __l0, _Lockables&... __lockables) 859623: { 859623: # 611 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: if (unique_lock<_L0> __lock{__l0, try_to_lock}) 859623: { 859623: int __idx = __detail::__try_lock_impl(__lockables...); 859623: if (__idx == -1) 859623: { 859623: __lock.release(); 859623: return -1; 859623: } 859623: return __idx + 1; 859623: } 859623: else 859623: return 0; 859623: } 859623: 859623: } 859623: # 638 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: template 859623: [[__nodiscard__]] 859623: inline int 859623: try_lock(_L1& __l1, _L2& __l2, _L3&... __l3) 859623: { 859623: return __detail::__try_lock_impl(__l1, __l2, __l3...); 859623: } 859623: 859623: 859623: namespace __detail 859623: { 859623: 859623: 859623: 859623: 859623: 859623: template 859623: void 859623: __lock_impl(int& __i, int __depth, _L0& __l0, _L1&... __l1) 859623: { 859623: while (__i >= __depth) 859623: { 859623: if (__i == __depth) 859623: { 859623: int __failed = 1; 859623: { 859623: unique_lock<_L0> __first(__l0); 859623: __failed += __detail::__try_lock_impl(__l1...); 859623: if (!__failed) 859623: { 859623: __i = -1; 859623: __first.release(); 859623: return; 859623: } 859623: } 859623: 859623: __gthread_yield(); 859623: 859623: constexpr auto __n = 1 + sizeof...(_L1); 859623: __i = (__depth + __failed) % __n; 859623: } 859623: else 859623: __detail::__lock_impl(__i, __depth + 1, __l1..., __l0); 859623: } 859623: } 859623: 859623: } 859623: # 698 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: template 859623: void 859623: lock(_L1& __l1, _L2& __l2, _L3&... __l3) 859623: { 859623: # 730 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: { 859623: int __i = 0; 859623: __detail::__lock_impl(__i, 0, __l1, __l2, __l3...); 859623: } 859623: } 859623: # 809 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: struct once_flag 859623: { 859623: constexpr once_flag() noexcept = default; 859623: 859623: 859623: once_flag(const once_flag&) = delete; 859623: 859623: once_flag& operator=(const once_flag&) = delete; 859623: 859623: private: 859623: 859623: 859623: __gthread_once_t _M_once = 0; 859623: 859623: struct _Prepare_execution; 859623: 859623: template 859623: friend void 859623: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args); 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: extern __thread void* __once_callable; 859623: extern __thread void (*__once_call)(); 859623: 859623: 859623: struct once_flag::_Prepare_execution 859623: { 859623: template 859623: explicit 859623: _Prepare_execution(_Callable& __c) 859623: { 859623: 859623: __once_callable = std::__addressof(__c); 859623: 859623: __once_call = [] { (*static_cast<_Callable*>(__once_callable))(); }; 859623: } 859623: 859623: ~_Prepare_execution() 859623: { 859623: 859623: __once_callable = nullptr; 859623: __once_call = nullptr; 859623: } 859623: 859623: _Prepare_execution(const _Prepare_execution&) = delete; 859623: _Prepare_execution& operator=(const _Prepare_execution&) = delete; 859623: }; 859623: # 902 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: extern "C" void __once_proxy(void); 859623: 859623: 859623: template 859623: void 859623: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args) 859623: { 859623: 859623: auto __callable = [&] { 859623: std::__invoke(std::forward<_Callable>(__f), 859623: std::forward<_Args>(__args)...); 859623: }; 859623: 859623: once_flag::_Prepare_execution __exec(__callable); 859623: 859623: 859623: if (int __e = __gthread_once(&__once._M_once, &__once_proxy)) 859623: __throw_system_error(__e); 859623: } 859623: # 1023 "/usr/arm-linux-gnueabi/include/c++/15/mutex" 3 859623: 859623: } 859623: # 27 "/<>/_include/workflow/Workflow.h" 2 859623: # 1 "/<>/_include/workflow/SubTask.h" 1 859623: # 22 "/<>/_include/workflow/SubTask.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 23 "/<>/_include/workflow/SubTask.h" 2 859623: 859623: 859623: # 24 "/<>/_include/workflow/SubTask.h" 859623: class SubTask 859623: { 859623: public: 859623: virtual void dispatch() = 0; 859623: 859623: private: 859623: virtual SubTask *done() = 0; 859623: 859623: protected: 859623: void subtask_done(); 859623: 859623: public: 859623: void *get_pointer() const { return this->pointer; } 859623: void set_pointer(void *pointer) { this->pointer = pointer; } 859623: 859623: private: 859623: class ParallelTask *parent; 859623: void *pointer; 859623: 859623: public: 859623: SubTask() 859623: { 859623: this->parent = 859623: # 46 "/<>/_include/workflow/SubTask.h" 3 4 859623: __null 859623: # 46 "/<>/_include/workflow/SubTask.h" 859623: ; 859623: this->pointer = 859623: # 47 "/<>/_include/workflow/SubTask.h" 3 4 859623: __null 859623: # 47 "/<>/_include/workflow/SubTask.h" 859623: ; 859623: } 859623: 859623: virtual ~SubTask() { } 859623: friend class ParallelTask; 859623: }; 859623: 859623: class ParallelTask : public SubTask 859623: { 859623: public: 859623: virtual void dispatch(); 859623: 859623: protected: 859623: SubTask **subtasks; 859623: size_t subtasks_nr; 859623: 859623: private: 859623: size_t nleft; 859623: 859623: public: 859623: ParallelTask(SubTask **subtasks, size_t n) 859623: { 859623: this->subtasks = subtasks; 859623: this->subtasks_nr = n; 859623: } 859623: 859623: virtual ~ParallelTask() { } 859623: friend class SubTask; 859623: }; 859623: # 28 "/<>/_include/workflow/Workflow.h" 2 859623: 859623: class SeriesWork; 859623: class ParallelWork; 859623: 859623: using series_callback_t = std::function; 859623: using parallel_callback_t = std::function; 859623: 859623: class Workflow 859623: { 859623: public: 859623: static SeriesWork * 859623: create_series_work(SubTask *first, series_callback_t callback); 859623: 859623: static void 859623: start_series_work(SubTask *first, series_callback_t callback); 859623: 859623: static ParallelWork * 859623: create_parallel_work(parallel_callback_t callback); 859623: 859623: static ParallelWork * 859623: create_parallel_work(SeriesWork *const all_series[], size_t n, 859623: parallel_callback_t callback); 859623: 859623: static void 859623: start_parallel_work(SeriesWork *const all_series[], size_t n, 859623: parallel_callback_t callback); 859623: 859623: public: 859623: static SeriesWork * 859623: create_series_work(SubTask *first, SubTask *last, 859623: series_callback_t callback); 859623: 859623: static void 859623: start_series_work(SubTask *first, SubTask *last, 859623: series_callback_t callback); 859623: }; 859623: 859623: class SeriesWork 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 70 "/<>/_include/workflow/Workflow.h" 3 859623: (static_cast ( 859623: # 70 "/<>/_include/workflow/Workflow.h" 859623: !this->in_parallel 859623: # 70 "/<>/_include/workflow/Workflow.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 70 "/<>/_include/workflow/Workflow.h" 859623: "!this->in_parallel" 859623: # 70 "/<>/_include/workflow/Workflow.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 70 "/<>/_include/workflow/Workflow.h" 859623: ; 859623: this->first->dispatch(); 859623: } 859623: 859623: 859623: 859623: void dismiss() 859623: { 859623: 859623: # 78 "/<>/_include/workflow/Workflow.h" 3 859623: (static_cast ( 859623: # 78 "/<>/_include/workflow/Workflow.h" 859623: !this->in_parallel 859623: # 78 "/<>/_include/workflow/Workflow.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 78 "/<>/_include/workflow/Workflow.h" 859623: "!this->in_parallel" 859623: # 78 "/<>/_include/workflow/Workflow.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 78 "/<>/_include/workflow/Workflow.h" 859623: ; 859623: this->dismiss_recursive(); 859623: } 859623: 859623: public: 859623: void push_back(SubTask *task); 859623: void push_front(SubTask *task); 859623: 859623: public: 859623: void *get_context() const { return this->context; } 859623: void set_context(void *context) { this->context = context; } 859623: 859623: public: 859623: 859623: 859623: 859623: 859623: virtual void cancel() { this->canceled = true; } 859623: 859623: 859623: 859623: bool is_canceled() const { return this->canceled; } 859623: 859623: 859623: bool is_finished() const { return this->finished; } 859623: 859623: public: 859623: void set_callback(series_callback_t callback) 859623: { 859623: this->callback = std::move(callback); 859623: } 859623: 859623: public: 859623: virtual void *get_specific(const char *key) { return 859623: # 111 "/<>/_include/workflow/Workflow.h" 3 4 859623: __null 859623: # 111 "/<>/_include/workflow/Workflow.h" 859623: ; } 859623: 859623: public: 859623: 859623: SubTask *pop(); 859623: 859623: SubTask *get_last_task() const { return this->last; } 859623: 859623: void set_last_task(SubTask *last) 859623: { 859623: last->set_pointer(this); 859623: this->last = last; 859623: } 859623: 859623: void unset_last_task() { this->last = 859623: # 125 "/<>/_include/workflow/Workflow.h" 3 4 859623: __null 859623: # 125 "/<>/_include/workflow/Workflow.h" 859623: ; } 859623: 859623: const ParallelTask *get_in_parallel() const { return this->in_parallel; } 859623: 859623: protected: 859623: void set_in_parallel(const ParallelTask *task) { this->in_parallel = task; } 859623: 859623: void dismiss_recursive(); 859623: 859623: protected: 859623: void *context; 859623: series_callback_t callback; 859623: 859623: private: 859623: SubTask *pop_task(); 859623: void expand_queue(); 859623: 859623: private: 859623: SubTask *buf[4]; 859623: SubTask *first; 859623: SubTask *last; 859623: SubTask **queue; 859623: int queue_size; 859623: int front; 859623: int back; 859623: bool canceled; 859623: bool finished; 859623: const ParallelTask *in_parallel; 859623: std::mutex mutex; 859623: 859623: protected: 859623: SeriesWork(SubTask *first, series_callback_t&& callback); 859623: virtual ~SeriesWork(); 859623: friend class ParallelWork; 859623: friend class Workflow; 859623: }; 859623: 859623: static inline SeriesWork *series_of(const SubTask *task) 859623: { 859623: return (SeriesWork *)task->get_pointer(); 859623: } 859623: 859623: static inline SeriesWork& operator *(const SubTask& task) 859623: { 859623: return *series_of(&task); 859623: } 859623: 859623: static inline SeriesWork& operator << (SeriesWork& series, SubTask *task) 859623: { 859623: series.push_back(task); 859623: return series; 859623: } 859623: 859623: inline SeriesWork * 859623: Workflow::create_series_work(SubTask *first, series_callback_t callback) 859623: { 859623: return new SeriesWork(first, std::move(callback)); 859623: } 859623: 859623: inline void 859623: Workflow::start_series_work(SubTask *first, series_callback_t callback) 859623: { 859623: new SeriesWork(first, std::move(callback)); 859623: first->dispatch(); 859623: } 859623: 859623: inline SeriesWork * 859623: Workflow::create_series_work(SubTask *first, SubTask *last, 859623: series_callback_t callback) 859623: { 859623: SeriesWork *series = new SeriesWork(first, std::move(callback)); 859623: series->set_last_task(last); 859623: return series; 859623: } 859623: 859623: inline void 859623: Workflow::start_series_work(SubTask *first, SubTask *last, 859623: series_callback_t callback) 859623: { 859623: SeriesWork *series = new SeriesWork(first, std::move(callback)); 859623: series->set_last_task(last); 859623: first->dispatch(); 859623: } 859623: 859623: class ParallelWork : public ParallelTask 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 214 "/<>/_include/workflow/Workflow.h" 3 859623: (static_cast ( 859623: # 214 "/<>/_include/workflow/Workflow.h" 859623: !series_of(this) 859623: # 214 "/<>/_include/workflow/Workflow.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 214 "/<>/_include/workflow/Workflow.h" 859623: "!series_of(this)" 859623: # 214 "/<>/_include/workflow/Workflow.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 214 "/<>/_include/workflow/Workflow.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 220 "/<>/_include/workflow/Workflow.h" 3 859623: (static_cast ( 859623: # 220 "/<>/_include/workflow/Workflow.h" 859623: !series_of(this) 859623: # 220 "/<>/_include/workflow/Workflow.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 220 "/<>/_include/workflow/Workflow.h" 859623: "!series_of(this)" 859623: # 220 "/<>/_include/workflow/Workflow.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 220 "/<>/_include/workflow/Workflow.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: void add_series(SeriesWork *series); 859623: 859623: public: 859623: void *get_context() const { return this->context; } 859623: void set_context(void *context) { this->context = context; } 859623: 859623: public: 859623: SeriesWork *series_at(size_t index) 859623: { 859623: if (index < this->subtasks_nr) 859623: return this->all_series[index]; 859623: else 859623: return 859623: # 237 "/<>/_include/workflow/Workflow.h" 3 4 859623: __null 859623: # 237 "/<>/_include/workflow/Workflow.h" 859623: ; 859623: } 859623: 859623: const SeriesWork *series_at(size_t index) const 859623: { 859623: if (index < this->subtasks_nr) 859623: return this->all_series[index]; 859623: else 859623: return 859623: # 245 "/<>/_include/workflow/Workflow.h" 3 4 859623: __null 859623: # 245 "/<>/_include/workflow/Workflow.h" 859623: ; 859623: } 859623: 859623: SeriesWork& operator[] (size_t index) 859623: { 859623: return *this->series_at(index); 859623: } 859623: 859623: const SeriesWork& operator[] (size_t index) const 859623: { 859623: return *this->series_at(index); 859623: } 859623: 859623: size_t size() const { return this->subtasks_nr; } 859623: 859623: public: 859623: void set_callback(parallel_callback_t callback) 859623: { 859623: this->callback = std::move(callback); 859623: } 859623: 859623: protected: 859623: virtual SubTask *done(); 859623: 859623: protected: 859623: void *context; 859623: parallel_callback_t callback; 859623: 859623: private: 859623: void expand_buf(); 859623: 859623: private: 859623: size_t buf_size; 859623: SeriesWork **all_series; 859623: 859623: protected: 859623: ParallelWork(parallel_callback_t&& callback); 859623: ParallelWork(SeriesWork *const all_series[], size_t n, 859623: parallel_callback_t&& callback); 859623: virtual ~ParallelWork(); 859623: friend class Workflow; 859623: }; 859623: 859623: inline ParallelWork * 859623: Workflow::create_parallel_work(parallel_callback_t callback) 859623: { 859623: return new ParallelWork(std::move(callback)); 859623: } 859623: 859623: inline ParallelWork * 859623: Workflow::create_parallel_work(SeriesWork *const all_series[], size_t n, 859623: parallel_callback_t callback) 859623: { 859623: return new ParallelWork(all_series, n, std::move(callback)); 859623: } 859623: 859623: inline void 859623: Workflow::start_parallel_work(SeriesWork *const all_series[], size_t n, 859623: parallel_callback_t callback) 859623: { 859623: ParallelWork *p = new ParallelWork(all_series, n, std::move(callback)); 859623: Workflow::start_series_work(p, nullptr); 859623: } 859623: # 35 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: # 1 "/<>/_include/workflow/WFTask.h" 1 859623: # 24 "/<>/_include/workflow/WFTask.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/assert.h" 1 3 859623: # 25 "/<>/_include/workflow/WFTask.h" 2 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 1 3 859623: # 50 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 51 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 1 3 859623: # 39 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_lockfree_defines.h" 1 3 859623: # 40 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 2 3 859623: # 50 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/c++/15/bits/version.h" 1 3 859623: # 51 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 2 3 859623: 859623: 859623: # 52 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: # 82 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: enum memory_order : int 859623: { 859623: memory_order_relaxed, 859623: memory_order_consume, 859623: memory_order_acquire, 859623: memory_order_release, 859623: memory_order_acq_rel, 859623: memory_order_seq_cst 859623: }; 859623: 859623: 859623: 859623: enum __memory_order_modifier 859623: { 859623: __memory_order_mask = 0x0ffff, 859623: __memory_order_modifier_mask = 0xffff0000, 859623: __memory_order_hle_acquire = 0x10000, 859623: __memory_order_hle_release = 0x20000 859623: }; 859623: 859623: 859623: constexpr memory_order 859623: operator|(memory_order __m, __memory_order_modifier __mod) noexcept 859623: { 859623: return memory_order(int(__m) | int(__mod)); 859623: } 859623: 859623: constexpr memory_order 859623: operator&(memory_order __m, __memory_order_modifier __mod) noexcept 859623: { 859623: return memory_order(int(__m) & int(__mod)); 859623: } 859623: 859623: 859623: 859623: 859623: constexpr memory_order 859623: __cmpexch_failure_order2(memory_order __m) noexcept 859623: { 859623: return __m == memory_order_acq_rel ? memory_order_acquire 859623: : __m == memory_order_release ? memory_order_relaxed : __m; 859623: } 859623: 859623: constexpr memory_order 859623: __cmpexch_failure_order(memory_order __m) noexcept 859623: { 859623: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 859623: | __memory_order_modifier(__m & __memory_order_modifier_mask)); 859623: } 859623: 859623: constexpr bool 859623: __is_valid_cmpexch_failure_order(memory_order __m) noexcept 859623: { 859623: return (__m & __memory_order_mask) != memory_order_release 859623: && (__m & __memory_order_mask) != memory_order_acq_rel; 859623: } 859623: 859623: 859623: template 859623: struct __atomic_base; 859623: 859623: 859623: 859623: inline __attribute__((__always_inline__)) void 859623: atomic_thread_fence(memory_order __m) noexcept 859623: { __atomic_thread_fence(int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) void 859623: atomic_signal_fence(memory_order __m) noexcept 859623: { __atomic_signal_fence(int(__m)); } 859623: 859623: 859623: template 859623: inline _Tp 859623: kill_dependency(_Tp __y) noexcept 859623: { 859623: _Tp __ret(__y); 859623: return __ret; 859623: } 859623: # 172 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: template 859623: struct atomic; 859623: 859623: template 859623: struct atomic<_Tp*>; 859623: 859623: 859623: 859623: typedef bool __atomic_flag_data_type; 859623: # 197 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: extern "C" { 859623: 859623: struct __atomic_flag_base 859623: { 859623: __atomic_flag_data_type _M_i ; 859623: }; 859623: 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct atomic_flag : public __atomic_flag_base 859623: { 859623: atomic_flag() noexcept = default; 859623: ~atomic_flag() noexcept = default; 859623: atomic_flag(const atomic_flag&) = delete; 859623: atomic_flag& operator=(const atomic_flag&) = delete; 859623: atomic_flag& operator=(const atomic_flag&) volatile = delete; 859623: 859623: 859623: constexpr atomic_flag(bool __i) noexcept 859623: : __atomic_flag_base{ _S_init(__i) } 859623: { } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: return __atomic_test_and_set (&_M_i, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: return __atomic_test_and_set (&_M_i, int(__m)); 859623: } 859623: # 281 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: inline __attribute__((__always_inline__)) void 859623: clear(memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: __atomic_clear (&_M_i, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) void 859623: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: __atomic_clear (&_M_i, int(__m)); 859623: } 859623: 859623: private: 859623: static constexpr __atomic_flag_data_type 859623: _S_init(bool __i) 859623: { return __i ? 1 : 0; } 859623: }; 859623: # 337 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: template 859623: struct __atomic_base 859623: { 859623: using value_type = _ITp; 859623: using difference_type = value_type; 859623: 859623: private: 859623: typedef _ITp __int_type; 859623: 859623: static constexpr int _S_alignment = 859623: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 859623: 859623: alignas(_S_alignment) __int_type _M_i ; 859623: 859623: public: 859623: __atomic_base() noexcept = default; 859623: ~__atomic_base() noexcept = default; 859623: __atomic_base(const __atomic_base&) = delete; 859623: __atomic_base& operator=(const __atomic_base&) = delete; 859623: __atomic_base& operator=(const __atomic_base&) volatile = delete; 859623: 859623: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 859623: 859623: operator __int_type() const noexcept 859623: { return load(); } 859623: 859623: operator __int_type() const volatile noexcept 859623: { return load(); } 859623: 859623: __int_type 859623: operator=(__int_type __i) noexcept 859623: { 859623: store(__i); 859623: return __i; 859623: } 859623: 859623: __int_type 859623: operator=(__int_type __i) volatile noexcept 859623: { 859623: store(__i); 859623: return __i; 859623: } 859623: 859623: __int_type 859623: operator++(int) noexcept 859623: { return fetch_add(1); } 859623: 859623: __int_type 859623: operator++(int) volatile noexcept 859623: { return fetch_add(1); } 859623: 859623: __int_type 859623: operator--(int) noexcept 859623: { return fetch_sub(1); } 859623: 859623: __int_type 859623: operator--(int) volatile noexcept 859623: { return fetch_sub(1); } 859623: 859623: __int_type 859623: operator++() noexcept 859623: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator++() volatile noexcept 859623: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator--() noexcept 859623: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator--() volatile noexcept 859623: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator+=(__int_type __i) noexcept 859623: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator+=(__int_type __i) volatile noexcept 859623: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator-=(__int_type __i) noexcept 859623: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator-=(__int_type __i) volatile noexcept 859623: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator&=(__int_type __i) noexcept 859623: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator&=(__int_type __i) volatile noexcept 859623: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator|=(__int_type __i) noexcept 859623: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator|=(__int_type __i) volatile noexcept 859623: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator^=(__int_type __i) noexcept 859623: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: __int_type 859623: operator^=(__int_type __i) volatile noexcept 859623: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 859623: 859623: bool 859623: is_lock_free() const noexcept 859623: { 859623: 859623: return __atomic_is_lock_free(sizeof(_M_i), 859623: reinterpret_cast(-_S_alignment)); 859623: } 859623: 859623: bool 859623: is_lock_free() const volatile noexcept 859623: { 859623: 859623: return __atomic_is_lock_free(sizeof(_M_i), 859623: reinterpret_cast(-_S_alignment)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) void 859623: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: __atomic_store_n(&_M_i, __i, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) void 859623: store(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: __atomic_store_n(&_M_i, __i, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: load(memory_order __m = memory_order_seq_cst) const noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_load_n(&_M_i, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_load_n(&_M_i, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: exchange(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: return __atomic_exchange_n(&_M_i, __i, int(__m)); 859623: } 859623: 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: exchange(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: return __atomic_exchange_n(&_M_i, __i, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_weak(__int_type& __i1, __int_type __i2, 859623: memory_order __m1, memory_order __m2) noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 859623: int(__m1), int(__m2)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_weak(__int_type& __i1, __int_type __i2, 859623: memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 859623: int(__m1), int(__m2)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_weak(__int_type& __i1, __int_type __i2, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: return compare_exchange_weak(__i1, __i2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_weak(__int_type& __i1, __int_type __i2, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: return compare_exchange_weak(__i1, __i2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_strong(__int_type& __i1, __int_type __i2, 859623: memory_order __m1, memory_order __m2) noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 859623: int(__m1), int(__m2)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_strong(__int_type& __i1, __int_type __i2, 859623: memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 859623: int(__m1), int(__m2)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_strong(__int_type& __i1, __int_type __i2, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: return compare_exchange_strong(__i1, __i2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_strong(__int_type& __i1, __int_type __i2, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: return compare_exchange_strong(__i1, __i2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: # 628 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_add(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_add(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_sub(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_sub(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_and(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_and(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_or(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_or(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_xor(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __int_type 859623: fetch_xor(__int_type __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 859623: }; 859623: 859623: 859623: 859623: template 859623: struct __atomic_base<_PTp*> 859623: { 859623: private: 859623: typedef _PTp* __pointer_type; 859623: 859623: __pointer_type _M_p ; 859623: 859623: static constexpr ptrdiff_t 859623: _S_type_size(ptrdiff_t __d) 859623: { return __d * sizeof(_PTp); } 859623: 859623: public: 859623: __atomic_base() noexcept = default; 859623: ~__atomic_base() noexcept = default; 859623: __atomic_base(const __atomic_base&) = delete; 859623: __atomic_base& operator=(const __atomic_base&) = delete; 859623: __atomic_base& operator=(const __atomic_base&) volatile = delete; 859623: 859623: 859623: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 859623: 859623: operator __pointer_type() const noexcept 859623: { return load(); } 859623: 859623: operator __pointer_type() const volatile noexcept 859623: { return load(); } 859623: 859623: __pointer_type 859623: operator=(__pointer_type __p) noexcept 859623: { 859623: store(__p); 859623: return __p; 859623: } 859623: 859623: __pointer_type 859623: operator=(__pointer_type __p) volatile noexcept 859623: { 859623: store(__p); 859623: return __p; 859623: } 859623: 859623: __pointer_type 859623: operator++(int) noexcept 859623: { return fetch_add(1); } 859623: 859623: __pointer_type 859623: operator++(int) volatile noexcept 859623: { return fetch_add(1); } 859623: 859623: __pointer_type 859623: operator--(int) noexcept 859623: { return fetch_sub(1); } 859623: 859623: __pointer_type 859623: operator--(int) volatile noexcept 859623: { return fetch_sub(1); } 859623: 859623: __pointer_type 859623: operator++() noexcept 859623: { return __atomic_add_fetch(&_M_p, _S_type_size(1), 859623: int(memory_order_seq_cst)); } 859623: 859623: __pointer_type 859623: operator++() volatile noexcept 859623: { return __atomic_add_fetch(&_M_p, _S_type_size(1), 859623: int(memory_order_seq_cst)); } 859623: 859623: __pointer_type 859623: operator--() noexcept 859623: { return __atomic_sub_fetch(&_M_p, _S_type_size(1), 859623: int(memory_order_seq_cst)); } 859623: 859623: __pointer_type 859623: operator--() volatile noexcept 859623: { return __atomic_sub_fetch(&_M_p, _S_type_size(1), 859623: int(memory_order_seq_cst)); } 859623: 859623: __pointer_type 859623: operator+=(ptrdiff_t __d) noexcept 859623: { return __atomic_add_fetch(&_M_p, _S_type_size(__d), 859623: int(memory_order_seq_cst)); } 859623: 859623: __pointer_type 859623: operator+=(ptrdiff_t __d) volatile noexcept 859623: { return __atomic_add_fetch(&_M_p, _S_type_size(__d), 859623: int(memory_order_seq_cst)); } 859623: 859623: __pointer_type 859623: operator-=(ptrdiff_t __d) noexcept 859623: { return __atomic_sub_fetch(&_M_p, _S_type_size(__d), 859623: int(memory_order_seq_cst)); } 859623: 859623: __pointer_type 859623: operator-=(ptrdiff_t __d) volatile noexcept 859623: { return __atomic_sub_fetch(&_M_p, _S_type_size(__d), 859623: int(memory_order_seq_cst)); } 859623: 859623: bool 859623: is_lock_free() const noexcept 859623: { 859623: 859623: return __atomic_is_lock_free(sizeof(_M_p), 859623: reinterpret_cast(-__alignof(_M_p))); 859623: } 859623: 859623: bool 859623: is_lock_free() const volatile noexcept 859623: { 859623: 859623: return __atomic_is_lock_free(sizeof(_M_p), 859623: reinterpret_cast(-__alignof(_M_p))); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) void 859623: store(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: __atomic_store_n(&_M_p, __p, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) void 859623: store(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: __atomic_store_n(&_M_p, __p, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: load(memory_order __m = memory_order_seq_cst) const noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_load_n(&_M_p, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 859623: { 859623: memory_order __b __attribute__ ((__unused__)) 859623: = __m & __memory_order_mask; 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); 859623: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_load_n(&_M_p, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: exchange(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: return __atomic_exchange_n(&_M_p, __p, int(__m)); 859623: } 859623: 859623: 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: exchange(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: return __atomic_exchange_n(&_M_p, __p, int(__m)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, 859623: memory_order __m2) noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 859623: int(__m1), int(__m2)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 859623: int(__m1), int(__m2)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, 859623: memory_order __m2) noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 859623: int(__m1), int(__m2)); 859623: } 859623: 859623: inline __attribute__((__always_inline__)) bool 859623: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 859623: int(__m1), int(__m2)); 859623: } 859623: # 928 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: fetch_add(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return __atomic_fetch_add(&_M_p, _S_type_size(__d), int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: fetch_add(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return __atomic_fetch_add(&_M_p, _S_type_size(__d), int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: fetch_sub(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return __atomic_fetch_sub(&_M_p, _S_type_size(__d), int(__m)); } 859623: 859623: inline __attribute__((__always_inline__)) __pointer_type 859623: fetch_sub(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return __atomic_fetch_sub(&_M_p, _S_type_size(__d), int(__m)); } 859623: }; 859623: 859623: namespace __atomic_impl 859623: { 859623: 859623: 859623: template 859623: constexpr bool 859623: __maybe_has_padding() 859623: { 859623: 859623: 859623: 859623: return !__has_unique_object_representations(_Tp) 859623: && !is_same<_Tp, float>::value && !is_same<_Tp, double>::value; 859623: 859623: 859623: 859623: } 859623: 859623: template 859623: inline __attribute__((__always_inline__)) _Tp* 859623: __clear_padding(_Tp& __val) noexcept 859623: { 859623: auto* __ptr = std::__addressof(__val); 859623: 859623: if (__atomic_impl::__maybe_has_padding<_Tp>()) 859623: __builtin_clear_padding(__ptr); 859623: 859623: return __ptr; 859623: } 859623: 859623: 859623: template 859623: using _Val = typename remove_volatile<_Tp>::type; 859623: 859623: #pragma GCC diagnostic push 859623: #pragma GCC diagnostic ignored "-Wc++17-extensions" 859623: 859623: template 859623: inline __attribute__((__always_inline__)) bool 859623: __compare_exchange(_Tp& __val, _Val<_Tp>& __e, _Val<_Tp>& __i, 859623: bool __is_weak, 859623: memory_order __s, memory_order __f) noexcept 859623: { 859623: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__f))) std::__glibcxx_assert_fail(); } while (false); 859623: 859623: using _Vp = _Val<_Tp>; 859623: _Tp* const __pval = std::__addressof(__val); 859623: 859623: if constexpr (!__atomic_impl::__maybe_has_padding<_Vp>()) 859623: { 859623: return __atomic_compare_exchange(__pval, std::__addressof(__e), 859623: std::__addressof(__i), __is_weak, 859623: int(__s), int(__f)); 859623: } 859623: else if constexpr (!_AtomicRef) 859623: { 859623: 859623: _Vp* const __pi = __atomic_impl::__clear_padding(__i); 859623: 859623: _Vp __exp = __e; 859623: 859623: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); 859623: 859623: 859623: 859623: if (__atomic_compare_exchange(__pval, __pexp, __pi, 859623: __is_weak, int(__s), int(__f))) 859623: return true; 859623: 859623: __builtin_memcpy(std::__addressof(__e), __pexp, sizeof(_Vp)); 859623: return false; 859623: } 859623: else 859623: { 859623: 859623: _Vp* const __pi = __atomic_impl::__clear_padding(__i); 859623: 859623: 859623: _Vp __exp = __e; 859623: 859623: 859623: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); 859623: # 1042 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: while (true) 859623: { 859623: 859623: _Vp __orig = __exp; 859623: 859623: if (__atomic_compare_exchange(__pval, __pexp, __pi, 859623: __is_weak, int(__s), int(__f))) 859623: return true; 859623: 859623: 859623: _Vp __curr = __exp; 859623: 859623: 859623: if (__builtin_memcmp(__atomic_impl::__clear_padding(__orig), 859623: __atomic_impl::__clear_padding(__curr), 859623: sizeof(_Vp))) 859623: { 859623: 859623: __builtin_memcpy(std::__addressof(__e), __pexp, 859623: sizeof(_Vp)); 859623: return false; 859623: } 859623: } 859623: } 859623: } 859623: #pragma GCC diagnostic pop 859623: } 859623: # 2105 "/usr/arm-linux-gnueabi/include/c++/15/bits/atomic_base.h" 3 859623: 859623: } 859623: # 53 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 2 3 859623: 859623: 859623: 859623: namespace std __attribute__ ((__visibility__ ("default"))) 859623: { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct atomic; 859623: 859623: 859623: 859623: template<> 859623: struct atomic 859623: { 859623: using value_type = bool; 859623: 859623: private: 859623: __atomic_base _M_base; 859623: 859623: public: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(bool __i) noexcept : _M_base(__i) { } 859623: 859623: bool 859623: operator=(bool __i) noexcept 859623: { return _M_base.operator=(__i); } 859623: 859623: bool 859623: operator=(bool __i) volatile noexcept 859623: { return _M_base.operator=(__i); } 859623: 859623: operator bool() const noexcept 859623: { return _M_base.load(); } 859623: 859623: operator bool() const volatile noexcept 859623: { return _M_base.load(); } 859623: 859623: bool 859623: is_lock_free() const noexcept { return _M_base.is_lock_free(); } 859623: 859623: bool 859623: is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } 859623: 859623: 859623: 859623: 859623: 859623: void 859623: store(bool __i, memory_order __m = memory_order_seq_cst) noexcept 859623: { _M_base.store(__i, __m); } 859623: 859623: void 859623: store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { _M_base.store(__i, __m); } 859623: 859623: bool 859623: load(memory_order __m = memory_order_seq_cst) const noexcept 859623: { return _M_base.load(__m); } 859623: 859623: bool 859623: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 859623: { return _M_base.load(__m); } 859623: 859623: bool 859623: exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept 859623: { return _M_base.exchange(__i, __m); } 859623: 859623: bool 859623: exchange(bool __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return _M_base.exchange(__i, __m); } 859623: 859623: bool 859623: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 859623: memory_order __m2) noexcept 859623: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_weak(bool& __i1, bool __i2, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 859623: 859623: bool 859623: compare_exchange_weak(bool& __i1, bool __i2, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 859623: 859623: bool 859623: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 859623: memory_order __m2) noexcept 859623: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_strong(bool& __i1, bool __i2, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 859623: 859623: bool 859623: compare_exchange_strong(bool& __i1, bool __i2, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 859623: # 191 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: template 859623: struct atomic 859623: { 859623: using value_type = _Tp; 859623: 859623: private: 859623: 859623: static constexpr int _S_min_alignment 859623: = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 859623: ? 0 : sizeof(_Tp); 859623: 859623: static constexpr int _S_alignment 859623: = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); 859623: 859623: alignas(_S_alignment) _Tp _M_i; 859623: 859623: static_assert(__is_trivially_copyable(_Tp), 859623: "std::atomic requires a trivially copyable type"); 859623: 859623: static_assert(sizeof(_Tp) > 0, 859623: "Incomplete or zero-sized types are not supported"); 859623: # 227 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: public: 859623: # 236 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: atomic() = default; 859623: 859623: 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(_Tp __i) noexcept : _M_i(__i) 859623: { 859623: 859623: 859623: 859623: 859623: } 859623: 859623: operator _Tp() const noexcept 859623: { return load(); } 859623: 859623: operator _Tp() const volatile noexcept 859623: { return load(); } 859623: 859623: _Tp 859623: operator=(_Tp __i) noexcept 859623: { store(__i); return __i; } 859623: 859623: _Tp 859623: operator=(_Tp __i) volatile noexcept 859623: { store(__i); return __i; } 859623: 859623: bool 859623: is_lock_free() const noexcept 859623: { 859623: 859623: return __atomic_is_lock_free(sizeof(_M_i), 859623: reinterpret_cast(-_S_alignment)); 859623: } 859623: 859623: bool 859623: is_lock_free() const volatile noexcept 859623: { 859623: 859623: return __atomic_is_lock_free(sizeof(_M_i), 859623: reinterpret_cast(-_S_alignment)); 859623: } 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: __atomic_store(std::__addressof(_M_i), 859623: __atomic_impl::__clear_padding(__i), 859623: int(__m)); 859623: } 859623: 859623: void 859623: store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: __atomic_store(std::__addressof(_M_i), 859623: __atomic_impl::__clear_padding(__i), 859623: int(__m)); 859623: } 859623: 859623: _Tp 859623: load(memory_order __m = memory_order_seq_cst) const noexcept 859623: { 859623: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 859623: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 859623: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 859623: return *__ptr; 859623: } 859623: 859623: _Tp 859623: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 859623: { 859623: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 859623: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 859623: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 859623: return *__ptr; 859623: } 859623: 859623: _Tp 859623: exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 859623: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 859623: __atomic_exchange(std::__addressof(_M_i), 859623: __atomic_impl::__clear_padding(__i), 859623: __ptr, int(__m)); 859623: return *__ptr; 859623: } 859623: 859623: _Tp 859623: exchange(_Tp __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 859623: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 859623: __atomic_exchange(std::__addressof(_M_i), 859623: __atomic_impl::__clear_padding(__i), 859623: __ptr, int(__m)); 859623: return *__ptr; 859623: } 859623: 859623: bool 859623: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 859623: memory_order __f) noexcept 859623: { 859623: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, 859623: __s, __f); 859623: } 859623: 859623: bool 859623: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 859623: memory_order __f) volatile noexcept 859623: { 859623: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, 859623: __s, __f); 859623: } 859623: 859623: bool 859623: compare_exchange_weak(_Tp& __e, _Tp __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return compare_exchange_weak(__e, __i, __m, 859623: __cmpexch_failure_order(__m)); } 859623: 859623: bool 859623: compare_exchange_weak(_Tp& __e, _Tp __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return compare_exchange_weak(__e, __i, __m, 859623: __cmpexch_failure_order(__m)); } 859623: 859623: bool 859623: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 859623: memory_order __f) noexcept 859623: { 859623: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, 859623: __s, __f); 859623: } 859623: 859623: bool 859623: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 859623: memory_order __f) volatile noexcept 859623: { 859623: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, 859623: __s, __f); 859623: } 859623: 859623: bool 859623: compare_exchange_strong(_Tp& __e, _Tp __i, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return compare_exchange_strong(__e, __i, __m, 859623: __cmpexch_failure_order(__m)); } 859623: 859623: bool 859623: compare_exchange_strong(_Tp& __e, _Tp __i, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return compare_exchange_strong(__e, __i, __m, 859623: __cmpexch_failure_order(__m)); } 859623: # 419 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: }; 859623: 859623: 859623: template 859623: struct atomic<_Tp*> 859623: { 859623: using value_type = _Tp*; 859623: using difference_type = ptrdiff_t; 859623: 859623: typedef _Tp* __pointer_type; 859623: typedef __atomic_base<_Tp*> __base_type; 859623: __base_type _M_b; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } 859623: 859623: operator __pointer_type() const noexcept 859623: { return __pointer_type(_M_b); } 859623: 859623: operator __pointer_type() const volatile noexcept 859623: { return __pointer_type(_M_b); } 859623: 859623: __pointer_type 859623: operator=(__pointer_type __p) noexcept 859623: { return _M_b.operator=(__p); } 859623: 859623: __pointer_type 859623: operator=(__pointer_type __p) volatile noexcept 859623: { return _M_b.operator=(__p); } 859623: 859623: __pointer_type 859623: operator++(int) noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b++; 859623: } 859623: 859623: __pointer_type 859623: operator++(int) volatile noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b++; 859623: } 859623: 859623: __pointer_type 859623: operator--(int) noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b--; 859623: } 859623: 859623: __pointer_type 859623: operator--(int) volatile noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b--; 859623: } 859623: 859623: __pointer_type 859623: operator++() noexcept 859623: { 859623: 859623: 859623: 859623: return ++_M_b; 859623: } 859623: 859623: __pointer_type 859623: operator++() volatile noexcept 859623: { 859623: 859623: 859623: 859623: return ++_M_b; 859623: } 859623: 859623: __pointer_type 859623: operator--() noexcept 859623: { 859623: 859623: 859623: 859623: return --_M_b; 859623: } 859623: 859623: __pointer_type 859623: operator--() volatile noexcept 859623: { 859623: 859623: 859623: 859623: return --_M_b; 859623: } 859623: 859623: __pointer_type 859623: operator+=(ptrdiff_t __d) noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.operator+=(__d); 859623: } 859623: 859623: __pointer_type 859623: operator+=(ptrdiff_t __d) volatile noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.operator+=(__d); 859623: } 859623: 859623: __pointer_type 859623: operator-=(ptrdiff_t __d) noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.operator-=(__d); 859623: } 859623: 859623: __pointer_type 859623: operator-=(ptrdiff_t __d) volatile noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.operator-=(__d); 859623: } 859623: 859623: bool 859623: is_lock_free() const noexcept 859623: { return _M_b.is_lock_free(); } 859623: 859623: bool 859623: is_lock_free() const volatile noexcept 859623: { return _M_b.is_lock_free(); } 859623: 859623: 859623: 859623: 859623: 859623: 859623: void 859623: store(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return _M_b.store(__p, __m); } 859623: 859623: void 859623: store(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return _M_b.store(__p, __m); } 859623: 859623: __pointer_type 859623: load(memory_order __m = memory_order_seq_cst) const noexcept 859623: { return _M_b.load(__m); } 859623: 859623: __pointer_type 859623: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 859623: { return _M_b.load(__m); } 859623: 859623: __pointer_type 859623: exchange(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { return _M_b.exchange(__p, __m); } 859623: 859623: __pointer_type 859623: exchange(__pointer_type __p, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { return _M_b.exchange(__p, __m); } 859623: 859623: bool 859623: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, memory_order __m2) noexcept 859623: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: return compare_exchange_weak(__p1, __p2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: 859623: bool 859623: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: return compare_exchange_weak(__p1, __p2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: 859623: bool 859623: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, memory_order __m2) noexcept 859623: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m1, 859623: memory_order __m2) volatile noexcept 859623: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 859623: 859623: bool 859623: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: return _M_b.compare_exchange_strong(__p1, __p2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: 859623: bool 859623: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: return _M_b.compare_exchange_strong(__p1, __p2, __m, 859623: __cmpexch_failure_order(__m)); 859623: } 859623: # 673 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: __pointer_type 859623: fetch_add(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.fetch_add(__d, __m); 859623: } 859623: 859623: __pointer_type 859623: fetch_add(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.fetch_add(__d, __m); 859623: } 859623: 859623: __pointer_type 859623: fetch_sub(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.fetch_sub(__d, __m); 859623: } 859623: 859623: __pointer_type 859623: fetch_sub(ptrdiff_t __d, 859623: memory_order __m = memory_order_seq_cst) volatile noexcept 859623: { 859623: 859623: 859623: 859623: return _M_b.fetch_sub(__d, __m); 859623: } 859623: }; 859623: 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef char __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef signed char __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept= default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef unsigned char __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept= default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef short __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef unsigned short __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef int __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef unsigned int __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef long __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef unsigned long __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef long long __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef unsigned long long __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef wchar_t __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: }; 859623: # 1018 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef char16_t __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: template<> 859623: struct atomic : __atomic_base 859623: { 859623: typedef char32_t __integral_type; 859623: typedef __atomic_base __base_type; 859623: 859623: atomic() noexcept = default; 859623: ~atomic() noexcept = default; 859623: atomic(const atomic&) = delete; 859623: atomic& operator=(const atomic&) = delete; 859623: atomic& operator=(const atomic&) volatile = delete; 859623: 859623: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 859623: 859623: using __base_type::operator __integral_type; 859623: using __base_type::operator=; 859623: 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: 859623: typedef atomic atomic_bool; 859623: 859623: 859623: typedef atomic atomic_char; 859623: 859623: 859623: typedef atomic atomic_schar; 859623: 859623: 859623: typedef atomic atomic_uchar; 859623: 859623: 859623: typedef atomic atomic_short; 859623: 859623: 859623: typedef atomic atomic_ushort; 859623: 859623: 859623: typedef atomic atomic_int; 859623: 859623: 859623: typedef atomic atomic_uint; 859623: 859623: 859623: typedef atomic atomic_long; 859623: 859623: 859623: typedef atomic atomic_ulong; 859623: 859623: 859623: typedef atomic atomic_llong; 859623: 859623: 859623: typedef atomic atomic_ullong; 859623: 859623: 859623: typedef atomic atomic_wchar_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef atomic atomic_char16_t; 859623: 859623: 859623: typedef atomic atomic_char32_t; 859623: 859623: 859623: 859623: 859623: 859623: 859623: typedef atomic atomic_int8_t; 859623: 859623: 859623: typedef atomic atomic_uint8_t; 859623: 859623: 859623: typedef atomic atomic_int16_t; 859623: 859623: 859623: typedef atomic atomic_uint16_t; 859623: 859623: 859623: typedef atomic atomic_int32_t; 859623: 859623: 859623: typedef atomic atomic_uint32_t; 859623: 859623: 859623: typedef atomic atomic_int64_t; 859623: 859623: 859623: typedef atomic atomic_uint64_t; 859623: 859623: 859623: 859623: typedef atomic atomic_int_least8_t; 859623: 859623: 859623: typedef atomic atomic_uint_least8_t; 859623: 859623: 859623: typedef atomic atomic_int_least16_t; 859623: 859623: 859623: typedef atomic atomic_uint_least16_t; 859623: 859623: 859623: typedef atomic atomic_int_least32_t; 859623: 859623: 859623: typedef atomic atomic_uint_least32_t; 859623: 859623: 859623: typedef atomic atomic_int_least64_t; 859623: 859623: 859623: typedef atomic atomic_uint_least64_t; 859623: 859623: 859623: 859623: typedef atomic atomic_int_fast8_t; 859623: 859623: 859623: typedef atomic atomic_uint_fast8_t; 859623: 859623: 859623: typedef atomic atomic_int_fast16_t; 859623: 859623: 859623: typedef atomic atomic_uint_fast16_t; 859623: 859623: 859623: typedef atomic atomic_int_fast32_t; 859623: 859623: 859623: typedef atomic atomic_uint_fast32_t; 859623: 859623: 859623: typedef atomic atomic_int_fast64_t; 859623: 859623: 859623: typedef atomic atomic_uint_fast64_t; 859623: 859623: 859623: 859623: typedef atomic atomic_intptr_t; 859623: 859623: 859623: typedef atomic atomic_uintptr_t; 859623: 859623: 859623: typedef atomic atomic_size_t; 859623: 859623: 859623: typedef atomic atomic_ptrdiff_t; 859623: 859623: 859623: typedef atomic atomic_intmax_t; 859623: 859623: 859623: typedef atomic atomic_uintmax_t; 859623: 859623: 859623: inline bool 859623: atomic_flag_test_and_set_explicit(atomic_flag* __a, 859623: memory_order __m) noexcept 859623: { return __a->test_and_set(__m); } 859623: 859623: inline bool 859623: atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, 859623: memory_order __m) noexcept 859623: { return __a->test_and_set(__m); } 859623: # 1244 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: inline void 859623: atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept 859623: { __a->clear(__m); } 859623: 859623: inline void 859623: atomic_flag_clear_explicit(volatile atomic_flag* __a, 859623: memory_order __m) noexcept 859623: { __a->clear(__m); } 859623: 859623: inline bool 859623: atomic_flag_test_and_set(atomic_flag* __a) noexcept 859623: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 859623: 859623: inline bool 859623: atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept 859623: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 859623: 859623: inline void 859623: atomic_flag_clear(atomic_flag* __a) noexcept 859623: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 859623: 859623: inline void 859623: atomic_flag_clear(volatile atomic_flag* __a) noexcept 859623: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 859623: # 1291 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: template 859623: using __atomic_val_t = __type_identity_t<_Tp>; 859623: template 859623: using __atomic_diff_t = typename atomic<_Tp>::difference_type; 859623: 859623: 859623: 859623: 859623: template 859623: inline bool 859623: atomic_is_lock_free(const atomic<_ITp>* __a) noexcept 859623: { return __a->is_lock_free(); } 859623: 859623: template 859623: inline bool 859623: atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept 859623: { return __a->is_lock_free(); } 859623: 859623: template 859623: inline void 859623: atomic_init(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 859623: { __a->store(__i, memory_order_relaxed); } 859623: 859623: template 859623: inline void 859623: atomic_init(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 859623: { __a->store(__i, memory_order_relaxed); } 859623: 859623: template 859623: inline void 859623: atomic_store_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { __a->store(__i, __m); } 859623: 859623: template 859623: inline void 859623: atomic_store_explicit(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { __a->store(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept 859623: { return __a->load(__m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_load_explicit(const volatile atomic<_ITp>* __a, 859623: memory_order __m) noexcept 859623: { return __a->load(__m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_exchange_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->exchange(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_exchange_explicit(volatile atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->exchange(__i, __m); } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2, 859623: memory_order __m1, 859623: memory_order __m2) noexcept 859623: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2, 859623: memory_order __m1, 859623: memory_order __m2) noexcept 859623: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2, 859623: memory_order __m1, 859623: memory_order __m2) noexcept 859623: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2, 859623: memory_order __m1, 859623: memory_order __m2) noexcept 859623: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 859623: 859623: 859623: template 859623: inline void 859623: atomic_store(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 859623: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline void 859623: atomic_store(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 859623: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_load(const atomic<_ITp>* __a) noexcept 859623: { return atomic_load_explicit(__a, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_load(const volatile atomic<_ITp>* __a) noexcept 859623: { return atomic_load_explicit(__a, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_exchange(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_exchange(volatile atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_weak(atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2) noexcept 859623: { 859623: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 859623: memory_order_seq_cst, 859623: memory_order_seq_cst); 859623: } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2) noexcept 859623: { 859623: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 859623: memory_order_seq_cst, 859623: memory_order_seq_cst); 859623: } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_strong(atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2) noexcept 859623: { 859623: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 859623: memory_order_seq_cst, 859623: memory_order_seq_cst); 859623: } 859623: 859623: template 859623: inline bool 859623: atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, 859623: __atomic_val_t<_ITp>* __i1, 859623: __atomic_val_t<_ITp> __i2) noexcept 859623: { 859623: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 859623: memory_order_seq_cst, 859623: memory_order_seq_cst); 859623: } 859623: # 1497 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: template 859623: inline _ITp 859623: atomic_fetch_add_explicit(atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_add(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_add_explicit(volatile atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_add(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_sub_explicit(atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_sub(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_sub_explicit(volatile atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_sub(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_and(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_and(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_or(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_or(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_xor(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i, 859623: memory_order __m) noexcept 859623: { return __a->fetch_xor(__i, __m); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_add(atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i) noexcept 859623: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_add(volatile atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i) noexcept 859623: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_sub(atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i) noexcept 859623: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_sub(volatile atomic<_ITp>* __a, 859623: __atomic_diff_t<_ITp> __i) noexcept 859623: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_and(__atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_and(volatile __atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_or(__atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_or(volatile __atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_xor(__atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 859623: 859623: template 859623: inline _ITp 859623: atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, 859623: __atomic_val_t<_ITp> __i) noexcept 859623: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 859623: # 1798 "/usr/arm-linux-gnueabi/include/c++/15/atomic" 3 859623: 859623: } 859623: # 26 "/<>/_include/workflow/WFTask.h" 2 859623: 859623: 859623: # 1 "/<>/_include/workflow/Executor.h" 1 859623: # 22 "/<>/_include/workflow/Executor.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 23 "/<>/_include/workflow/Executor.h" 2 859623: 859623: 859623: 859623: 859623: # 26 "/<>/_include/workflow/Executor.h" 859623: class ExecQueue 859623: { 859623: public: 859623: int init(); 859623: void deinit(); 859623: 859623: private: 859623: struct list_head session_list; 859623: pthread_mutex_t mutex; 859623: 859623: public: 859623: virtual ~ExecQueue() { } 859623: friend class Executor; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: class ExecSession 859623: { 859623: private: 859623: virtual void execute() = 0; 859623: virtual void handle(int state, int error) = 0; 859623: 859623: protected: 859623: ExecQueue *get_queue() const { return this->queue; } 859623: 859623: private: 859623: ExecQueue *queue; 859623: 859623: public: 859623: virtual ~ExecSession() { } 859623: friend class Executor; 859623: }; 859623: 859623: class Executor 859623: { 859623: public: 859623: int init(size_t nthreads); 859623: void deinit(); 859623: 859623: int request(ExecSession *session, ExecQueue *queue); 859623: 859623: public: 859623: int increase_thread(); 859623: int decrease_thread(); 859623: 859623: private: 859623: struct __thrdpool *thrdpool; 859623: 859623: private: 859623: static void executor_thread_routine(void *context); 859623: static void executor_cancel(const struct thrdpool_task *task); 859623: 859623: public: 859623: virtual ~Executor() { } 859623: }; 859623: # 29 "/<>/_include/workflow/WFTask.h" 2 859623: # 1 "/<>/_include/workflow/ExecRequest.h" 1 859623: # 25 "/<>/_include/workflow/ExecRequest.h" 859623: class ExecRequest : public SubTask, public ExecSession 859623: { 859623: public: 859623: ExecRequest(ExecQueue *queue, Executor *executor) 859623: { 859623: this->executor = executor; 859623: this->queue = queue; 859623: } 859623: 859623: ExecQueue *get_request_queue() const { return this->queue; } 859623: void set_request_queue(ExecQueue *queue) { this->queue = queue; } 859623: 859623: public: 859623: virtual void dispatch() 859623: { 859623: if (this->executor->request(this, this->queue) < 0) 859623: this->handle(1, 859623: # 41 "/<>/_include/workflow/ExecRequest.h" 3 859623: (*__errno_location ()) 859623: # 41 "/<>/_include/workflow/ExecRequest.h" 859623: ); 859623: } 859623: 859623: protected: 859623: int state; 859623: int error; 859623: 859623: protected: 859623: ExecQueue *queue; 859623: Executor *executor; 859623: 859623: protected: 859623: virtual void handle(int state, int error) 859623: { 859623: this->state = state; 859623: this->error = error; 859623: this->subtask_done(); 859623: } 859623: }; 859623: # 30 "/<>/_include/workflow/WFTask.h" 2 859623: 859623: # 1 "/<>/_include/workflow/CommScheduler.h" 1 859623: # 28 "/<>/_include/workflow/CommScheduler.h" 859623: class CommSchedObject 859623: { 859623: public: 859623: size_t get_max_load() const { return this->max_load; } 859623: size_t get_cur_load() const { return this->cur_load; } 859623: 859623: private: 859623: virtual CommTarget *acquire(int wait_timeout) = 0; 859623: 859623: protected: 859623: size_t max_load; 859623: size_t cur_load; 859623: 859623: public: 859623: virtual ~CommSchedObject() { } 859623: friend class CommScheduler; 859623: }; 859623: 859623: class CommSchedGroup; 859623: 859623: class CommSchedTarget : public CommSchedObject, public CommTarget 859623: { 859623: public: 859623: int init(const struct sockaddr *addr, socklen_t addrlen, 859623: int connect_timeout, int response_timeout, 859623: size_t max_connections); 859623: void deinit(); 859623: 859623: public: 859623: int init(const struct sockaddr *addr, socklen_t addrlen, SSL_CTX *ssl_ctx, 859623: int connect_timeout, int ssl_connect_timeout, int response_timeout, 859623: size_t max_connections) 859623: { 859623: int ret = this->init(addr, addrlen, connect_timeout, response_timeout, 859623: max_connections); 859623: 859623: if (ret >= 0) 859623: this->set_ssl(ssl_ctx, ssl_connect_timeout); 859623: 859623: return ret; 859623: } 859623: 859623: private: 859623: virtual CommTarget *acquire(int wait_timeout); 859623: virtual void release(); 859623: 859623: private: 859623: CommSchedGroup *group; 859623: int index; 859623: int wait_cnt; 859623: pthread_mutex_t mutex; 859623: pthread_cond_t cond; 859623: friend class CommSchedGroup; 859623: }; 859623: 859623: class CommSchedGroup : public CommSchedObject 859623: { 859623: public: 859623: int init(); 859623: void deinit(); 859623: int add(CommSchedTarget *target); 859623: int remove(CommSchedTarget *target); 859623: 859623: private: 859623: virtual CommTarget *acquire(int wait_timeout); 859623: 859623: private: 859623: CommSchedTarget **tg_heap; 859623: int heap_size; 859623: int heap_buf_size; 859623: int wait_cnt; 859623: pthread_mutex_t mutex; 859623: pthread_cond_t cond; 859623: 859623: private: 859623: static int target_cmp(CommSchedTarget *target1, CommSchedTarget *target2); 859623: void heapify(int top); 859623: void heap_adjust(int index, int swap_on_equal); 859623: int heap_insert(CommSchedTarget *target); 859623: void heap_remove(int index); 859623: friend class CommSchedTarget; 859623: }; 859623: 859623: class CommScheduler 859623: { 859623: public: 859623: int init(size_t poller_threads, size_t handler_threads) 859623: { 859623: return this->comm.init(poller_threads, handler_threads); 859623: } 859623: 859623: void deinit() 859623: { 859623: this->comm.deinit(); 859623: } 859623: 859623: 859623: int request(CommSession *session, CommSchedObject *object, 859623: int wait_timeout, CommTarget **target) 859623: { 859623: int ret = -1; 859623: 859623: *target = object->acquire(wait_timeout); 859623: if (*target) 859623: { 859623: ret = this->comm.request(session, *target); 859623: if (ret < 0) 859623: (*target)->release(); 859623: } 859623: 859623: return ret; 859623: } 859623: 859623: 859623: int reply(CommSession *session) 859623: { 859623: return this->comm.reply(session); 859623: } 859623: 859623: int shutdown(CommSession *session) 859623: { 859623: return this->comm.shutdown(session); 859623: } 859623: 859623: int push(const void *buf, size_t size, CommSession *session) 859623: { 859623: return this->comm.push(buf, size, session); 859623: } 859623: 859623: int bind(CommService *service) 859623: { 859623: return this->comm.bind(service); 859623: } 859623: 859623: void unbind(CommService *service) 859623: { 859623: this->comm.unbind(service); 859623: } 859623: 859623: 859623: int sleep(SleepSession *session) 859623: { 859623: return this->comm.sleep(session); 859623: } 859623: 859623: 859623: int unsleep(SleepSession *session) 859623: { 859623: return this->comm.unsleep(session); 859623: } 859623: 859623: 859623: int io_bind(IOService *service) 859623: { 859623: return this->comm.io_bind(service); 859623: } 859623: 859623: void io_unbind(IOService *service) 859623: { 859623: this->comm.io_unbind(service); 859623: } 859623: 859623: public: 859623: int is_handler_thread() const 859623: { 859623: return this->comm.is_handler_thread(); 859623: } 859623: 859623: int increase_handler_thread() 859623: { 859623: return this->comm.increase_handler_thread(); 859623: } 859623: 859623: int decrease_handler_thread() 859623: { 859623: return this->comm.decrease_handler_thread(); 859623: } 859623: 859623: public: 859623: void customize_event_handler(CommEventHandler *handler) 859623: { 859623: this->comm.customize_event_handler(handler); 859623: } 859623: 859623: private: 859623: Communicator comm; 859623: 859623: public: 859623: virtual ~CommScheduler() { } 859623: }; 859623: # 32 "/<>/_include/workflow/WFTask.h" 2 859623: # 1 "/<>/_include/workflow/CommRequest.h" 1 859623: # 23 "/<>/_include/workflow/CommRequest.h" 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 24 "/<>/_include/workflow/CommRequest.h" 2 859623: 859623: 859623: 859623: 859623: class CommRequest : public SubTask, public CommSession 859623: { 859623: public: 859623: CommRequest(CommSchedObject *object, CommScheduler *scheduler) 859623: { 859623: this->scheduler = scheduler; 859623: this->object = object; 859623: this->wait_timeout = 0; 859623: } 859623: 859623: CommSchedObject *get_request_object() const { return this->object; } 859623: void set_request_object(CommSchedObject *object) { this->object = object; } 859623: int get_wait_timeout() const { return this->wait_timeout; } 859623: void set_wait_timeout(int timeout) { this->wait_timeout = timeout; } 859623: 859623: public: 859623: virtual void dispatch() 859623: { 859623: if (this->scheduler->request(this, this->object, this->wait_timeout, 859623: &this->target) < 0) 859623: { 859623: this->handle(1, 859623: # 49 "/<>/_include/workflow/CommRequest.h" 3 859623: (*__errno_location ()) 859623: # 49 "/<>/_include/workflow/CommRequest.h" 859623: ); 859623: } 859623: } 859623: 859623: protected: 859623: int state; 859623: int error; 859623: 859623: protected: 859623: CommTarget *target; 859623: 859623: 859623: 859623: 859623: int timeout_reason; 859623: 859623: protected: 859623: int wait_timeout; 859623: CommSchedObject *object; 859623: CommScheduler *scheduler; 859623: 859623: protected: 859623: virtual void handle(int state, int error); 859623: }; 859623: # 33 "/<>/_include/workflow/WFTask.h" 2 859623: # 1 "/<>/_include/workflow/SleepRequest.h" 1 859623: # 27 "/<>/_include/workflow/SleepRequest.h" 859623: class SleepRequest : public SubTask, public SleepSession 859623: { 859623: public: 859623: SleepRequest(CommScheduler *scheduler) 859623: { 859623: this->scheduler = scheduler; 859623: } 859623: 859623: public: 859623: virtual void dispatch() 859623: { 859623: if (this->scheduler->sleep(this) < 0) 859623: this->handle(1, 859623: # 39 "/<>/_include/workflow/SleepRequest.h" 3 859623: (*__errno_location ()) 859623: # 39 "/<>/_include/workflow/SleepRequest.h" 859623: ); 859623: } 859623: 859623: protected: 859623: int cancel() 859623: { 859623: return this->scheduler->unsleep(this); 859623: } 859623: 859623: protected: 859623: int state; 859623: int error; 859623: 859623: protected: 859623: CommScheduler *scheduler; 859623: 859623: protected: 859623: virtual void handle(int state, int error) 859623: { 859623: this->state = state; 859623: this->error = error; 859623: this->subtask_done(); 859623: } 859623: }; 859623: # 34 "/<>/_include/workflow/WFTask.h" 2 859623: # 1 "/<>/_include/workflow/IORequest.h" 1 859623: # 26 "/<>/_include/workflow/IORequest.h" 859623: class IORequest : public SubTask, public IOSession 859623: { 859623: public: 859623: IORequest(IOService *service) 859623: { 859623: this->service = service; 859623: } 859623: 859623: public: 859623: virtual void dispatch() 859623: { 859623: if (this->service->request(this) < 0) 859623: this->handle(1, 859623: # 38 "/<>/_include/workflow/IORequest.h" 3 859623: (*__errno_location ()) 859623: # 38 "/<>/_include/workflow/IORequest.h" 859623: ); 859623: } 859623: 859623: protected: 859623: int state; 859623: int error; 859623: 859623: protected: 859623: IOService *service; 859623: 859623: protected: 859623: virtual void handle(int state, int error) 859623: { 859623: this->state = state; 859623: this->error = error; 859623: this->subtask_done(); 859623: } 859623: }; 859623: # 35 "/<>/_include/workflow/WFTask.h" 2 859623: 859623: # 1 "/<>/_include/workflow/WFConnection.h" 1 859623: # 27 "/<>/_include/workflow/WFConnection.h" 859623: class WFConnection : public CommConnection 859623: { 859623: public: 859623: void *get_context() const 859623: { 859623: return this->context; 859623: } 859623: 859623: void set_context(void *context, std::function deleter) 859623: { 859623: this->context = context; 859623: this->deleter = std::move(deleter); 859623: } 859623: 859623: void set_context(void *context) 859623: { 859623: this->context = context; 859623: } 859623: 859623: void *test_set_context(void *test_context, void *new_context, 859623: std::function deleter) 859623: { 859623: if (this->context.compare_exchange_strong(test_context, new_context)) 859623: { 859623: this->deleter = std::move(deleter); 859623: return new_context; 859623: } 859623: 859623: return test_context; 859623: } 859623: 859623: void *test_set_context(void *test_context, void *new_context) 859623: { 859623: if (this->context.compare_exchange_strong(test_context, new_context)) 859623: return new_context; 859623: 859623: return test_context; 859623: } 859623: 859623: private: 859623: std::atomic context; 859623: std::function deleter; 859623: 859623: public: 859623: WFConnection() : context( 859623: # 71 "/<>/_include/workflow/WFConnection.h" 3 4 859623: __null 859623: # 71 "/<>/_include/workflow/WFConnection.h" 859623: ) { } 859623: 859623: protected: 859623: virtual ~WFConnection() 859623: { 859623: if (this->deleter) 859623: this->deleter(this->context); 859623: } 859623: }; 859623: # 37 "/<>/_include/workflow/WFTask.h" 2 859623: 859623: enum 859623: { 859623: WFT_STATE_UNDEFINED = -1, 859623: WFT_STATE_SUCCESS = 0, 859623: WFT_STATE_TOREPLY = 3, 859623: WFT_STATE_NOREPLY = 3 + 1, 859623: WFT_STATE_SYS_ERROR = 1, 859623: WFT_STATE_SSL_ERROR = 65, 859623: WFT_STATE_DNS_ERROR = 66, 859623: WFT_STATE_TASK_ERROR = 67, 859623: WFT_STATE_ABORTED = 2 859623: }; 859623: 859623: template 859623: class WFThreadTask : public ExecRequest 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 57 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 57 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 57 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 57 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 57 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 57 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 63 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 63 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 63 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 63 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 63 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 63 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: INPUT *get_input() { return &this->input; } 859623: OUTPUT *get_output() { return &this->output; } 859623: 859623: const INPUT *get_input() const { return &this->input; } 859623: const OUTPUT *get_output() const { return &this->output; } 859623: 859623: public: 859623: void *user_data; 859623: 859623: public: 859623: int get_state() const { return this->state; } 859623: int get_error() const { return this->error; } 859623: 859623: public: 859623: void set_callback(std::function *)> cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: INPUT input; 859623: OUTPUT output; 859623: std::function *)> callback; 859623: 859623: public: 859623: WFThreadTask(ExecQueue *queue, Executor *executor, 859623: std::function *)>&& cb) : 859623: ExecRequest(queue, executor), 859623: callback(std::move(cb)) 859623: { 859623: this->user_data = 859623: # 110 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 110 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: } 859623: 859623: protected: 859623: virtual ~WFThreadTask() { } 859623: }; 859623: 859623: template 859623: class WFNetworkTask : public CommRequest 859623: { 859623: public: 859623: 859623: void start() 859623: { 859623: 859623: # 126 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 126 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 126 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 126 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 126 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 126 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 132 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 132 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 132 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 132 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 132 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 132 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: REQ *get_req() { return &this->req; } 859623: RESP *get_resp() { return &this->resp; } 859623: 859623: const REQ *get_req() const { return &this->req; } 859623: const RESP *get_resp() const { return &this->resp; } 859623: 859623: public: 859623: void *user_data; 859623: 859623: public: 859623: int get_state() const { return this->state; } 859623: int get_error() const { return this->error; } 859623: 859623: 859623: 859623: 859623: 859623: int get_timeout_reason() const { return this->timeout_reason; } 859623: 859623: 859623: long long get_task_seq() const 859623: { 859623: if (!this->target) 859623: { 859623: 859623: # 161 "/<>/_include/workflow/WFTask.h" 3 859623: (*__errno_location ()) 859623: # 161 "/<>/_include/workflow/WFTask.h" 859623: = 859623: # 161 "/<>/_include/workflow/WFTask.h" 3 859623: 107 859623: # 161 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: return -1; 859623: } 859623: 859623: return this->get_seq(); 859623: } 859623: 859623: int get_peer_addr(struct sockaddr *addr, socklen_t *addrlen) const; 859623: 859623: virtual WFConnection *get_connection() const = 0; 859623: 859623: public: 859623: 859623: void set_send_timeout(int timeout) { this->send_timeo = timeout; } 859623: void set_receive_timeout(int timeout) { this->receive_timeo = timeout; } 859623: void set_keep_alive(int timeout) { this->keep_alive_timeo = timeout; } 859623: void set_watch_timeout(int timeout) { this->watch_timeo = timeout; } 859623: 859623: public: 859623: 859623: void noreply() 859623: { 859623: if (this->state == WFT_STATE_TOREPLY) 859623: this->state = WFT_STATE_NOREPLY; 859623: } 859623: 859623: 859623: virtual int push(const void *buf, size_t size) 859623: { 859623: if (this->state != WFT_STATE_TOREPLY && 859623: this->state != WFT_STATE_NOREPLY) 859623: { 859623: 859623: # 193 "/<>/_include/workflow/WFTask.h" 3 859623: (*__errno_location ()) 859623: # 193 "/<>/_include/workflow/WFTask.h" 859623: = 859623: # 193 "/<>/_include/workflow/WFTask.h" 3 859623: 2 859623: # 193 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: return -1; 859623: } 859623: 859623: return this->scheduler->push(buf, size, this); 859623: } 859623: 859623: 859623: 859623: bool closed() const 859623: { 859623: switch (this->state) 859623: { 859623: case WFT_STATE_UNDEFINED: 859623: return false; 859623: case WFT_STATE_TOREPLY: 859623: case WFT_STATE_NOREPLY: 859623: return !this->target->has_idle_conn(); 859623: default: 859623: return true; 859623: } 859623: } 859623: 859623: public: 859623: void set_prepare(std::function *)> prep) 859623: { 859623: this->prepare = std::move(prep); 859623: } 859623: 859623: public: 859623: void set_callback(std::function *)> cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual int send_timeout() { return this->send_timeo; } 859623: virtual int receive_timeout() { return this->receive_timeo; } 859623: virtual int keep_alive_timeout() { return this->keep_alive_timeo; } 859623: virtual int first_timeout() { return this->watch_timeo; } 859623: 859623: protected: 859623: int send_timeo; 859623: int receive_timeo; 859623: int keep_alive_timeo; 859623: int watch_timeo; 859623: REQ req; 859623: RESP resp; 859623: std::function *)> prepare; 859623: std::function *)> callback; 859623: 859623: protected: 859623: WFNetworkTask(CommSchedObject *object, CommScheduler *scheduler, 859623: std::function *)>&& cb) : 859623: CommRequest(object, scheduler), 859623: callback(std::move(cb)) 859623: { 859623: this->send_timeo = -1; 859623: this->receive_timeo = -1; 859623: this->keep_alive_timeo = 0; 859623: this->watch_timeo = 0; 859623: this->target = 859623: # 254 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 254 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->timeout_reason = 0; 859623: this->user_data = 859623: # 256 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 256 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: } 859623: 859623: virtual ~WFNetworkTask() { } 859623: }; 859623: 859623: class WFTimerTask : public SleepRequest 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 269 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 269 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 269 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 269 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 269 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 269 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 275 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 275 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 275 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 275 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 275 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 275 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: void *user_data; 859623: 859623: public: 859623: int get_state() const { return this->state; } 859623: int get_error() const { return this->error; } 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: std::function callback; 859623: 859623: public: 859623: WFTimerTask(CommScheduler *scheduler, 859623: std::function cb) : 859623: SleepRequest(scheduler), 859623: callback(std::move(cb)) 859623: { 859623: this->user_data = 859623: # 313 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 313 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: } 859623: 859623: protected: 859623: virtual ~WFTimerTask() { } 859623: }; 859623: 859623: template 859623: class WFFileTask : public IORequest 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 328 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 328 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 328 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 328 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 328 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 328 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 334 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 334 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 334 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 334 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 334 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 334 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: ARGS *get_args() { return &this->args; } 859623: 859623: const ARGS *get_args() const { return &this->args; } 859623: 859623: long get_retval() const 859623: { 859623: if (this->state == WFT_STATE_SUCCESS) 859623: return this->get_res(); 859623: else 859623: return -1; 859623: } 859623: 859623: public: 859623: void *user_data; 859623: 859623: public: 859623: int get_state() const { return this->state; } 859623: int get_error() const { return this->error; } 859623: 859623: public: 859623: void set_callback(std::function *)> cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: ARGS args; 859623: std::function *)> callback; 859623: 859623: public: 859623: WFFileTask(IOService *service, 859623: std::function *)>&& cb) : 859623: IORequest(service), 859623: callback(std::move(cb)) 859623: { 859623: this->user_data = 859623: # 386 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 386 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: } 859623: 859623: protected: 859623: virtual ~WFFileTask() { } 859623: }; 859623: 859623: class WFGenericTask : public SubTask 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 400 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 400 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 400 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 400 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 400 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 400 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 406 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 406 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 406 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 406 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 406 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 406 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: void *user_data; 859623: 859623: public: 859623: int get_state() const { return this->state; } 859623: int get_error() const { return this->error; } 859623: 859623: protected: 859623: virtual void dispatch() 859623: { 859623: this->subtask_done(); 859623: } 859623: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: int state; 859623: int error; 859623: 859623: public: 859623: WFGenericTask() 859623: { 859623: this->user_data = 859623: # 437 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 437 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: } 859623: 859623: protected: 859623: virtual ~WFGenericTask() { } 859623: }; 859623: 859623: class WFCounterTask : public WFGenericTask 859623: { 859623: public: 859623: virtual void count() 859623: { 859623: if (--this->value == 0) 859623: { 859623: this->state = WFT_STATE_SUCCESS; 859623: this->subtask_done(); 859623: } 859623: } 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual void dispatch() 859623: { 859623: this->WFCounterTask::count(); 859623: } 859623: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: std::atomic value; 859623: std::function callback; 859623: 859623: public: 859623: WFCounterTask(unsigned int target_value, 859623: std::function&& cb) : 859623: value(target_value + 1), 859623: callback(std::move(cb)) 859623: { 859623: } 859623: 859623: protected: 859623: virtual ~WFCounterTask() { } 859623: }; 859623: 859623: class WFMailboxTask : public WFGenericTask 859623: { 859623: public: 859623: virtual void send(void *msg) 859623: { 859623: *this->mailbox = msg; 859623: if (this->flag.exchange(true)) 859623: { 859623: this->state = WFT_STATE_SUCCESS; 859623: this->subtask_done(); 859623: } 859623: } 859623: 859623: void **get_mailbox() const { return this->mailbox; } 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual void dispatch() 859623: { 859623: if (this->flag.exchange(true)) 859623: { 859623: this->state = WFT_STATE_SUCCESS; 859623: this->subtask_done(); 859623: } 859623: } 859623: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: void **mailbox; 859623: std::atomic flag; 859623: std::function callback; 859623: 859623: public: 859623: WFMailboxTask(void **mailbox, 859623: std::function&& cb) : 859623: flag(false), 859623: callback(std::move(cb)) 859623: { 859623: this->mailbox = mailbox; 859623: } 859623: 859623: WFMailboxTask(std::function&& cb) : 859623: flag(false), 859623: callback(std::move(cb)) 859623: { 859623: this->mailbox = &this->user_data; 859623: } 859623: 859623: protected: 859623: virtual ~WFMailboxTask() { } 859623: }; 859623: 859623: class WFSelectorTask : public WFGenericTask 859623: { 859623: public: 859623: virtual int submit(void *msg) 859623: { 859623: void *tmp = 859623: # 569 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 569 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: int ret = 0; 859623: 859623: if (this->message.compare_exchange_strong(tmp, msg) && msg) 859623: { 859623: ret = 1; 859623: if (this->flag.exchange(true)) 859623: { 859623: this->state = WFT_STATE_SUCCESS; 859623: this->subtask_done(); 859623: } 859623: } 859623: 859623: if (--this->nleft == 0) 859623: { 859623: if (!this->message) 859623: { 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = 859623: # 587 "/<>/_include/workflow/WFTask.h" 3 859623: 42 859623: # 587 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->subtask_done(); 859623: } 859623: 859623: delete this; 859623: } 859623: 859623: return ret; 859623: } 859623: 859623: void *get_message() const { return this->message; } 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual void dispatch() 859623: { 859623: if (this->flag.exchange(true)) 859623: { 859623: this->state = WFT_STATE_SUCCESS; 859623: this->subtask_done(); 859623: } 859623: 859623: if (--this->nleft == 0) 859623: { 859623: if (!this->message) 859623: { 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = 859623: # 619 "/<>/_include/workflow/WFTask.h" 3 859623: 42 859623: # 619 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->subtask_done(); 859623: } 859623: 859623: delete this; 859623: } 859623: } 859623: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: std::atomic message; 859623: std::atomic flag; 859623: std::atomic nleft; 859623: std::function callback; 859623: 859623: public: 859623: WFSelectorTask(size_t candidates, 859623: std::function&& cb) : 859623: message( 859623: # 646 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 646 "/<>/_include/workflow/WFTask.h" 859623: ), 859623: flag(false), 859623: nleft(candidates + 1), 859623: callback(std::move(cb)) 859623: { 859623: } 859623: 859623: protected: 859623: virtual ~WFSelectorTask() { } 859623: }; 859623: 859623: class WFConditional : public WFGenericTask 859623: { 859623: public: 859623: virtual void signal(void *msg) 859623: { 859623: *this->msgbuf = msg; 859623: if (this->flag.exchange(true)) 859623: this->subtask_done(); 859623: } 859623: 859623: protected: 859623: virtual void dispatch() 859623: { 859623: series_of(this)->push_front(this->task); 859623: this->task = 859623: # 671 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 671 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: if (this->flag.exchange(true)) 859623: this->subtask_done(); 859623: } 859623: 859623: protected: 859623: std::atomic flag; 859623: SubTask *task; 859623: void **msgbuf; 859623: 859623: public: 859623: WFConditional(SubTask *task, void **msgbuf) : 859623: flag(false) 859623: { 859623: this->task = task; 859623: this->msgbuf = msgbuf; 859623: } 859623: 859623: WFConditional(SubTask *task) : 859623: flag(false) 859623: { 859623: this->task = task; 859623: this->msgbuf = &this->user_data; 859623: } 859623: 859623: protected: 859623: virtual ~WFConditional() 859623: { 859623: delete this->task; 859623: } 859623: }; 859623: 859623: class WFGoTask : public ExecRequest 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 708 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 708 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 708 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 708 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 708 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 708 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 714 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 714 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 714 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 714 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 714 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 714 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: void *user_data; 859623: 859623: public: 859623: int get_state() const { return this->state; } 859623: int get_error() const { return this->error; } 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: std::function callback; 859623: 859623: public: 859623: WFGoTask(ExecQueue *queue, Executor *executor) : 859623: ExecRequest(queue, executor) 859623: { 859623: this->user_data = 859623: # 750 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 750 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: } 859623: 859623: protected: 859623: virtual ~WFGoTask() { } 859623: }; 859623: 859623: class WFRepeaterTask : public WFGenericTask 859623: { 859623: public: 859623: void set_create(std::function create) 859623: { 859623: this->create = std::move(create); 859623: } 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual void dispatch() 859623: { 859623: SubTask *task = this->create(this); 859623: 859623: if (task) 859623: { 859623: series_of(this)->push_front(this); 859623: series_of(this)->push_front(task); 859623: } 859623: else 859623: this->state = WFT_STATE_SUCCESS; 859623: 859623: this->subtask_done(); 859623: } 859623: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->state != WFT_STATE_UNDEFINED) 859623: { 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: } 859623: 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: std::function create; 859623: std::function callback; 859623: 859623: public: 859623: WFRepeaterTask(std::function&& create, 859623: std::function&& cb) : 859623: create(std::move(create)), 859623: callback(std::move(cb)) 859623: { 859623: } 859623: 859623: protected: 859623: virtual ~WFRepeaterTask() { } 859623: }; 859623: 859623: class WFModuleTask : public ParallelTask, protected SeriesWork 859623: { 859623: public: 859623: void start() 859623: { 859623: 859623: # 825 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 825 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 825 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 825 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 825 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 825 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: Workflow::start_series_work(this, nullptr); 859623: } 859623: 859623: void dismiss() 859623: { 859623: 859623: # 831 "/<>/_include/workflow/WFTask.h" 3 859623: (static_cast ( 859623: # 831 "/<>/_include/workflow/WFTask.h" 859623: !series_of(this) 859623: # 831 "/<>/_include/workflow/WFTask.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 831 "/<>/_include/workflow/WFTask.h" 859623: "!series_of(this)" 859623: # 831 "/<>/_include/workflow/WFTask.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 831 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: delete this; 859623: } 859623: 859623: public: 859623: SeriesWork *sub_series() { return this; } 859623: 859623: const SeriesWork *sub_series() const { return this; } 859623: 859623: public: 859623: void *user_data; 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: SubTask *first; 859623: std::function callback; 859623: 859623: public: 859623: WFModuleTask(SubTask *first, 859623: std::function&& cb) : 859623: ParallelTask(&this->first, 1), 859623: SeriesWork(first, nullptr), 859623: callback(std::move(cb)) 859623: { 859623: this->first = first; 859623: this->set_in_parallel(this); 859623: this->user_data = 859623: # 874 "/<>/_include/workflow/WFTask.h" 3 4 859623: __null 859623: # 874 "/<>/_include/workflow/WFTask.h" 859623: ; 859623: } 859623: 859623: protected: 859623: virtual ~WFModuleTask() 859623: { 859623: if (!this->is_finished()) 859623: this->dismiss_recursive(); 859623: } 859623: }; 859623: 859623: # 1 "/<>/_include/workflow/WFTask.inl" 1 859623: # 19 "/<>/_include/workflow/WFTask.inl" 859623: template 859623: int WFNetworkTask::get_peer_addr(struct sockaddr *addr, 859623: socklen_t *addrlen) const 859623: { 859623: const struct sockaddr *p; 859623: socklen_t len; 859623: 859623: if (this->target) 859623: { 859623: this->target->get_addr(&p, &len); 859623: if (*addrlen >= len) 859623: { 859623: memcpy(addr, p, len); 859623: *addrlen = len; 859623: return 0; 859623: } 859623: 859623: 859623: # 36 "/<>/_include/workflow/WFTask.inl" 3 859623: (*__errno_location ()) 859623: # 36 "/<>/_include/workflow/WFTask.inl" 859623: = 859623: # 36 "/<>/_include/workflow/WFTask.inl" 3 859623: 105 859623: # 36 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: } 859623: else 859623: 859623: # 39 "/<>/_include/workflow/WFTask.inl" 3 859623: (*__errno_location ()) 859623: # 39 "/<>/_include/workflow/WFTask.inl" 859623: = 859623: # 39 "/<>/_include/workflow/WFTask.inl" 3 859623: 107 859623: # 39 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: 859623: return -1; 859623: } 859623: 859623: template 859623: class WFClientTask : public WFNetworkTask 859623: { 859623: protected: 859623: virtual CommMessageOut *message_out() 859623: { 859623: 859623: 859623: if (this->prepare) 859623: this->prepare(this); 859623: 859623: return &this->req; 859623: } 859623: 859623: virtual CommMessageIn *message_in() { return &this->resp; } 859623: 859623: protected: 859623: virtual WFConnection *get_connection() const 859623: { 859623: CommConnection *conn; 859623: 859623: if (this->target) 859623: { 859623: conn = this->CommSession::get_connection(); 859623: if (conn) 859623: return (WFConnection *)conn; 859623: } 859623: 859623: 859623: # 72 "/<>/_include/workflow/WFTask.inl" 3 859623: (*__errno_location ()) 859623: # 72 "/<>/_include/workflow/WFTask.inl" 859623: = 859623: # 72 "/<>/_include/workflow/WFTask.inl" 3 859623: 107 859623: # 72 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: return 859623: # 73 "/<>/_include/workflow/WFTask.inl" 3 4 859623: __null 859623: # 73 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: } 859623: 859623: protected: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->state == WFT_STATE_SYS_ERROR && this->error < 0) 859623: { 859623: this->state = WFT_STATE_SSL_ERROR; 859623: this->error = -this->error; 859623: } 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: public: 859623: WFClientTask(CommSchedObject *object, CommScheduler *scheduler, 859623: std::function *)>&& cb) : 859623: WFNetworkTask(object, scheduler, std::move(cb)) 859623: { 859623: } 859623: 859623: protected: 859623: virtual ~WFClientTask() { } 859623: }; 859623: 859623: template 859623: class WFServerTask : public WFNetworkTask 859623: { 859623: protected: 859623: virtual CommMessageOut *message_out() 859623: { 859623: 859623: 859623: if (this->prepare) 859623: this->prepare(this); 859623: 859623: return &this->resp; 859623: } 859623: 859623: virtual CommMessageIn *message_in() { return &this->req; } 859623: virtual void handle(int state, int error); 859623: 859623: protected: 859623: 859623: 859623: 859623: 859623: virtual WFConnection *get_connection() const 859623: { 859623: if (this->processor.task) 859623: return (WFConnection *)this->CommSession::get_connection(); 859623: 859623: 859623: # 132 "/<>/_include/workflow/WFTask.inl" 3 859623: (*__errno_location ()) 859623: # 132 "/<>/_include/workflow/WFTask.inl" 859623: = 859623: # 132 "/<>/_include/workflow/WFTask.inl" 3 859623: 1 859623: # 132 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: return 859623: # 133 "/<>/_include/workflow/WFTask.inl" 3 4 859623: __null 859623: # 133 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: } 859623: 859623: protected: 859623: virtual void dispatch() 859623: { 859623: if (this->state == WFT_STATE_TOREPLY) 859623: { 859623: 859623: this->processor.task = this; 859623: if (this->scheduler->reply(this) >= 0) 859623: return; 859623: 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = 859623: # 147 "/<>/_include/workflow/WFTask.inl" 3 859623: (*__errno_location ()) 859623: # 147 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: this->processor.task = 859623: # 148 "/<>/_include/workflow/WFTask.inl" 3 4 859623: __null 859623: # 148 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: } 859623: else 859623: this->scheduler->shutdown(this); 859623: 859623: this->subtask_done(); 859623: } 859623: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->state == WFT_STATE_SYS_ERROR && this->error < 0) 859623: { 859623: this->state = WFT_STATE_SSL_ERROR; 859623: this->error = -this->error; 859623: } 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: 859623: return series->pop(); 859623: } 859623: 859623: protected: 859623: class Processor : public SubTask 859623: { 859623: public: 859623: Processor(WFServerTask *task, 859623: std::function *)>& proc) : 859623: process(proc) 859623: { 859623: this->task = task; 859623: } 859623: 859623: virtual void dispatch() 859623: { 859623: this->process(this->task); 859623: this->task = 859623: # 187 "/<>/_include/workflow/WFTask.inl" 3 4 859623: __null 859623: # 187 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: this->subtask_done(); 859623: } 859623: 859623: virtual SubTask *done() 859623: { 859623: return series_of(this)->pop(); 859623: } 859623: 859623: std::function *)>& process; 859623: WFServerTask *task; 859623: } processor; 859623: 859623: class Series : public SeriesWork 859623: { 859623: public: 859623: Series(WFServerTask *task) : 859623: SeriesWork(&task->processor, nullptr) 859623: { 859623: this->set_last_task(task); 859623: this->task = task; 859623: } 859623: 859623: virtual ~Series() 859623: { 859623: delete this->task; 859623: } 859623: 859623: WFServerTask *task; 859623: }; 859623: 859623: public: 859623: WFServerTask(CommService *service, CommScheduler *scheduler, 859623: std::function *)>& proc) : 859623: WFNetworkTask( 859623: # 221 "/<>/_include/workflow/WFTask.inl" 3 4 859623: __null 859623: # 221 "/<>/_include/workflow/WFTask.inl" 859623: , scheduler, nullptr), 859623: processor(this, proc) 859623: { 859623: } 859623: 859623: protected: 859623: virtual ~WFServerTask() 859623: { 859623: if (this->target) 859623: ((Series *)series_of(&this->processor))->task = 859623: # 230 "/<>/_include/workflow/WFTask.inl" 3 4 859623: __null 859623: # 230 "/<>/_include/workflow/WFTask.inl" 859623: ; 859623: } 859623: }; 859623: 859623: template 859623: void WFServerTask::handle(int state, int error) 859623: { 859623: if (state == WFT_STATE_TOREPLY) 859623: { 859623: this->state = WFT_STATE_TOREPLY; 859623: this->target = this->get_target(); 859623: new Series(this); 859623: this->processor.dispatch(); 859623: } 859623: else if (this->state == WFT_STATE_TOREPLY) 859623: { 859623: this->state = state; 859623: this->error = error; 859623: if (error == 859623: # 248 "/<>/_include/workflow/WFTask.inl" 3 859623: 110 859623: # 248 "/<>/_include/workflow/WFTask.inl" 859623: ) 859623: this->timeout_reason = 3; 859623: 859623: this->subtask_done(); 859623: } 859623: else 859623: delete this; 859623: } 859623: # 886 "/<>/_include/workflow/WFTask.h" 2 859623: # 36 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: # 1 "/<>/_include/workflow/WFGraphTask.h" 1 859623: # 28 "/<>/_include/workflow/WFGraphTask.h" 859623: class WFGraphNode : protected WFCounterTask 859623: { 859623: public: 859623: void precede(WFGraphNode& node) 859623: { 859623: node.value++; 859623: this->successors.push_back(&node); 859623: } 859623: 859623: void succeed(WFGraphNode& node) 859623: { 859623: node.precede(*this); 859623: } 859623: 859623: protected: 859623: virtual SubTask *done(); 859623: 859623: protected: 859623: std::vector successors; 859623: 859623: protected: 859623: WFGraphNode() : WFCounterTask(0, nullptr) { } 859623: virtual ~WFGraphNode(); 859623: friend class WFGraphTask; 859623: }; 859623: 859623: static inline WFGraphNode& operator --(WFGraphNode& node, int) 859623: { 859623: return node; 859623: } 859623: 859623: static inline WFGraphNode& operator > (WFGraphNode& prec, WFGraphNode& succ) 859623: { 859623: prec.precede(succ); 859623: return succ; 859623: } 859623: 859623: static inline WFGraphNode& operator < (WFGraphNode& succ, WFGraphNode& prec) 859623: { 859623: succ.succeed(prec); 859623: return prec; 859623: } 859623: 859623: static inline WFGraphNode& operator --(WFGraphNode& node) 859623: { 859623: return node; 859623: } 859623: 859623: class WFGraphTask : public WFGenericTask 859623: { 859623: public: 859623: WFGraphNode& create_graph_node(SubTask *task); 859623: 859623: public: 859623: void set_callback(std::function cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: protected: 859623: virtual void dispatch(); 859623: virtual SubTask *done(); 859623: 859623: protected: 859623: ParallelWork *parallel; 859623: std::function callback; 859623: 859623: public: 859623: WFGraphTask(std::function&& cb) : 859623: callback(std::move(cb)) 859623: { 859623: this->parallel = Workflow::create_parallel_work(nullptr); 859623: } 859623: 859623: protected: 859623: virtual ~WFGraphTask(); 859623: }; 859623: # 37 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: # 1 "/<>/_include/workflow/EndpointParams.h" 1 859623: # 30 "/<>/_include/workflow/EndpointParams.h" 859623: enum TransportType 859623: { 859623: TT_TCP, 859623: TT_UDP, 859623: TT_SCTP, 859623: TT_TCP_SSL, 859623: TT_SCTP_SSL, 859623: }; 859623: 859623: struct EndpointParams 859623: { 859623: int address_family; 859623: size_t max_connections; 859623: int connect_timeout; 859623: int response_timeout; 859623: int ssl_connect_timeout; 859623: bool use_tls_sni; 859623: }; 859623: 859623: static constexpr struct EndpointParams ENDPOINT_PARAMS_DEFAULT = 859623: { 859623: .address_family = 859623: # 51 "/<>/_include/workflow/EndpointParams.h" 3 859623: 0 859623: # 51 "/<>/_include/workflow/EndpointParams.h" 859623: , 859623: .max_connections = 200, 859623: .connect_timeout = 10 * 1000, 859623: .response_timeout = 10 * 1000, 859623: .ssl_connect_timeout = 10 * 1000, 859623: .use_tls_sni = false, 859623: }; 859623: # 38 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: 859623: 859623: 859623: using WFHttpTask = WFNetworkTask; 859623: using http_callback_t = std::function; 859623: 859623: using WFRedisTask = WFNetworkTask; 859623: using redis_callback_t = std::function; 859623: 859623: using WFMySQLTask = WFNetworkTask; 859623: using mysql_callback_t = std::function; 859623: 859623: using WFDnsTask = WFNetworkTask; 859623: using dns_callback_t = std::function; 859623: 859623: 859623: 859623: struct FileIOArgs 859623: { 859623: int fd; 859623: void *buf; 859623: size_t count; 859623: off_t offset; 859623: }; 859623: 859623: struct FileVIOArgs 859623: { 859623: int fd; 859623: const struct iovec *iov; 859623: int iovcnt; 859623: off_t offset; 859623: }; 859623: 859623: struct FileSyncArgs 859623: { 859623: int fd; 859623: }; 859623: 859623: using WFFileIOTask = WFFileTask; 859623: using fio_callback_t = std::function; 859623: 859623: using WFFileVIOTask = WFFileTask; 859623: using fvio_callback_t = std::function; 859623: 859623: using WFFileSyncTask = WFFileTask; 859623: using fsync_callback_t = std::function; 859623: 859623: 859623: using timer_callback_t = std::function; 859623: using counter_callback_t = std::function; 859623: 859623: using mailbox_callback_t = std::function; 859623: 859623: using selector_callback_t = std::function; 859623: 859623: 859623: using graph_callback_t = std::function; 859623: 859623: using WFEmptyTask = WFGenericTask; 859623: 859623: using WFDynamicTask = WFGenericTask; 859623: using dynamic_create_t = std::function; 859623: 859623: using repeated_create_t = std::function; 859623: using repeater_callback_t = std::function; 859623: 859623: using module_callback_t = std::function; 859623: 859623: class WFTaskFactory 859623: { 859623: public: 859623: static WFHttpTask *create_http_task(const std::string& url, 859623: int redirect_max, 859623: int retry_max, 859623: http_callback_t callback); 859623: 859623: static WFHttpTask *create_http_task(const ParsedURI& uri, 859623: int redirect_max, 859623: int retry_max, 859623: http_callback_t callback); 859623: 859623: static WFHttpTask *create_http_task(const std::string& url, 859623: const std::string& proxy_url, 859623: int redirect_max, 859623: int retry_max, 859623: http_callback_t callback); 859623: 859623: static WFHttpTask *create_http_task(const ParsedURI& uri, 859623: const ParsedURI& proxy_uri, 859623: int redirect_max, 859623: int retry_max, 859623: http_callback_t callback); 859623: 859623: static WFRedisTask *create_redis_task(const std::string& url, 859623: int retry_max, 859623: redis_callback_t callback); 859623: 859623: static WFRedisTask *create_redis_task(const ParsedURI& uri, 859623: int retry_max, 859623: redis_callback_t callback); 859623: 859623: static WFMySQLTask *create_mysql_task(const std::string& url, 859623: int retry_max, 859623: mysql_callback_t callback); 859623: 859623: static WFMySQLTask *create_mysql_task(const ParsedURI& uri, 859623: int retry_max, 859623: mysql_callback_t callback); 859623: 859623: static WFDnsTask *create_dns_task(const std::string& url, 859623: int retry_max, 859623: dns_callback_t callback); 859623: 859623: static WFDnsTask *create_dns_task(const ParsedURI& uri, 859623: int retry_max, 859623: dns_callback_t callback); 859623: 859623: public: 859623: static WFFileIOTask *create_pread_task(int fd, 859623: void *buf, 859623: size_t count, 859623: off_t offset, 859623: fio_callback_t callback); 859623: 859623: static WFFileIOTask *create_pwrite_task(int fd, 859623: const void *buf, 859623: size_t count, 859623: off_t offset, 859623: fio_callback_t callback); 859623: 859623: static WFFileVIOTask *create_preadv_task(int fd, 859623: const struct iovec *iov, 859623: int iovcnt, 859623: off_t offset, 859623: fvio_callback_t callback); 859623: 859623: static WFFileVIOTask *create_pwritev_task(int fd, 859623: const struct iovec *iov, 859623: int iovcnt, 859623: off_t offset, 859623: fvio_callback_t callback); 859623: 859623: static WFFileSyncTask *create_fsync_task(int fd, 859623: fsync_callback_t callback); 859623: 859623: 859623: 859623: static WFFileSyncTask *create_fdsync_task(int fd, 859623: fsync_callback_t callback); 859623: 859623: 859623: public: 859623: static WFFileIOTask *create_pread_task(const std::string& path, 859623: void *buf, 859623: size_t count, 859623: off_t offset, 859623: fio_callback_t callback); 859623: 859623: static WFFileIOTask *create_pwrite_task(const std::string& path, 859623: const void *buf, 859623: size_t count, 859623: off_t offset, 859623: fio_callback_t callback); 859623: 859623: static WFFileVIOTask *create_preadv_task(const std::string& path, 859623: const struct iovec *iov, 859623: int iovcnt, 859623: off_t offset, 859623: fvio_callback_t callback); 859623: 859623: static WFFileVIOTask *create_pwritev_task(const std::string& path, 859623: const struct iovec *iov, 859623: int iovcnt, 859623: off_t offset, 859623: fvio_callback_t callback); 859623: 859623: public: 859623: static WFTimerTask *create_timer_task(time_t seconds, long nanoseconds, 859623: timer_callback_t callback); 859623: 859623: 859623: static WFTimerTask *create_timer_task(const std::string& timer_name, 859623: time_t seconds, long nanoseconds, 859623: timer_callback_t callback); 859623: 859623: 859623: static int cancel_by_name(const std::string& timer_name) 859623: { 859623: return WFTaskFactory::cancel_by_name(timer_name, (size_t)-1); 859623: } 859623: 859623: 859623: static int cancel_by_name(const std::string& timer_name, size_t max); 859623: 859623: 859623: static WFTimerTask *create_timer_task(timer_callback_t callback); 859623: 859623: 859623: static WFTimerTask *create_timer_task(unsigned int microseconds, 859623: timer_callback_t callback); 859623: 859623: public: 859623: 859623: 859623: static WFCounterTask *create_counter_task(unsigned int target_value, 859623: counter_callback_t callback) 859623: { 859623: return new WFCounterTask(target_value, std::move(callback)); 859623: } 859623: 859623: 859623: static WFCounterTask *create_counter_task(const std::string& counter_name, 859623: unsigned int target_value, 859623: counter_callback_t callback); 859623: 859623: 859623: 859623: 859623: static int count_by_name(const std::string& counter_name) 859623: { 859623: return WFTaskFactory::count_by_name(counter_name, 1); 859623: } 859623: 859623: 859623: 859623: 859623: static int count_by_name(const std::string& counter_name, unsigned int n); 859623: 859623: public: 859623: static WFMailboxTask *create_mailbox_task(void **mailbox, 859623: mailbox_callback_t callback) 859623: { 859623: return new WFMailboxTask(mailbox, std::move(callback)); 859623: } 859623: 859623: 859623: static WFMailboxTask *create_mailbox_task(mailbox_callback_t callback) 859623: { 859623: return new WFMailboxTask(std::move(callback)); 859623: } 859623: 859623: static WFMailboxTask *create_mailbox_task(const std::string& mailbox_name, 859623: void **mailbox, 859623: mailbox_callback_t callback); 859623: 859623: static WFMailboxTask *create_mailbox_task(const std::string& mailbox_name, 859623: mailbox_callback_t callback); 859623: 859623: 859623: 859623: static int send_by_name(const std::string& mailbox_name, void *msg) 859623: { 859623: return WFTaskFactory::send_by_name(mailbox_name, msg, (size_t)-1); 859623: } 859623: 859623: static int send_by_name(const std::string& mailbox_name, void *msg, 859623: size_t max); 859623: 859623: template 859623: static int send_by_name(const std::string& mailbox_name, T *const msg[], 859623: size_t max); 859623: 859623: public: 859623: static WFSelectorTask *create_selector_task(size_t candidates, 859623: selector_callback_t callback) 859623: { 859623: return new WFSelectorTask(candidates, std::move(callback)); 859623: } 859623: 859623: public: 859623: static WFConditional *create_conditional(SubTask *task, void **msgbuf) 859623: { 859623: return new WFConditional(task, msgbuf); 859623: } 859623: 859623: static WFConditional *create_conditional(SubTask *task) 859623: { 859623: return new WFConditional(task); 859623: } 859623: 859623: static WFConditional *create_conditional(const std::string& cond_name, 859623: SubTask *task, void **msgbuf); 859623: 859623: static WFConditional *create_conditional(const std::string& cond_name, 859623: SubTask *task); 859623: 859623: static int signal_by_name(const std::string& cond_name, void *msg) 859623: { 859623: return WFTaskFactory::signal_by_name(cond_name, msg, (size_t)-1); 859623: } 859623: 859623: static int signal_by_name(const std::string& cond_name, void *msg, 859623: size_t max); 859623: 859623: template 859623: static int signal_by_name(const std::string& cond_name, T *const msg[], 859623: size_t max); 859623: 859623: public: 859623: static WFConditional *create_guard(const std::string& resource_name, 859623: SubTask *task); 859623: 859623: static WFConditional *create_guard(const std::string& resource_name, 859623: SubTask *task, void **msgbuf); 859623: 859623: 859623: 859623: 859623: static int release_guard(const std::string& resource_name, void *msg); 859623: 859623: static int release_guard_safe(const std::string& resource_name, void *msg); 859623: 859623: public: 859623: template 859623: static WFGoTask *create_go_task(const std::string& queue_name, 859623: FUNC&& func, ARGS&&... args); 859623: 859623: 859623: 859623: 859623: template 859623: static WFGoTask *create_timedgo_task(time_t seconds, long nanoseconds, 859623: const std::string& queue_name, 859623: FUNC&& func, ARGS&&... args); 859623: 859623: 859623: template 859623: static WFGoTask *create_go_task(ExecQueue *queue, Executor *executor, 859623: FUNC&& func, ARGS&&... args); 859623: 859623: template 859623: static WFGoTask *create_timedgo_task(time_t seconds, long nanoseconds, 859623: ExecQueue *queue, Executor *executor, 859623: FUNC&& func, ARGS&&... args); 859623: 859623: 859623: template 859623: static void reset_go_task(WFGoTask *task, FUNC&& func, ARGS&&... args); 859623: 859623: public: 859623: static WFGraphTask *create_graph_task(graph_callback_t callback) 859623: { 859623: return new WFGraphTask(std::move(callback)); 859623: } 859623: 859623: public: 859623: static WFEmptyTask *create_empty_task() 859623: { 859623: return new WFEmptyTask; 859623: } 859623: 859623: static WFDynamicTask *create_dynamic_task(dynamic_create_t create); 859623: 859623: static WFRepeaterTask *create_repeater_task(repeated_create_t create, 859623: repeater_callback_t callback) 859623: { 859623: return new WFRepeaterTask(std::move(create), std::move(callback)); 859623: } 859623: 859623: public: 859623: static WFModuleTask *create_module_task(SubTask *first, 859623: module_callback_t callback) 859623: { 859623: return new WFModuleTask(first, std::move(callback)); 859623: } 859623: 859623: static WFModuleTask *create_module_task(SubTask *first, SubTask *last, 859623: module_callback_t callback) 859623: { 859623: WFModuleTask *task = new WFModuleTask(first, std::move(callback)); 859623: task->sub_series()->set_last_task(last); 859623: return task; 859623: } 859623: }; 859623: 859623: template 859623: class WFNetworkTaskFactory 859623: { 859623: private: 859623: using T = WFNetworkTask; 859623: 859623: public: 859623: static T *create_client_task(enum TransportType type, 859623: const std::string& host, 859623: unsigned short port, 859623: int retry_max, 859623: std::function callback); 859623: 859623: static T *create_client_task(enum TransportType type, 859623: const std::string& url, 859623: int retry_max, 859623: std::function callback); 859623: 859623: static T *create_client_task(enum TransportType type, 859623: const ParsedURI& uri, 859623: int retry_max, 859623: std::function callback); 859623: 859623: static T *create_client_task(enum TransportType type, 859623: const struct sockaddr *addr, 859623: socklen_t addrlen, 859623: int retry_max, 859623: std::function callback); 859623: 859623: static T *create_client_task(enum TransportType type, 859623: const struct sockaddr *addr, 859623: socklen_t addrlen, 859623: SSL_CTX *ssl_ctx, 859623: int retry_max, 859623: std::function callback); 859623: public: 859623: static T *create_server_task(CommService *service, 859623: std::function& process); 859623: }; 859623: 859623: template 859623: class WFThreadTaskFactory 859623: { 859623: private: 859623: using T = WFThreadTask; 859623: 859623: public: 859623: static T *create_thread_task(const std::string& queue_name, 859623: std::function routine, 859623: std::function callback); 859623: 859623: 859623: static T *create_thread_task(time_t seconds, long nanoseconds, 859623: const std::string& queue_name, 859623: std::function routine, 859623: std::function callback); 859623: 859623: public: 859623: 859623: static T *create_thread_task(ExecQueue *queue, Executor *executor, 859623: std::function routine, 859623: std::function callback); 859623: 859623: 859623: static T *create_thread_task(time_t seconds, long nanoseconds, 859623: ExecQueue *queue, Executor *executor, 859623: std::function routine, 859623: std::function callback); 859623: }; 859623: 859623: # 1 "/<>/_include/workflow/WFTaskFactory.inl" 1 859623: # 25 "/<>/_include/workflow/WFTaskFactory.inl" 859623: # 1 "/usr/arm-linux-gnueabi/include/netdb.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: # 1 "/usr/arm-linux-gnueabi/include/netinet/in.h" 1 3 859623: # 27 "/usr/arm-linux-gnueabi/include/netinet/in.h" 3 859623: 859623: # 27 "/usr/arm-linux-gnueabi/include/netinet/in.h" 3 859623: extern "C" { 859623: 859623: 859623: typedef uint32_t in_addr_t; 859623: struct in_addr 859623: { 859623: in_addr_t s_addr; 859623: }; 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/in.h" 1 3 859623: # 145 "/usr/arm-linux-gnueabi/include/bits/in.h" 3 859623: struct ip_opts 859623: { 859623: struct in_addr ip_dst; 859623: char ip_opts[40]; 859623: }; 859623: 859623: 859623: struct in_pktinfo 859623: { 859623: int ipi_ifindex; 859623: struct in_addr ipi_spec_dst; 859623: struct in_addr ipi_addr; 859623: }; 859623: # 38 "/usr/arm-linux-gnueabi/include/netinet/in.h" 2 3 859623: 859623: 859623: enum 859623: { 859623: IPPROTO_IP = 0, 859623: 859623: IPPROTO_ICMP = 1, 859623: 859623: IPPROTO_IGMP = 2, 859623: 859623: IPPROTO_IPIP = 4, 859623: 859623: IPPROTO_TCP = 6, 859623: 859623: IPPROTO_EGP = 8, 859623: 859623: IPPROTO_PUP = 12, 859623: 859623: IPPROTO_UDP = 17, 859623: 859623: IPPROTO_IDP = 22, 859623: 859623: IPPROTO_TP = 29, 859623: 859623: IPPROTO_DCCP = 33, 859623: 859623: IPPROTO_IPV6 = 41, 859623: 859623: IPPROTO_RSVP = 46, 859623: 859623: IPPROTO_GRE = 47, 859623: 859623: IPPROTO_ESP = 50, 859623: 859623: IPPROTO_AH = 51, 859623: 859623: IPPROTO_MTP = 92, 859623: 859623: IPPROTO_BEETPH = 94, 859623: 859623: IPPROTO_ENCAP = 98, 859623: 859623: IPPROTO_PIM = 103, 859623: 859623: IPPROTO_COMP = 108, 859623: 859623: IPPROTO_L2TP = 115, 859623: 859623: IPPROTO_SCTP = 132, 859623: 859623: IPPROTO_UDPLITE = 136, 859623: 859623: IPPROTO_MPLS = 137, 859623: 859623: IPPROTO_ETHERNET = 143, 859623: 859623: IPPROTO_RAW = 255, 859623: 859623: IPPROTO_SMC = 256, 859623: 859623: IPPROTO_MPTCP = 262, 859623: 859623: IPPROTO_MAX 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: enum 859623: { 859623: IPPROTO_HOPOPTS = 0, 859623: 859623: IPPROTO_ROUTING = 43, 859623: 859623: IPPROTO_FRAGMENT = 44, 859623: 859623: IPPROTO_ICMPV6 = 58, 859623: 859623: IPPROTO_NONE = 59, 859623: 859623: IPPROTO_DSTOPTS = 60, 859623: 859623: IPPROTO_MH = 135 859623: 859623: }; 859623: 859623: 859623: 859623: typedef uint16_t in_port_t; 859623: 859623: 859623: enum 859623: { 859623: IPPORT_ECHO = 7, 859623: IPPORT_DISCARD = 9, 859623: IPPORT_SYSTAT = 11, 859623: IPPORT_DAYTIME = 13, 859623: IPPORT_NETSTAT = 15, 859623: IPPORT_FTP = 21, 859623: IPPORT_TELNET = 23, 859623: IPPORT_SMTP = 25, 859623: IPPORT_TIMESERVER = 37, 859623: IPPORT_NAMESERVER = 42, 859623: IPPORT_WHOIS = 43, 859623: IPPORT_MTP = 57, 859623: 859623: IPPORT_TFTP = 69, 859623: IPPORT_RJE = 77, 859623: IPPORT_FINGER = 79, 859623: IPPORT_TTYLINK = 87, 859623: IPPORT_SUPDUP = 95, 859623: 859623: 859623: IPPORT_EXECSERVER = 512, 859623: IPPORT_LOGINSERVER = 513, 859623: IPPORT_CMDSERVER = 514, 859623: IPPORT_EFSSERVER = 520, 859623: 859623: 859623: IPPORT_BIFFUDP = 512, 859623: IPPORT_WHOSERVER = 513, 859623: IPPORT_ROUTESERVER = 520, 859623: 859623: 859623: IPPORT_RESERVED = 1024, 859623: 859623: 859623: IPPORT_USERRESERVED = 5000 859623: }; 859623: # 223 "/usr/arm-linux-gnueabi/include/netinet/in.h" 3 859623: struct in6_addr 859623: { 859623: union 859623: { 859623: uint8_t __u6_addr8[16]; 859623: uint16_t __u6_addr16[8]; 859623: uint32_t __u6_addr32[4]; 859623: } __in6_u; 859623: 859623: 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: extern const struct in6_addr in6addr_any; 859623: extern const struct in6_addr in6addr_loopback; 859623: # 249 "/usr/arm-linux-gnueabi/include/netinet/in.h" 3 859623: struct __attribute__ ((__may_alias__)) sockaddr_in 859623: { 859623: sa_family_t sin_family; 859623: in_port_t sin_port; 859623: struct in_addr sin_addr; 859623: 859623: 859623: unsigned char sin_zero[sizeof (struct sockaddr) 859623: - (sizeof (unsigned short int)) 859623: - sizeof (in_port_t) 859623: - sizeof (struct in_addr)]; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: struct __attribute__ ((__may_alias__)) sockaddr_in6 859623: { 859623: sa_family_t sin6_family; 859623: in_port_t sin6_port; 859623: uint32_t sin6_flowinfo; 859623: struct in6_addr sin6_addr; 859623: uint32_t sin6_scope_id; 859623: }; 859623: 859623: 859623: 859623: 859623: struct ip_mreq 859623: { 859623: 859623: struct in_addr imr_multiaddr; 859623: 859623: 859623: struct in_addr imr_interface; 859623: }; 859623: 859623: 859623: struct ip_mreqn 859623: { 859623: 859623: struct in_addr imr_multiaddr; 859623: 859623: 859623: struct in_addr imr_address; 859623: 859623: 859623: int imr_ifindex; 859623: }; 859623: 859623: struct ip_mreq_source 859623: { 859623: 859623: struct in_addr imr_multiaddr; 859623: 859623: 859623: struct in_addr imr_interface; 859623: 859623: 859623: struct in_addr imr_sourceaddr; 859623: }; 859623: 859623: 859623: 859623: 859623: struct ipv6_mreq 859623: { 859623: 859623: struct in6_addr ipv6mr_multiaddr; 859623: 859623: 859623: unsigned int ipv6mr_interface; 859623: }; 859623: 859623: 859623: 859623: 859623: struct group_req 859623: { 859623: 859623: uint32_t gr_interface; 859623: 859623: 859623: struct sockaddr_storage gr_group; 859623: }; 859623: 859623: struct group_source_req 859623: { 859623: 859623: uint32_t gsr_interface; 859623: 859623: 859623: struct sockaddr_storage gsr_group; 859623: 859623: 859623: struct sockaddr_storage gsr_source; 859623: }; 859623: 859623: 859623: 859623: struct ip_msfilter 859623: { 859623: 859623: struct in_addr imsf_multiaddr; 859623: 859623: 859623: struct in_addr imsf_interface; 859623: 859623: 859623: uint32_t imsf_fmode; 859623: 859623: 859623: uint32_t imsf_numsrc; 859623: 859623: struct in_addr imsf_slist[1]; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: struct group_filter 859623: { 859623: 859623: uint32_t gf_interface; 859623: 859623: 859623: struct sockaddr_storage gf_group; 859623: 859623: 859623: uint32_t gf_fmode; 859623: 859623: 859623: uint32_t gf_numsrc; 859623: 859623: struct sockaddr_storage gf_slist[1]; 859623: }; 859623: # 401 "/usr/arm-linux-gnueabi/include/netinet/in.h" 3 859623: extern uint32_t ntohl (uint32_t __netlong) noexcept (true) __attribute__ ((__const__)); 859623: extern uint16_t ntohs (uint16_t __netshort) 859623: noexcept (true) __attribute__ ((__const__)); 859623: extern uint32_t htonl (uint32_t __hostlong) 859623: noexcept (true) __attribute__ ((__const__)); 859623: extern uint16_t htons (uint16_t __hostshort) 859623: noexcept (true) __attribute__ ((__const__)); 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/byteswap.h" 1 3 859623: # 413 "/usr/arm-linux-gnueabi/include/netinet/in.h" 2 3 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/uintn-identity.h" 1 3 859623: # 414 "/usr/arm-linux-gnueabi/include/netinet/in.h" 2 3 859623: # 529 "/usr/arm-linux-gnueabi/include/netinet/in.h" 3 859623: extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) noexcept (true); 859623: 859623: 859623: extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) 859623: noexcept (true); 859623: # 559 "/usr/arm-linux-gnueabi/include/netinet/in.h" 3 859623: struct cmsghdr; 859623: 859623: 859623: 859623: struct in6_pktinfo 859623: { 859623: struct in6_addr ipi6_addr; 859623: unsigned int ipi6_ifindex; 859623: }; 859623: 859623: 859623: struct ip6_mtuinfo 859623: { 859623: struct sockaddr_in6 ip6m_addr; 859623: uint32_t ip6m_mtu; 859623: }; 859623: 859623: 859623: 859623: extern int inet6_option_space (int __nbytes) 859623: noexcept (true) __attribute__ ((__deprecated__)); 859623: extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, 859623: int __type) noexcept (true) __attribute__ ((__deprecated__)); 859623: extern int inet6_option_append (struct cmsghdr *__cmsg, 859623: const uint8_t *__typep, int __multx, 859623: int __plusy) noexcept (true) __attribute__ ((__deprecated__)); 859623: extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, 859623: int __multx, int __plusy) 859623: noexcept (true) __attribute__ ((__deprecated__)); 859623: extern int inet6_option_next (const struct cmsghdr *__cmsg, 859623: uint8_t **__tptrp) 859623: noexcept (true) __attribute__ ((__deprecated__)); 859623: extern int inet6_option_find (const struct cmsghdr *__cmsg, 859623: uint8_t **__tptrp, int __type) 859623: noexcept (true) __attribute__ ((__deprecated__)); 859623: 859623: 859623: 859623: extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) noexcept (true); 859623: extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset, 859623: uint8_t __type, socklen_t __len, uint8_t __align, 859623: void **__databufp) noexcept (true); 859623: extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset) 859623: noexcept (true); 859623: extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val, 859623: socklen_t __vallen) noexcept (true); 859623: extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset, 859623: uint8_t *__typep, socklen_t *__lenp, 859623: void **__databufp) noexcept (true); 859623: extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset, 859623: uint8_t __type, socklen_t *__lenp, 859623: void **__databufp) noexcept (true); 859623: extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val, 859623: socklen_t __vallen) noexcept (true); 859623: 859623: 859623: 859623: extern socklen_t inet6_rth_space (int __type, int __segments) noexcept (true); 859623: extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type, 859623: int __segments) noexcept (true); 859623: extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) noexcept (true); 859623: extern int inet6_rth_reverse (const void *__in, void *__out) noexcept (true); 859623: extern int inet6_rth_segments (const void *__bp) noexcept (true); 859623: extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index) 859623: noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr, 859623: struct in_addr __group, uint32_t *__fmode, 859623: uint32_t *__numsrc, struct in_addr *__slist) 859623: noexcept (true); 859623: 859623: 859623: extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr, 859623: struct in_addr __group, uint32_t __fmode, 859623: uint32_t __numsrc, 859623: const struct in_addr *__slist) 859623: noexcept (true); 859623: 859623: 859623: 859623: extern int getsourcefilter (int __s, uint32_t __interface_addr, 859623: const struct sockaddr *__group, 859623: socklen_t __grouplen, uint32_t *__fmode, 859623: uint32_t *__numsrc, 859623: struct sockaddr_storage *__slist) noexcept (true); 859623: 859623: 859623: extern int setsourcefilter (int __s, uint32_t __interface_addr, 859623: const struct sockaddr *__group, 859623: socklen_t __grouplen, uint32_t __fmode, 859623: uint32_t __numsrc, 859623: const struct sockaddr_storage *__slist) noexcept (true); 859623: 859623: 859623: } 859623: # 28 "/usr/arm-linux-gnueabi/include/netdb.h" 2 3 859623: 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/rpc/netdb.h" 1 3 859623: # 42 "/usr/arm-linux-gnueabi/include/rpc/netdb.h" 3 859623: # 1 "/usr/lib/gcc-cross/arm-linux-gnueabi/15/include/stddef.h" 1 3 4 859623: # 43 "/usr/arm-linux-gnueabi/include/rpc/netdb.h" 2 3 859623: 859623: extern "C" { 859623: 859623: struct rpcent 859623: { 859623: char *r_name; 859623: char **r_aliases; 859623: int r_number; 859623: }; 859623: 859623: extern void setrpcent (int __stayopen) noexcept (true); 859623: extern void endrpcent (void) noexcept (true); 859623: extern struct rpcent *getrpcbyname (const char *__name) noexcept (true); 859623: extern struct rpcent *getrpcbynumber (int __number) noexcept (true); 859623: extern struct rpcent *getrpcent (void) noexcept (true); 859623: 859623: 859623: extern int getrpcbyname_r (const char *__name, struct rpcent *__result_buf, 859623: char *__buffer, size_t __buflen, 859623: struct rpcent **__result) noexcept (true); 859623: 859623: extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf, 859623: char *__buffer, size_t __buflen, 859623: struct rpcent **__result) noexcept (true); 859623: 859623: extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer, 859623: size_t __buflen, struct rpcent **__result) noexcept (true); 859623: 859623: 859623: } 859623: # 33 "/usr/arm-linux-gnueabi/include/netdb.h" 2 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/sigevent_t.h" 1 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/wordsize.h" 1 3 859623: # 5 "/usr/arm-linux-gnueabi/include/bits/types/sigevent_t.h" 2 3 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/types/__sigval_t.h" 1 3 859623: # 24 "/usr/arm-linux-gnueabi/include/bits/types/__sigval_t.h" 3 859623: union sigval 859623: { 859623: int sival_int; 859623: void *sival_ptr; 859623: }; 859623: 859623: typedef union sigval __sigval_t; 859623: # 7 "/usr/arm-linux-gnueabi/include/bits/types/sigevent_t.h" 2 3 859623: # 22 "/usr/arm-linux-gnueabi/include/bits/types/sigevent_t.h" 3 859623: typedef struct sigevent 859623: { 859623: __sigval_t sigev_value; 859623: int sigev_signo; 859623: int sigev_notify; 859623: 859623: union 859623: { 859623: int _pad[((64 / sizeof (int)) - 3)]; 859623: 859623: 859623: 859623: __pid_t _tid; 859623: 859623: struct 859623: { 859623: void (*_function) (__sigval_t); 859623: pthread_attr_t *_attribute; 859623: } _sigev_thread; 859623: } _sigev_un; 859623: } sigevent_t; 859623: # 37 "/usr/arm-linux-gnueabi/include/netdb.h" 2 3 859623: 859623: 859623: 859623: # 1 "/usr/arm-linux-gnueabi/include/bits/netdb.h" 1 3 859623: # 26 "/usr/arm-linux-gnueabi/include/bits/netdb.h" 3 859623: struct netent 859623: { 859623: char *n_name; 859623: char **n_aliases; 859623: int n_addrtype; 859623: uint32_t n_net; 859623: }; 859623: # 41 "/usr/arm-linux-gnueabi/include/netdb.h" 2 3 859623: # 51 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern "C" { 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int *__h_errno_location (void) noexcept (true) __attribute__ ((__const__)); 859623: # 90 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern void herror (const char *__str) noexcept (true); 859623: 859623: 859623: extern const char *hstrerror (int __err_num) noexcept (true); 859623: 859623: 859623: 859623: 859623: struct hostent 859623: { 859623: char *h_name; 859623: char **h_aliases; 859623: int h_addrtype; 859623: int h_length; 859623: char **h_addr_list; 859623: 859623: 859623: 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void sethostent (int __stay_open); 859623: 859623: 859623: 859623: 859623: 859623: extern void endhostent (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct hostent *gethostent (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len, 859623: int __type); 859623: 859623: 859623: 859623: 859623: 859623: extern struct hostent *gethostbyname (const char *__name); 859623: # 153 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern struct hostent *gethostbyname2 (const char *__name, int __af); 859623: # 165 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int gethostent_r (struct hostent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct hostent **__restrict __result, 859623: int *__restrict __h_errnop); 859623: 859623: extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len, 859623: int __type, 859623: struct hostent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct hostent **__restrict __result, 859623: int *__restrict __h_errnop); 859623: 859623: extern int gethostbyname_r (const char *__restrict __name, 859623: struct hostent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct hostent **__restrict __result, 859623: int *__restrict __h_errnop); 859623: 859623: extern int gethostbyname2_r (const char *__restrict __name, int __af, 859623: struct hostent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct hostent **__restrict __result, 859623: int *__restrict __h_errnop); 859623: # 196 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern void setnetent (int __stay_open); 859623: 859623: 859623: 859623: 859623: 859623: extern void endnetent (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct netent *getnetent (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct netent *getnetbyaddr (uint32_t __net, int __type); 859623: 859623: 859623: 859623: 859623: 859623: extern struct netent *getnetbyname (const char *__name); 859623: # 235 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int getnetent_r (struct netent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct netent **__restrict __result, 859623: int *__restrict __h_errnop); 859623: 859623: extern int getnetbyaddr_r (uint32_t __net, int __type, 859623: struct netent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct netent **__restrict __result, 859623: int *__restrict __h_errnop); 859623: 859623: extern int getnetbyname_r (const char *__restrict __name, 859623: struct netent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct netent **__restrict __result, 859623: int *__restrict __h_errnop); 859623: 859623: 859623: 859623: 859623: struct servent 859623: { 859623: char *s_name; 859623: char **s_aliases; 859623: int s_port; 859623: char *s_proto; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void setservent (int __stay_open); 859623: 859623: 859623: 859623: 859623: 859623: extern void endservent (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct servent *getservent (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct servent *getservbyname (const char *__name, const char *__proto); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct servent *getservbyport (int __port, const char *__proto); 859623: # 306 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int getservent_r (struct servent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct servent **__restrict __result); 859623: 859623: extern int getservbyname_r (const char *__restrict __name, 859623: const char *__restrict __proto, 859623: struct servent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct servent **__restrict __result); 859623: 859623: extern int getservbyport_r (int __port, const char *__restrict __proto, 859623: struct servent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct servent **__restrict __result); 859623: 859623: 859623: 859623: 859623: struct protoent 859623: { 859623: char *p_name; 859623: char **p_aliases; 859623: int p_proto; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void setprotoent (int __stay_open); 859623: 859623: 859623: 859623: 859623: 859623: extern void endprotoent (void); 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern struct protoent *getprotoent (void); 859623: 859623: 859623: 859623: 859623: 859623: extern struct protoent *getprotobyname (const char *__name); 859623: 859623: 859623: 859623: 859623: 859623: extern struct protoent *getprotobynumber (int __proto); 859623: # 372 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int getprotoent_r (struct protoent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct protoent **__restrict __result); 859623: 859623: extern int getprotobyname_r (const char *__restrict __name, 859623: struct protoent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct protoent **__restrict __result); 859623: 859623: extern int getprotobynumber_r (int __proto, 859623: struct protoent *__restrict __result_buf, 859623: char *__restrict __buf, size_t __buflen, 859623: struct protoent **__restrict __result); 859623: # 393 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int setnetgrent (const char *__netgroup); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern void endnetgrent (void); 859623: # 410 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int getnetgrent (char **__restrict __hostp, 859623: char **__restrict __userp, 859623: char **__restrict __domainp); 859623: # 421 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int innetgr (const char *__netgroup, const char *__host, 859623: const char *__user, const char *__domain); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int getnetgrent_r (char **__restrict __hostp, 859623: char **__restrict __userp, 859623: char **__restrict __domainp, 859623: char *__restrict __buffer, size_t __buflen); 859623: # 449 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int rcmd (char **__restrict __ahost, unsigned short int __rport, 859623: const char *__restrict __locuser, 859623: const char *__restrict __remuser, 859623: const char *__restrict __cmd, int *__restrict __fd2p); 859623: # 461 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport, 859623: const char *__restrict __locuser, 859623: const char *__restrict __remuser, 859623: const char *__restrict __cmd, int *__restrict __fd2p, 859623: sa_family_t __af); 859623: # 477 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int rexec (char **__restrict __ahost, int __rport, 859623: const char *__restrict __name, 859623: const char *__restrict __pass, 859623: const char *__restrict __cmd, int *__restrict __fd2p); 859623: # 489 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int rexec_af (char **__restrict __ahost, int __rport, 859623: const char *__restrict __name, 859623: const char *__restrict __pass, 859623: const char *__restrict __cmd, int *__restrict __fd2p, 859623: sa_family_t __af); 859623: # 503 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int ruserok (const char *__rhost, int __suser, 859623: const char *__remuser, const char *__locuser); 859623: # 513 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int ruserok_af (const char *__rhost, int __suser, 859623: const char *__remuser, const char *__locuser, 859623: sa_family_t __af); 859623: # 526 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int iruserok (uint32_t __raddr, int __suser, 859623: const char *__remuser, const char *__locuser); 859623: # 537 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int iruserok_af (const void *__raddr, int __suser, 859623: const char *__remuser, const char *__locuser, 859623: sa_family_t __af); 859623: # 549 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int rresvport (int *__alport); 859623: # 558 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int rresvport_af (int *__alport, sa_family_t __af); 859623: 859623: 859623: 859623: 859623: 859623: 859623: struct addrinfo 859623: { 859623: int ai_flags; 859623: int ai_family; 859623: int ai_socktype; 859623: int ai_protocol; 859623: socklen_t ai_addrlen; 859623: struct sockaddr *ai_addr; 859623: char *ai_canonname; 859623: struct addrinfo *ai_next; 859623: }; 859623: 859623: 859623: 859623: struct gaicb 859623: { 859623: const char *ar_name; 859623: const char *ar_service; 859623: const struct addrinfo *ar_request; 859623: struct addrinfo *ar_result; 859623: 859623: int __return; 859623: int __glibc_reserved[5]; 859623: }; 859623: # 660 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int getaddrinfo (const char *__restrict __name, 859623: const char *__restrict __service, 859623: const struct addrinfo *__restrict __req, 859623: struct addrinfo **__restrict __pai); 859623: 859623: 859623: extern void freeaddrinfo (struct addrinfo *__ai) noexcept (true); 859623: 859623: 859623: extern const char *gai_strerror (int __ecode) noexcept (true); 859623: 859623: 859623: 859623: 859623: 859623: extern int getnameinfo (const struct sockaddr *__restrict __sa, 859623: socklen_t __salen, char *__restrict __host, 859623: socklen_t __hostlen, char *__restrict __serv, 859623: socklen_t __servlen, int __flags); 859623: # 690 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int getaddrinfo_a (int __mode, struct gaicb *__list[], 859623: int __ent, struct sigevent *__restrict __sig); 859623: # 701 "/usr/arm-linux-gnueabi/include/netdb.h" 3 859623: extern int gai_suspend (const struct gaicb *const __list[], int __ent, 859623: const struct timespec *__timeout); 859623: 859623: 859623: 859623: extern int gai_suspend (const struct gaicb *const __list[], int __ent, const struct timespec *__timeout) __asm__ ("" "__gai_suspend_time64") 859623: 859623: 859623: ; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern int gai_error (struct gaicb *__req) noexcept (true); 859623: 859623: 859623: extern int gai_cancel (struct gaicb *__gaicbp) noexcept (true); 859623: 859623: 859623: } 859623: # 26 "/<>/_include/workflow/WFTaskFactory.inl" 2 859623: 859623: 859623: 859623: 859623: 859623: 859623: # 1 "/<>/_include/workflow/WFGlobal.h" 1 859623: # 30 "/<>/_include/workflow/WFGlobal.h" 859623: # 1 "/<>/_include/workflow/DnsCache.h" 1 859623: # 27 "/<>/_include/workflow/DnsCache.h" 859623: # 1 "/<>/_include/workflow/LRUCache.h" 1 859623: # 23 "/<>/_include/workflow/LRUCache.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/assert.h" 1 3 859623: # 24 "/<>/_include/workflow/LRUCache.h" 2 859623: 859623: # 1 "/<>/_include/workflow/rbtree.h" 1 859623: # 97 "/<>/_include/workflow/rbtree.h" 859623: #pragma pack(1) 859623: 859623: # 98 "/<>/_include/workflow/rbtree.h" 859623: struct rb_node 859623: { 859623: struct rb_node *rb_parent; 859623: struct rb_node *rb_right; 859623: struct rb_node *rb_left; 859623: char rb_color; 859623: 859623: 859623: }; 859623: #pragma pack() 859623: 859623: struct rb_root 859623: { 859623: struct rb_node *rb_node; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: 859623: extern "C" 859623: { 859623: 859623: 859623: extern void rb_insert_color(struct rb_node *node, struct rb_root *root); 859623: extern void rb_erase(struct rb_node *node, struct rb_root *root); 859623: 859623: 859623: extern struct rb_node *rb_next(struct rb_node *); 859623: extern struct rb_node *rb_prev(struct rb_node *); 859623: extern struct rb_node *rb_first(struct rb_root *); 859623: extern struct rb_node *rb_last(struct rb_root *); 859623: 859623: 859623: extern void rb_replace_node(struct rb_node *victim, struct rb_node *newnode, 859623: struct rb_root *root); 859623: 859623: 859623: } 859623: 859623: 859623: static inline void rb_link_node(struct rb_node *node, struct rb_node *parent, 859623: struct rb_node **link) 859623: { 859623: node->rb_parent = parent; 859623: node->rb_color = 0; 859623: node->rb_left = node->rb_right = (struct rb_node *)0; 859623: 859623: *link = node; 859623: } 859623: # 26 "/<>/_include/workflow/LRUCache.h" 2 859623: # 35 "/<>/_include/workflow/LRUCache.h" 859623: template 859623: class LRUHandle 859623: { 859623: public: 859623: VALUE value; 859623: 859623: private: 859623: LRUHandle(const KEY& k, const VALUE& v) : 859623: value(v), key(k) 859623: { 859623: } 859623: 859623: KEY key; 859623: struct list_head list; 859623: struct rb_node rb; 859623: bool in_cache; 859623: int ref; 859623: 859623: template friend class LRUCache; 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: template 859623: class LRUCache 859623: { 859623: protected: 859623: typedef LRUHandle Handle; 859623: 859623: public: 859623: LRUCache() 859623: { 859623: INIT_LIST_HEAD(&this->not_use); 859623: INIT_LIST_HEAD(&this->in_use); 859623: this->cache_map.rb_node = 859623: # 71 "/<>/_include/workflow/LRUCache.h" 3 4 859623: __null 859623: # 71 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: this->max_size = 0; 859623: this->size = 0; 859623: } 859623: 859623: ~LRUCache() 859623: { 859623: struct list_head *pos, *tmp; 859623: Handle *e; 859623: 859623: 859623: 859623: # 82 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 82 "/<>/_include/workflow/LRUCache.h" 859623: list_empty(&this->in_use) 859623: # 82 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 82 "/<>/_include/workflow/LRUCache.h" 859623: "list_empty(&this->in_use)" 859623: # 82 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 82 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: for (pos = (&this->not_use)->next, tmp = pos->next; pos != (&this->not_use); pos = tmp, tmp = pos->next) 859623: { 859623: e = ((Handle *)((char *)(pos)-(unsigned long)(&((Handle *)0)->list))); 859623: 859623: # 86 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 86 "/<>/_include/workflow/LRUCache.h" 859623: e->in_cache 859623: # 86 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 86 "/<>/_include/workflow/LRUCache.h" 859623: "e->in_cache" 859623: # 86 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 86 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: e->in_cache = false; 859623: 859623: # 88 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 88 "/<>/_include/workflow/LRUCache.h" 859623: e->ref == 1 859623: # 88 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 88 "/<>/_include/workflow/LRUCache.h" 859623: "e->ref == 1" 859623: # 88 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 88 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: this->unref(e); 859623: } 859623: } 859623: 859623: 859623: 859623: void set_max_size(size_t max_size) 859623: { 859623: this->max_size = max_size; 859623: } 859623: 859623: 859623: void prune() 859623: { 859623: struct list_head *pos, *tmp; 859623: Handle *e; 859623: 859623: for (pos = (&this->not_use)->next, tmp = pos->next; pos != (&this->not_use); pos = tmp, tmp = pos->next) 859623: { 859623: e = ((Handle *)((char *)(pos)-(unsigned long)(&((Handle *)0)->list))); 859623: 859623: # 109 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 109 "/<>/_include/workflow/LRUCache.h" 859623: e->ref == 1 859623: # 109 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 109 "/<>/_include/workflow/LRUCache.h" 859623: "e->ref == 1" 859623: # 109 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 109 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: rb_erase(&e->rb, &this->cache_map); 859623: this->erase_node(e); 859623: } 859623: } 859623: 859623: 859623: void release(const Handle *handle) 859623: { 859623: this->unref(const_cast(handle)); 859623: } 859623: 859623: 859623: 859623: const Handle *get(const KEY& key) 859623: { 859623: struct rb_node *p = this->cache_map.rb_node; 859623: Handle *bound = 859623: # 126 "/<>/_include/workflow/LRUCache.h" 3 4 859623: __null 859623: # 126 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: Handle *e; 859623: 859623: while (p) 859623: { 859623: e = ((Handle *)((char *)(p)-(unsigned long)(&((Handle *)0)->rb))); 859623: if (!(e->key < key)) 859623: { 859623: bound = e; 859623: p = p->rb_left; 859623: } 859623: else 859623: p = p->rb_right; 859623: } 859623: 859623: if (bound && !(key < bound->key)) 859623: { 859623: this->ref(bound); 859623: return bound; 859623: } 859623: 859623: return 859623: # 147 "/<>/_include/workflow/LRUCache.h" 3 4 859623: __null 859623: # 147 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: } 859623: 859623: 859623: 859623: const Handle *put(const KEY& key, VALUE value) 859623: { 859623: struct rb_node **p = &this->cache_map.rb_node; 859623: struct rb_node *parent = 859623: # 155 "/<>/_include/workflow/LRUCache.h" 3 4 859623: __null 859623: # 155 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: Handle *bound = 859623: # 156 "/<>/_include/workflow/LRUCache.h" 3 4 859623: __null 859623: # 156 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: Handle *e; 859623: 859623: while (*p) 859623: { 859623: parent = *p; 859623: e = ((Handle *)((char *)(*p)-(unsigned long)(&((Handle *)0)->rb))); 859623: if (!(e->key < key)) 859623: { 859623: bound = e; 859623: p = &(*p)->rb_left; 859623: } 859623: else 859623: p = &(*p)->rb_right; 859623: } 859623: 859623: e = new Handle(key, value); 859623: e->in_cache = true; 859623: e->ref = 2; 859623: list_add_tail(&e->list, &this->in_use); 859623: this->size++; 859623: 859623: if (bound && !(key < bound->key)) 859623: { 859623: rb_replace_node(&bound->rb, &e->rb, &this->cache_map); 859623: this->erase_node(bound); 859623: } 859623: else 859623: { 859623: rb_link_node(&e->rb, parent, p); 859623: rb_insert_color(&e->rb, &this->cache_map); 859623: } 859623: 859623: if (this->max_size > 0) 859623: { 859623: while (this->size > this->max_size && !list_empty(&this->not_use)) 859623: { 859623: Handle *tmp = ((Handle *)((char *)(this->not_use.next)-(unsigned long)(&((Handle *)0)->list))); 859623: 859623: # 194 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 194 "/<>/_include/workflow/LRUCache.h" 859623: tmp->ref == 1 859623: # 194 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 194 "/<>/_include/workflow/LRUCache.h" 859623: "tmp->ref == 1" 859623: # 194 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 194 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: rb_erase(&tmp->rb, &this->cache_map); 859623: this->erase_node(tmp); 859623: } 859623: } 859623: 859623: return e; 859623: } 859623: 859623: 859623: void del(const KEY& key) 859623: { 859623: Handle *e = const_cast(this->get(key)); 859623: 859623: if (e) 859623: { 859623: this->unref(e); 859623: rb_erase(&e->rb, &this->cache_map); 859623: this->erase_node(e); 859623: } 859623: } 859623: 859623: private: 859623: void ref(Handle *e) 859623: { 859623: if (e->in_cache && e->ref == 1) 859623: list_move_tail(&e->list, &this->in_use); 859623: 859623: e->ref++; 859623: } 859623: 859623: void unref(Handle *e) 859623: { 859623: 859623: # 227 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 227 "/<>/_include/workflow/LRUCache.h" 859623: e->ref > 0 859623: # 227 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 227 "/<>/_include/workflow/LRUCache.h" 859623: "e->ref > 0" 859623: # 227 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 227 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: if (--e->ref == 0) 859623: { 859623: 859623: # 230 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 230 "/<>/_include/workflow/LRUCache.h" 859623: !e->in_cache 859623: # 230 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 230 "/<>/_include/workflow/LRUCache.h" 859623: "!e->in_cache" 859623: # 230 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 230 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: this->value_deleter(e->value); 859623: delete e; 859623: } 859623: else if (e->in_cache && e->ref == 1) 859623: list_move_tail(&e->list, &this->not_use); 859623: } 859623: 859623: void erase_node(Handle *e) 859623: { 859623: 859623: # 240 "/<>/_include/workflow/LRUCache.h" 3 859623: (static_cast ( 859623: # 240 "/<>/_include/workflow/LRUCache.h" 859623: e->in_cache 859623: # 240 "/<>/_include/workflow/LRUCache.h" 3 859623: ) ? void (0) : __assert_fail ( 859623: # 240 "/<>/_include/workflow/LRUCache.h" 859623: "e->in_cache" 859623: # 240 "/<>/_include/workflow/LRUCache.h" 3 859623: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) 859623: # 240 "/<>/_include/workflow/LRUCache.h" 859623: ; 859623: list_del(&e->list); 859623: e->in_cache = false; 859623: this->size--; 859623: this->unref(e); 859623: } 859623: 859623: size_t max_size; 859623: size_t size; 859623: 859623: struct list_head not_use; 859623: struct list_head in_use; 859623: struct rb_root cache_map; 859623: 859623: ValueDeleter value_deleter; 859623: }; 859623: # 28 "/<>/_include/workflow/DnsCache.h" 2 859623: # 1 "/<>/_include/workflow/DnsUtil.h" 1 859623: # 30 "/<>/_include/workflow/DnsUtil.h" 859623: namespace protocol 859623: { 859623: 859623: class DnsUtil 859623: { 859623: public: 859623: static int getaddrinfo(const DnsResponse *resp, 859623: unsigned short port, 859623: struct addrinfo **res); 859623: static void freeaddrinfo(struct addrinfo *ai); 859623: }; 859623: 859623: class DnsResultCursor 859623: { 859623: public: 859623: DnsResultCursor(const DnsResponse *resp) : 859623: parser(resp->get_parser()) 859623: { 859623: dns_answer_cursor_init(&cursor, parser); 859623: record = 859623: # 49 "/<>/_include/workflow/DnsUtil.h" 3 4 859623: __null 859623: # 49 "/<>/_include/workflow/DnsUtil.h" 859623: ; 859623: } 859623: 859623: DnsResultCursor(DnsResultCursor&& move) = delete; 859623: DnsResultCursor& operator=(DnsResultCursor&& move) = delete; 859623: 859623: virtual ~DnsResultCursor() { } 859623: 859623: void reset_answer_cursor() 859623: { 859623: dns_answer_cursor_init(&cursor, parser); 859623: } 859623: 859623: void reset_authority_cursor() 859623: { 859623: dns_authority_cursor_init(&cursor, parser); 859623: } 859623: 859623: void reset_additional_cursor() 859623: { 859623: dns_additional_cursor_init(&cursor, parser); 859623: } 859623: 859623: bool next(struct dns_record **next_record) 859623: { 859623: int ret = dns_record_cursor_next(&record, &cursor); 859623: if (ret != 0) 859623: record = 859623: # 76 "/<>/_include/workflow/DnsUtil.h" 3 4 859623: __null 859623: # 76 "/<>/_include/workflow/DnsUtil.h" 859623: ; 859623: else 859623: *next_record = record; 859623: 859623: return ret == 0; 859623: } 859623: 859623: bool find_cname(const char *name, const char **cname) 859623: { 859623: return dns_record_cursor_find_cname(name, cname, &cursor) == 0; 859623: } 859623: 859623: private: 859623: const dns_parser_t *parser; 859623: dns_record_cursor_t cursor; 859623: struct dns_record *record; 859623: }; 859623: 859623: } 859623: # 29 "/<>/_include/workflow/DnsCache.h" 2 859623: 859623: 859623: 859623: 859623: struct DnsCacheValue 859623: { 859623: struct addrinfo *addrinfo; 859623: int64_t confident_time; 859623: int64_t expire_time; 859623: 859623: bool delayed() const 859623: { 859623: return addrinfo->ai_flags & 2; 859623: } 859623: }; 859623: 859623: 859623: 859623: 859623: class DnsCache 859623: { 859623: public: 859623: using HostPort = std::pair; 859623: using DnsHandle = LRUHandle; 859623: 859623: public: 859623: 859623: 859623: 859623: const DnsHandle *get(const HostPort& host_port); 859623: 859623: const DnsHandle *get(const std::string& host, unsigned short port) 859623: { 859623: return get(HostPort(host, port)); 859623: } 859623: 859623: const DnsHandle *get(const char *host, unsigned short port) 859623: { 859623: return get(std::string(host), port); 859623: } 859623: 859623: const DnsHandle *get_ttl(const HostPort& host_port) 859623: { 859623: return get_inner(host_port, 0); 859623: } 859623: 859623: const DnsHandle *get_ttl(const std::string& host, unsigned short port) 859623: { 859623: return get_ttl(HostPort(host, port)); 859623: } 859623: 859623: const DnsHandle *get_ttl(const char *host, unsigned short port) 859623: { 859623: return get_ttl(std::string(host), port); 859623: } 859623: 859623: const DnsHandle *get_confident(const HostPort& host_port) 859623: { 859623: return get_inner(host_port, 1); 859623: } 859623: 859623: const DnsHandle *get_confident(const std::string& host, unsigned short port) 859623: { 859623: return get_confident(HostPort(host, port)); 859623: } 859623: 859623: const DnsHandle *get_confident(const char *host, unsigned short port) 859623: { 859623: return get_confident(std::string(host), port); 859623: } 859623: 859623: const DnsHandle *put(const HostPort& host_port, 859623: struct addrinfo *addrinfo, 859623: unsigned int dns_ttl_default, 859623: unsigned int dns_ttl_min); 859623: 859623: const DnsHandle *put(const std::string& host, 859623: unsigned short port, 859623: struct addrinfo *addrinfo, 859623: unsigned int dns_ttl_default, 859623: unsigned int dns_ttl_min) 859623: { 859623: return put(HostPort(host, port), addrinfo, dns_ttl_default, dns_ttl_min); 859623: } 859623: 859623: const DnsHandle *put(const char *host, 859623: unsigned short port, 859623: struct addrinfo *addrinfo, 859623: unsigned int dns_ttl_default, 859623: unsigned int dns_ttl_min) 859623: { 859623: return put(std::string(host), port, addrinfo, dns_ttl_default, dns_ttl_min); 859623: } 859623: 859623: 859623: void release(const DnsHandle *handle); 859623: 859623: 859623: void del(const HostPort& key); 859623: 859623: void del(const std::string& host, unsigned short port) 859623: { 859623: del(HostPort(host, port)); 859623: } 859623: 859623: void del(const char *host, unsigned short port) 859623: { 859623: del(std::string(host), port); 859623: } 859623: 859623: private: 859623: const DnsHandle *get_inner(const HostPort& host_port, int type); 859623: 859623: std::mutex mutex_; 859623: 859623: class ValueDeleter 859623: { 859623: public: 859623: void operator() (const DnsCacheValue& value) const 859623: { 859623: struct addrinfo *ai = value.addrinfo; 859623: 859623: if (ai) 859623: { 859623: if (ai->ai_flags & 1) 859623: freeaddrinfo(ai); 859623: else 859623: protocol::DnsUtil::freeaddrinfo(ai); 859623: } 859623: } 859623: }; 859623: 859623: LRUCache cache_pool_; 859623: 859623: public: 859623: 859623: DnsCache(); 859623: ~DnsCache(); 859623: }; 859623: # 31 "/<>/_include/workflow/WFGlobal.h" 2 859623: # 1 "/<>/_include/workflow/RouteManager.h" 1 859623: # 33 "/<>/_include/workflow/RouteManager.h" 859623: class RouteManager 859623: { 859623: public: 859623: class RouteResult 859623: { 859623: public: 859623: void *cookie; 859623: CommSchedObject *request_object; 859623: 859623: public: 859623: RouteResult(): cookie( 859623: # 43 "/<>/_include/workflow/RouteManager.h" 3 4 859623: __null 859623: # 43 "/<>/_include/workflow/RouteManager.h" 859623: ), request_object( 859623: # 43 "/<>/_include/workflow/RouteManager.h" 3 4 859623: __null 859623: # 43 "/<>/_include/workflow/RouteManager.h" 859623: ) { } 859623: void clear() { cookie = 859623: # 44 "/<>/_include/workflow/RouteManager.h" 3 4 859623: __null 859623: # 44 "/<>/_include/workflow/RouteManager.h" 859623: ; request_object = 859623: # 44 "/<>/_include/workflow/RouteManager.h" 3 4 859623: __null 859623: # 44 "/<>/_include/workflow/RouteManager.h" 859623: ; } 859623: }; 859623: 859623: class RouteTarget : public CommSchedTarget 859623: { 859623: 859623: public: 859623: int init(const struct sockaddr *addr, socklen_t addrlen, SSL_CTX *ssl_ctx, 859623: int connect_timeout, int ssl_connect_timeout, int response_timeout, 859623: size_t max_connections) 859623: { 859623: int ret = this->CommSchedTarget::init(addr, addrlen, ssl_ctx, 859623: connect_timeout, ssl_connect_timeout, 859623: response_timeout, max_connections); 859623: 859623: if (ret >= 0 && ssl_ctx) 859623: SSL_CTX_up_ref(ssl_ctx); 859623: 859623: return ret; 859623: } 859623: 859623: void deinit() 859623: { 859623: SSL_CTX *ssl_ctx = this->get_ssl_ctx(); 859623: 859623: this->CommSchedTarget::deinit(); 859623: if (ssl_ctx) 859623: SSL_CTX_free(ssl_ctx); 859623: } 859623: 859623: 859623: public: 859623: int state; 859623: 859623: private: 859623: virtual WFConnection *new_connection(int connect_fd) 859623: { 859623: return new WFConnection; 859623: } 859623: 859623: public: 859623: RouteTarget() : state(0) { } 859623: }; 859623: 859623: public: 859623: int get(enum TransportType type, 859623: const struct addrinfo *addrinfo, 859623: const std::string& other_info, 859623: const struct EndpointParams *ep_params, 859623: const std::string& hostname, SSL_CTX *ssl_ctx, 859623: RouteResult& result); 859623: 859623: RouteManager() 859623: { 859623: cache_.rb_node = 859623: # 98 "/<>/_include/workflow/RouteManager.h" 3 4 859623: __null 859623: # 98 "/<>/_include/workflow/RouteManager.h" 859623: ; 859623: } 859623: 859623: ~RouteManager(); 859623: 859623: private: 859623: std::mutex mutex_; 859623: struct rb_root cache_; 859623: 859623: public: 859623: static void notify_unavailable(void *cookie, CommTarget *target); 859623: static void notify_available(void *cookie, CommTarget *target); 859623: }; 859623: # 32 "/<>/_include/workflow/WFGlobal.h" 2 859623: 859623: 859623: # 1 "/<>/_include/workflow/WFResourcePool.h" 1 859623: # 27 "/<>/_include/workflow/WFResourcePool.h" 859623: class WFResourcePool 859623: { 859623: public: 859623: WFConditional *get(SubTask *task, void **resbuf); 859623: WFConditional *get(SubTask *task); 859623: void post(void *res); 859623: 859623: public: 859623: struct Data 859623: { 859623: void *pop() { return this->pool->pop(); } 859623: void push(void *res) { this->pool->push(res); } 859623: 859623: void **res; 859623: long value; 859623: size_t index; 859623: struct list_head wait_list; 859623: std::mutex mutex; 859623: WFResourcePool *pool; 859623: }; 859623: 859623: protected: 859623: virtual void *pop() 859623: { 859623: return this->data.res[this->data.index++]; 859623: } 859623: 859623: virtual void push(void *res) 859623: { 859623: this->data.res[--this->data.index] = res; 859623: } 859623: 859623: protected: 859623: struct Data data; 859623: 859623: private: 859623: void create(size_t n); 859623: 859623: public: 859623: WFResourcePool(void *const *res, size_t n); 859623: WFResourcePool(size_t n); 859623: virtual ~WFResourcePool() { delete []this->data.res; } 859623: }; 859623: # 35 "/<>/_include/workflow/WFGlobal.h" 2 859623: # 1 "/<>/_include/workflow/WFNameService.h" 1 859623: # 33 "/<>/_include/workflow/WFNameService.h" 859623: class WFRouterTask : public WFGenericTask 859623: { 859623: public: 859623: RouteManager::RouteResult *get_result() { return &this->result; } 859623: 859623: public: 859623: void set_state(int state) { this->state = state; } 859623: void set_error(int error) { this->error = error; } 859623: 859623: protected: 859623: RouteManager::RouteResult result; 859623: std::function callback; 859623: 859623: protected: 859623: virtual SubTask *done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: return series->pop(); 859623: } 859623: 859623: public: 859623: WFRouterTask(std::function&& cb) : 859623: callback(std::move(cb)) 859623: { 859623: } 859623: }; 859623: 859623: class WFNSTracing 859623: { 859623: public: 859623: void *data; 859623: void (*deleter)(void *); 859623: 859623: public: 859623: WFNSTracing() 859623: { 859623: this->data = 859623: # 74 "/<>/_include/workflow/WFNameService.h" 3 4 859623: __null 859623: # 74 "/<>/_include/workflow/WFNameService.h" 859623: ; 859623: this->deleter = 859623: # 75 "/<>/_include/workflow/WFNameService.h" 3 4 859623: __null 859623: # 75 "/<>/_include/workflow/WFNameService.h" 859623: ; 859623: } 859623: }; 859623: 859623: struct WFNSParams 859623: { 859623: enum TransportType type; 859623: ParsedURI& uri; 859623: const char *info; 859623: SSL_CTX *ssl_ctx; 859623: bool fixed_addr; 859623: bool fixed_conn; 859623: int retry_times; 859623: WFNSTracing *tracing; 859623: }; 859623: 859623: using router_callback_t = std::function; 859623: 859623: class WFNSPolicy 859623: { 859623: public: 859623: virtual WFRouterTask *create_router_task(const struct WFNSParams *params, 859623: router_callback_t callback) = 0; 859623: 859623: virtual void success(RouteManager::RouteResult *result, 859623: WFNSTracing *tracing, 859623: CommTarget *target) 859623: { 859623: RouteManager::notify_available(result->cookie, target); 859623: } 859623: 859623: virtual void failed(RouteManager::RouteResult *result, 859623: WFNSTracing *tracing, 859623: CommTarget *target) 859623: { 859623: if (target) 859623: RouteManager::notify_unavailable(result->cookie, target); 859623: } 859623: 859623: public: 859623: virtual ~WFNSPolicy() { } 859623: }; 859623: 859623: class WFNameService 859623: { 859623: public: 859623: int add_policy(const char *name, WFNSPolicy *policy); 859623: WFNSPolicy *get_policy(const char *name); 859623: WFNSPolicy *del_policy(const char *name); 859623: 859623: public: 859623: WFNSPolicy *get_default_policy() const 859623: { 859623: return this->default_policy; 859623: } 859623: 859623: void set_default_policy(WFNSPolicy *policy) 859623: { 859623: this->default_policy = policy; 859623: } 859623: 859623: private: 859623: WFNSPolicy *default_policy; 859623: struct rb_root root; 859623: pthread_rwlock_t rwlock; 859623: 859623: private: 859623: struct WFNSPolicyEntry *get_policy_entry(const char *name); 859623: 859623: public: 859623: WFNameService(WFNSPolicy *default_policy) : 859623: rwlock( 859623: # 146 "/<>/_include/workflow/WFNameService.h" 3 4 859623: { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_DEFAULT_NP, 0, 0, 0, 0 } } 859623: # 146 "/<>/_include/workflow/WFNameService.h" 859623: ) 859623: { 859623: this->root.rb_node = 859623: # 148 "/<>/_include/workflow/WFNameService.h" 3 4 859623: __null 859623: # 148 "/<>/_include/workflow/WFNameService.h" 859623: ; 859623: this->default_policy = default_policy; 859623: } 859623: 859623: virtual ~WFNameService(); 859623: }; 859623: # 36 "/<>/_include/workflow/WFGlobal.h" 2 859623: # 1 "/<>/_include/workflow/WFDnsResolver.h" 1 859623: # 27 "/<>/_include/workflow/WFDnsResolver.h" 859623: class WFResolverTask : public WFRouterTask 859623: { 859623: public: 859623: WFResolverTask(const struct WFNSParams *ns_params, 859623: unsigned int dns_ttl_default, unsigned int dns_ttl_min, 859623: const struct EndpointParams *ep_params, 859623: router_callback_t&& cb) : 859623: WFRouterTask(std::move(cb)), 859623: ns_params_(*ns_params), 859623: ep_params_(*ep_params) 859623: { 859623: if (ns_params_.fixed_conn) 859623: ep_params_.max_connections = 1; 859623: 859623: dns_ttl_default_ = dns_ttl_default; 859623: dns_ttl_min_ = dns_ttl_min; 859623: has_next_ = false; 859623: in_guard_ = false; 859623: msg_ = 859623: # 45 "/<>/_include/workflow/WFDnsResolver.h" 3 4 859623: __null 859623: # 45 "/<>/_include/workflow/WFDnsResolver.h" 859623: ; 859623: } 859623: 859623: WFResolverTask(const struct WFNSParams *ns_params, 859623: router_callback_t&& cb) : 859623: WFRouterTask(std::move(cb)), 859623: ns_params_(*ns_params) 859623: { 859623: if (ns_params_.fixed_conn) 859623: ep_params_.max_connections = 1; 859623: 859623: has_next_ = false; 859623: in_guard_ = false; 859623: msg_ = 859623: # 58 "/<>/_include/workflow/WFDnsResolver.h" 3 4 859623: __null 859623: # 58 "/<>/_include/workflow/WFDnsResolver.h" 859623: ; 859623: } 859623: 859623: protected: 859623: virtual void dispatch(); 859623: virtual SubTask *done(); 859623: 859623: private: 859623: void thread_dns_callback(void *thrd_dns_task); 859623: void dns_single_callback(void *net_dns_task); 859623: static void dns_partial_callback(void *net_dns_task); 859623: void dns_parallel_callback(const void *parallel); 859623: void dns_callback_internal(void *thrd_dns_output, 859623: unsigned int ttl_default, 859623: unsigned int ttl_min); 859623: 859623: void request_dns(); 859623: void task_callback(); 859623: 859623: protected: 859623: struct WFNSParams ns_params_; 859623: unsigned int dns_ttl_default_; 859623: unsigned int dns_ttl_min_; 859623: struct EndpointParams ep_params_; 859623: 859623: private: 859623: const char *host_; 859623: unsigned short port_; 859623: bool has_next_; 859623: bool in_guard_; 859623: void *msg_; 859623: }; 859623: 859623: class WFDnsResolver : public WFNSPolicy 859623: { 859623: public: 859623: virtual WFRouterTask *create_router_task(const struct WFNSParams *params, 859623: router_callback_t callback); 859623: }; 859623: # 37 "/<>/_include/workflow/WFGlobal.h" 2 859623: # 48 "/<>/_include/workflow/WFGlobal.h" 859623: struct WFGlobalSettings 859623: { 859623: struct EndpointParams endpoint_params; 859623: struct EndpointParams dns_server_params; 859623: unsigned int dns_ttl_default; 859623: unsigned int dns_ttl_min; 859623: int dns_threads; 859623: int poller_threads; 859623: int handler_threads; 859623: int compute_threads; 859623: int fio_max_events; 859623: const char *resolv_conf_path; 859623: const char *hosts_path; 859623: }; 859623: 859623: 859623: 859623: 859623: static constexpr struct WFGlobalSettings GLOBAL_SETTINGS_DEFAULT = 859623: { 859623: .endpoint_params = ENDPOINT_PARAMS_DEFAULT, 859623: .dns_server_params = ENDPOINT_PARAMS_DEFAULT, 859623: .dns_ttl_default = 3600, 859623: .dns_ttl_min = 60, 859623: .dns_threads = 4, 859623: .poller_threads = 4, 859623: .handler_threads = 20, 859623: .compute_threads = -1, 859623: .fio_max_events = 4096, 859623: .resolv_conf_path = "/etc/resolv.conf", 859623: .hosts_path = "/etc/hosts", 859623: }; 859623: 859623: 859623: 859623: 859623: 859623: extern void WORKFLOW_library_init(const struct WFGlobalSettings *settings); 859623: 859623: 859623: 859623: 859623: 859623: class WFGlobal 859623: { 859623: public: 859623: 859623: 859623: 859623: 859623: 859623: 859623: static void register_scheme_port(const std::string& scheme, 859623: unsigned short port); 859623: 859623: 859623: 859623: 859623: 859623: 859623: 859623: static const char *get_default_port(const std::string& scheme); 859623: 859623: 859623: 859623: 859623: 859623: static const struct WFGlobalSettings *get_global_settings() 859623: { 859623: return &settings_; 859623: } 859623: 859623: static void set_global_settings(const struct WFGlobalSettings *settings) 859623: { 859623: settings_ = *settings; 859623: } 859623: 859623: static const char *get_error_string(int state, int error); 859623: 859623: static bool increase_handler_thread() 859623: { 859623: return WFGlobal::get_scheduler()->increase_handler_thread() == 0; 859623: } 859623: 859623: static bool decrease_handler_thread() 859623: { 859623: return WFGlobal::get_scheduler()->decrease_handler_thread() == 0; 859623: } 859623: 859623: static bool increase_compute_thread() 859623: { 859623: return WFGlobal::get_compute_executor()->increase_thread() == 0; 859623: } 859623: 859623: static bool decrease_compute_thread() 859623: { 859623: return WFGlobal::get_compute_executor()->decrease_thread() == 0; 859623: } 859623: 859623: 859623: public: 859623: static bool is_scheduler_created(); 859623: static class CommScheduler *get_scheduler(); 859623: static SSL_CTX *get_ssl_client_ctx(); 859623: static SSL_CTX *new_ssl_server_ctx(); 859623: static class ExecQueue *get_exec_queue(const std::string& queue_name); 859623: static class Executor *get_compute_executor(); 859623: static class IOService *get_io_service(); 859623: static class ExecQueue *get_dns_queue(); 859623: static class Executor *get_dns_executor(); 859623: static class WFDnsClient *get_dns_client(); 859623: static class WFResourcePool *get_dns_respool(); 859623: 859623: static class RouteManager *get_route_manager() 859623: { 859623: return &route_manager_; 859623: } 859623: 859623: static class DnsCache *get_dns_cache() 859623: { 859623: return &dns_cache_; 859623: } 859623: 859623: static class WFDnsResolver *get_dns_resolver() 859623: { 859623: return &dns_resolver_; 859623: } 859623: 859623: static class WFNameService *get_name_service() 859623: { 859623: return &name_service_; 859623: } 859623: 859623: public: 859623: static int sync_operation_begin(); 859623: static void sync_operation_end(int cookie); 859623: 859623: private: 859623: static struct WFGlobalSettings settings_; 859623: static RouteManager route_manager_; 859623: static DnsCache dns_cache_; 859623: static WFDnsResolver dns_resolver_; 859623: static WFNameService name_service_; 859623: }; 859623: # 33 "/<>/_include/workflow/WFTaskFactory.inl" 2 859623: 859623: 859623: 859623: 859623: # 1 "/<>/_include/workflow/WFTaskError.h" 1 859623: # 31 "/<>/_include/workflow/WFTaskError.h" 859623: enum 859623: { 859623: 859623: WFT_ERR_URI_PARSE_FAILED = 1001, 859623: WFT_ERR_URI_SCHEME_INVALID = 1002, 859623: WFT_ERR_URI_PORT_INVALID = 1003, 859623: WFT_ERR_UPSTREAM_UNAVAILABLE = 1004, 859623: 859623: 859623: WFT_ERR_HTTP_BAD_REDIRECT_HEADER = 2001, 859623: WFT_ERR_HTTP_PROXY_CONNECT_FAILED = 2002, 859623: 859623: 859623: WFT_ERR_REDIS_ACCESS_DENIED = 3001, 859623: WFT_ERR_REDIS_COMMAND_DISALLOWED = 3002, 859623: 859623: 859623: WFT_ERR_MYSQL_HOST_NOT_ALLOWED = 4001, 859623: WFT_ERR_MYSQL_ACCESS_DENIED = 4002, 859623: WFT_ERR_MYSQL_INVALID_CHARACTER_SET = 4003, 859623: WFT_ERR_MYSQL_COMMAND_DISALLOWED = 4004, 859623: WFT_ERR_MYSQL_QUERY_NOT_SET = 4005, 859623: WFT_ERR_MYSQL_SSL_NOT_SUPPORTED = 4006, 859623: 859623: 859623: WFT_ERR_KAFKA_PARSE_RESPONSE_FAILED = 5001, 859623: WFT_ERR_KAFKA_PRODUCE_FAILED = 5002, 859623: WFT_ERR_KAFKA_FETCH_FAILED = 5003, 859623: WFT_ERR_KAFKA_CGROUP_FAILED = 5004, 859623: WFT_ERR_KAFKA_COMMIT_FAILED = 5005, 859623: WFT_ERR_KAFKA_META_FAILED = 5006, 859623: WFT_ERR_KAFKA_LEAVEGROUP_FAILED = 5007, 859623: WFT_ERR_KAFKA_API_UNKNOWN = 5008, 859623: WFT_ERR_KAFKA_VERSION_DISALLOWED = 5009, 859623: WFT_ERR_KAFKA_SASL_DISALLOWED = 5010, 859623: WFT_ERR_KAFKA_ARRANGE_FAILED = 5011, 859623: WFT_ERR_KAFKA_LIST_OFFSETS_FAILED = 5012, 859623: WFT_ERR_KAFKA_CGROUP_ASSIGN_FAILED = 5013, 859623: 859623: 859623: WFT_ERR_CONSUL_API_UNKNOWN = 6001, 859623: WFT_ERR_CONSUL_CHECK_RESPONSE_FAILED = 6002, 859623: }; 859623: # 38 "/<>/_include/workflow/WFTaskFactory.inl" 2 859623: 859623: 859623: 859623: class __WFDynamicTask : public WFDynamicTask 859623: { 859623: protected: 859623: virtual void dispatch() 859623: { 859623: series_of(this)->push_front(this->create(this)); 859623: this->WFDynamicTask::dispatch(); 859623: } 859623: 859623: protected: 859623: std::function create; 859623: 859623: public: 859623: __WFDynamicTask(std::function&& create) : 859623: create(std::move(create)) 859623: { 859623: } 859623: }; 859623: 859623: inline WFDynamicTask * 859623: WFTaskFactory::create_dynamic_task(dynamic_create_t create) 859623: { 859623: return new __WFDynamicTask(std::move(create)); 859623: } 859623: 859623: template<> 859623: int WFTaskFactory::send_by_name(const std::string&, void *const *, size_t); 859623: 859623: template 859623: int WFTaskFactory::send_by_name(const std::string& mailbox_name, T *const msg[], 859623: size_t max) 859623: { 859623: return WFTaskFactory::send_by_name(mailbox_name, (void *const *)msg, max); 859623: } 859623: 859623: template<> 859623: int WFTaskFactory::signal_by_name(const std::string&, void *const *, size_t); 859623: 859623: template 859623: int WFTaskFactory::signal_by_name(const std::string& cond_name, T *const msg[], 859623: size_t max) 859623: { 859623: return WFTaskFactory::signal_by_name(cond_name, (void *const *)msg, max); 859623: } 859623: 859623: template 859623: class WFComplexClientTask : public WFClientTask 859623: { 859623: protected: 859623: using task_callback_t = std::function *)>; 859623: 859623: public: 859623: WFComplexClientTask(int retry_max, task_callback_t&& cb): 859623: WFClientTask( 859623: # 94 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 94 "/<>/_include/workflow/WFTaskFactory.inl" 859623: , WFGlobal::get_scheduler(), std::move(cb)) 859623: { 859623: type_ = TT_TCP; 859623: ssl_ctx_ = 859623: # 97 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 97 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: fixed_addr_ = false; 859623: fixed_conn_ = false; 859623: retry_max_ = retry_max; 859623: retry_times_ = 0; 859623: redirect_ = false; 859623: ns_policy_ = 859623: # 103 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 103 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: router_task_ = 859623: # 104 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 104 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: } 859623: 859623: protected: 859623: 859623: virtual bool init_success() { return true; } 859623: virtual void init_failed() {} 859623: virtual bool check_request() { return true; } 859623: virtual WFRouterTask *route(); 859623: virtual bool finish_once() { return true; } 859623: 859623: public: 859623: void init(const ParsedURI& uri) 859623: { 859623: uri_ = uri; 859623: init_with_uri(); 859623: } 859623: 859623: void init(ParsedURI&& uri) 859623: { 859623: uri_ = std::move(uri); 859623: init_with_uri(); 859623: } 859623: 859623: void init(enum TransportType type, 859623: const struct sockaddr *addr, 859623: socklen_t addrlen, 859623: const std::string& info); 859623: 859623: void set_transport_type(enum TransportType type) 859623: { 859623: type_ = type; 859623: } 859623: 859623: enum TransportType get_transport_type() const { return type_; } 859623: 859623: void set_ssl_ctx(SSL_CTX *ssl_ctx) { ssl_ctx_ = ssl_ctx; } 859623: 859623: virtual const ParsedURI *get_current_uri() const { return &uri_; } 859623: 859623: void set_redirect(const ParsedURI& uri) 859623: { 859623: redirect_ = true; 859623: init(uri); 859623: } 859623: 859623: void set_redirect(enum TransportType type, const struct sockaddr *addr, 859623: socklen_t addrlen, const std::string& info) 859623: { 859623: redirect_ = true; 859623: init(type, addr, addrlen, info); 859623: } 859623: 859623: bool is_fixed_addr() const { return this->fixed_addr_; } 859623: 859623: bool is_fixed_conn() const { return this->fixed_conn_; } 859623: 859623: protected: 859623: void set_fixed_addr(int fixed) { this->fixed_addr_ = fixed; } 859623: 859623: void set_fixed_conn(int fixed) { this->fixed_conn_ = fixed; } 859623: 859623: void set_info(const std::string& info) 859623: { 859623: info_.assign(info); 859623: } 859623: 859623: void set_info(const char *info) 859623: { 859623: info_.assign(info); 859623: } 859623: 859623: protected: 859623: virtual void dispatch(); 859623: virtual SubTask *done(); 859623: 859623: void clear_resp() 859623: { 859623: protocol::ProtocolMessage head(std::move(this->resp)); 859623: this->resp.~RESP(); 859623: new(&this->resp) RESP; 859623: *(protocol::ProtocolMessage *)&this->resp = std::move(head); 859623: } 859623: 859623: void disable_retry() 859623: { 859623: retry_times_ = retry_max_; 859623: } 859623: 859623: protected: 859623: enum TransportType type_; 859623: ParsedURI uri_; 859623: std::string info_; 859623: SSL_CTX *ssl_ctx_; 859623: bool fixed_addr_; 859623: bool fixed_conn_; 859623: bool redirect_; 859623: CTX ctx_; 859623: int retry_max_; 859623: int retry_times_; 859623: WFNSPolicy *ns_policy_; 859623: WFRouterTask *router_task_; 859623: RouteManager::RouteResult route_result_; 859623: WFNSTracing tracing_; 859623: 859623: public: 859623: CTX *get_mutable_ctx() { return &ctx_; } 859623: 859623: private: 859623: void clear_prev_state(); 859623: void init_with_uri(); 859623: bool set_port(); 859623: void router_callback(void *t); 859623: void switch_callback(void *t); 859623: }; 859623: 859623: template 859623: void WFComplexClientTask::clear_prev_state() 859623: { 859623: ns_policy_ = 859623: # 223 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 223 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: route_result_.clear(); 859623: if (tracing_.deleter) 859623: { 859623: tracing_.deleter(tracing_.data); 859623: tracing_.deleter = 859623: # 228 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 228 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: } 859623: tracing_.data = 859623: # 230 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 230 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: retry_times_ = 0; 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: this->timeout_reason = 0; 859623: } 859623: 859623: template 859623: void WFComplexClientTask::init(enum TransportType type, 859623: const struct sockaddr *addr, 859623: socklen_t addrlen, 859623: const std::string& info) 859623: { 859623: if (redirect_) 859623: clear_prev_state(); 859623: 859623: auto params = WFGlobal::get_global_settings()->endpoint_params; 859623: struct addrinfo addrinfo = { }; 859623: addrinfo.ai_family = addr->sa_family; 859623: addrinfo.ai_addr = (struct sockaddr *)addr; 859623: addrinfo.ai_addrlen = addrlen; 859623: 859623: type_ = type; 859623: info_.assign(info); 859623: params.use_tls_sni = false; 859623: if (WFGlobal::get_route_manager()->get(type, &addrinfo, info_, ¶ms, 859623: "", ssl_ctx_, route_result_) < 0) 859623: { 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = 859623: # 259 "/<>/_include/workflow/WFTaskFactory.inl" 3 859623: (*__errno_location ()) 859623: # 259 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: } 859623: else if (this->init_success()) 859623: return; 859623: 859623: this->init_failed(); 859623: } 859623: 859623: template 859623: bool WFComplexClientTask::set_port() 859623: { 859623: if (uri_.port) 859623: { 859623: int port = atoi(uri_.port); 859623: 859623: if (port <= 0 || port > 65535) 859623: { 859623: this->state = WFT_STATE_TASK_ERROR; 859623: this->error = WFT_ERR_URI_PORT_INVALID; 859623: return false; 859623: } 859623: 859623: return true; 859623: } 859623: 859623: if (uri_.scheme) 859623: { 859623: const char *port_str = WFGlobal::get_default_port(uri_.scheme); 859623: 859623: if (port_str) 859623: { 859623: uri_.port = strdup(port_str); 859623: if (uri_.port) 859623: return true; 859623: 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = 859623: # 295 "/<>/_include/workflow/WFTaskFactory.inl" 3 859623: (*__errno_location ()) 859623: # 295 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: return false; 859623: } 859623: } 859623: 859623: this->state = WFT_STATE_TASK_ERROR; 859623: this->error = WFT_ERR_URI_SCHEME_INVALID; 859623: return false; 859623: } 859623: 859623: template 859623: void WFComplexClientTask::init_with_uri() 859623: { 859623: if (redirect_) 859623: { 859623: clear_prev_state(); 859623: ns_policy_ = WFGlobal::get_dns_resolver(); 859623: } 859623: 859623: if (uri_.state == 1) 859623: { 859623: if (this->set_port()) 859623: { 859623: if (this->init_success()) 859623: return; 859623: } 859623: } 859623: else if (uri_.state == 3) 859623: { 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = uri_.error; 859623: } 859623: else 859623: { 859623: this->state = WFT_STATE_TASK_ERROR; 859623: this->error = WFT_ERR_URI_PARSE_FAILED; 859623: } 859623: 859623: this->init_failed(); 859623: } 859623: 859623: template 859623: WFRouterTask *WFComplexClientTask::route() 859623: { 859623: auto&& cb = std::bind(&WFComplexClientTask::router_callback, 859623: this, 859623: std::placeholders::_1); 859623: struct WFNSParams params = { 859623: .type = type_, 859623: .uri = uri_, 859623: .info = info_.c_str(), 859623: .ssl_ctx = ssl_ctx_, 859623: .fixed_addr = fixed_addr_, 859623: .fixed_conn = fixed_conn_, 859623: .retry_times = retry_times_, 859623: .tracing = &tracing_, 859623: }; 859623: 859623: if (!ns_policy_) 859623: { 859623: WFNameService *ns = WFGlobal::get_name_service(); 859623: ns_policy_ = ns->get_policy(uri_.host ? uri_.host : ""); 859623: } 859623: 859623: return ns_policy_->create_router_task(¶ms, std::move(cb)); 859623: } 859623: 859623: template 859623: void WFComplexClientTask::router_callback(void *t) 859623: { 859623: WFRouterTask *task = (WFRouterTask *)t; 859623: 859623: this->state = task->get_state(); 859623: if (this->state == WFT_STATE_SUCCESS) 859623: route_result_ = std::move(*task->get_result()); 859623: else if (this->state == WFT_STATE_UNDEFINED) 859623: { 859623: 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = 859623: # 374 "/<>/_include/workflow/WFTaskFactory.inl" 3 859623: 38 859623: # 374 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: } 859623: else 859623: this->error = task->get_error(); 859623: } 859623: 859623: template 859623: void WFComplexClientTask::dispatch() 859623: { 859623: switch (this->state) 859623: { 859623: case WFT_STATE_UNDEFINED: 859623: if (this->check_request()) 859623: { 859623: if (this->route_result_.request_object) 859623: { 859623: case WFT_STATE_SUCCESS: 859623: this->set_request_object(route_result_.request_object); 859623: this->WFClientTask::dispatch(); 859623: return; 859623: } 859623: 859623: router_task_ = this->route(); 859623: series_of(this)->push_front(this); 859623: series_of(this)->push_front(router_task_); 859623: } 859623: 859623: default: 859623: break; 859623: } 859623: 859623: this->subtask_done(); 859623: } 859623: 859623: template 859623: void WFComplexClientTask::switch_callback(void *t) 859623: { 859623: if (!redirect_) 859623: { 859623: if (this->state == WFT_STATE_SYS_ERROR && this->error < 0) 859623: { 859623: this->state = WFT_STATE_SSL_ERROR; 859623: this->error = -this->error; 859623: } 859623: 859623: if (tracing_.deleter) 859623: { 859623: tracing_.deleter(tracing_.data); 859623: tracing_.deleter = 859623: # 422 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 422 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: } 859623: 859623: if (this->callback) 859623: this->callback(this); 859623: } 859623: 859623: if (redirect_) 859623: { 859623: redirect_ = false; 859623: clear_resp(); 859623: this->target = 859623: # 433 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 433 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: series_of(this)->push_front(this); 859623: } 859623: else 859623: delete this; 859623: } 859623: 859623: template 859623: SubTask *WFComplexClientTask::done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (router_task_) 859623: { 859623: router_task_ = 859623: # 447 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 447 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: return series->pop(); 859623: } 859623: 859623: bool is_user_request = this->finish_once(); 859623: 859623: if (ns_policy_) 859623: { 859623: if (this->state == WFT_STATE_SYS_ERROR || 859623: this->state == WFT_STATE_DNS_ERROR) 859623: { 859623: ns_policy_->failed(&route_result_, &tracing_, this->target); 859623: } 859623: else if (route_result_.request_object) 859623: { 859623: ns_policy_->success(&route_result_, &tracing_, this->target); 859623: } 859623: } 859623: 859623: if (this->state == WFT_STATE_SUCCESS) 859623: { 859623: if (!is_user_request) 859623: return this; 859623: } 859623: else if (this->state == WFT_STATE_SYS_ERROR) 859623: { 859623: if (retry_times_ < retry_max_) 859623: { 859623: redirect_ = true; 859623: if (ns_policy_) 859623: route_result_.clear(); 859623: 859623: this->state = WFT_STATE_UNDEFINED; 859623: this->error = 0; 859623: this->timeout_reason = 0; 859623: retry_times_++; 859623: } 859623: } 859623: 859623: 859623: 859623: 859623: if (!this->target || !this->CommSession::get_connection()) 859623: { 859623: auto&& cb = std::bind(&WFComplexClientTask::switch_callback, 859623: this, 859623: std::placeholders::_1); 859623: WFTimerTask *timer = WFTaskFactory::create_timer_task(std::move(cb)); 859623: series->push_front(timer); 859623: } 859623: else 859623: this->switch_callback( 859623: # 498 "/<>/_include/workflow/WFTaskFactory.inl" 3 4 859623: __null 859623: # 498 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ); 859623: 859623: return series->pop(); 859623: } 859623: 859623: 859623: 859623: template 859623: WFNetworkTask * 859623: WFNetworkTaskFactory::create_client_task(enum TransportType type, 859623: const std::string& host, 859623: unsigned short port, 859623: int retry_max, 859623: std::function *)> callback) 859623: { 859623: auto *task = new WFComplexClientTask(retry_max, std::move(callback)); 859623: ParsedURI uri; 859623: char buf[32]; 859623: 859623: sprintf(buf, "%u", port); 859623: uri.scheme = strdup("scheme"); 859623: uri.host = strdup(host.c_str()); 859623: uri.port = strdup(buf); 859623: if (!uri.scheme || !uri.host || !uri.port) 859623: { 859623: uri.state = 3; 859623: uri.error = 859623: # 524 "/<>/_include/workflow/WFTaskFactory.inl" 3 859623: (*__errno_location ()) 859623: # 524 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: } 859623: else 859623: uri.state = 1; 859623: 859623: task->init(std::move(uri)); 859623: task->set_transport_type(type); 859623: return task; 859623: } 859623: 859623: template 859623: WFNetworkTask * 859623: WFNetworkTaskFactory::create_client_task(enum TransportType type, 859623: const std::string& url, 859623: int retry_max, 859623: std::function *)> callback) 859623: { 859623: auto *task = new WFComplexClientTask(retry_max, std::move(callback)); 859623: ParsedURI uri; 859623: 859623: URIParser::parse(url, uri); 859623: task->init(std::move(uri)); 859623: task->set_transport_type(type); 859623: return task; 859623: } 859623: 859623: template 859623: WFNetworkTask * 859623: WFNetworkTaskFactory::create_client_task(enum TransportType type, 859623: const ParsedURI& uri, 859623: int retry_max, 859623: std::function *)> callback) 859623: { 859623: auto *task = new WFComplexClientTask(retry_max, std::move(callback)); 859623: 859623: task->init(uri); 859623: task->set_transport_type(type); 859623: return task; 859623: } 859623: 859623: template 859623: WFNetworkTask * 859623: WFNetworkTaskFactory::create_client_task(enum TransportType type, 859623: const struct sockaddr *addr, 859623: socklen_t addrlen, 859623: int retry_max, 859623: std::function *)> callback) 859623: { 859623: auto *task = new WFComplexClientTask(retry_max, std::move(callback)); 859623: 859623: task->init(type, addr, addrlen, ""); 859623: return task; 859623: } 859623: 859623: template 859623: WFNetworkTask * 859623: WFNetworkTaskFactory::create_client_task(enum TransportType type, 859623: const struct sockaddr *addr, 859623: socklen_t addrlen, 859623: SSL_CTX *ssl_ctx, 859623: int retry_max, 859623: std::function *)> callback) 859623: { 859623: auto *task = new WFComplexClientTask(retry_max, std::move(callback)); 859623: 859623: task->set_ssl_ctx(ssl_ctx); 859623: task->init(type, addr, addrlen, ""); 859623: return task; 859623: } 859623: 859623: template 859623: WFNetworkTask * 859623: WFNetworkTaskFactory::create_server_task(CommService *service, 859623: std::function *)>& process) 859623: { 859623: return new WFServerTask(service, WFGlobal::get_scheduler(), process); 859623: } 859623: 859623: 859623: 859623: class WFServerTaskFactory 859623: { 859623: public: 859623: static WFDnsTask *create_dns_task(CommService *service, 859623: std::function& process); 859623: 859623: static WFHttpTask *create_http_task(CommService *service, 859623: std::function& process); 859623: 859623: static WFMySQLTask *create_mysql_task(CommService *service, 859623: std::function& process); 859623: }; 859623: 859623: 859623: 859623: class __WFGoTask : public WFGoTask 859623: { 859623: public: 859623: void set_go_func(std::function func) 859623: { 859623: this->go = std::move(func); 859623: } 859623: 859623: protected: 859623: virtual void execute() 859623: { 859623: this->go(); 859623: } 859623: 859623: protected: 859623: std::function go; 859623: 859623: public: 859623: __WFGoTask(ExecQueue *queue, Executor *executor, 859623: std::function&& func) : 859623: WFGoTask(queue, executor), 859623: go(std::move(func)) 859623: { 859623: } 859623: }; 859623: 859623: class __WFTimedGoTask : public __WFGoTask 859623: { 859623: protected: 859623: virtual void dispatch(); 859623: virtual SubTask *done(); 859623: 859623: protected: 859623: virtual void handle(int state, int error); 859623: 859623: protected: 859623: static void timer_callback(WFTimerTask *timer); 859623: 859623: protected: 859623: time_t seconds; 859623: long nanoseconds; 859623: std::atomic ref; 859623: 859623: public: 859623: __WFTimedGoTask(time_t seconds, long nanoseconds, 859623: ExecQueue *queue, Executor *executor, 859623: std::function&& func) : 859623: __WFGoTask(queue, executor, std::move(func)), 859623: ref(4) 859623: { 859623: this->seconds = seconds; 859623: this->nanoseconds = nanoseconds; 859623: } 859623: }; 859623: 859623: template 859623: WFGoTask *WFTaskFactory::create_go_task(const std::string& queue_name, 859623: FUNC&& func, ARGS&&... args) 859623: { 859623: auto&& tmp = std::bind(std::forward(func), 859623: std::forward(args)...); 859623: return new __WFGoTask(WFGlobal::get_exec_queue(queue_name), 859623: WFGlobal::get_compute_executor(), 859623: std::move(tmp)); 859623: } 859623: 859623: template 859623: WFGoTask *WFTaskFactory::create_timedgo_task(time_t seconds, long nanoseconds, 859623: const std::string& queue_name, 859623: FUNC&& func, ARGS&&... args) 859623: { 859623: auto&& tmp = std::bind(std::forward(func), 859623: std::forward(args)...); 859623: return new __WFTimedGoTask(seconds, nanoseconds, 859623: WFGlobal::get_exec_queue(queue_name), 859623: WFGlobal::get_compute_executor(), 859623: std::move(tmp)); 859623: } 859623: 859623: template 859623: WFGoTask *WFTaskFactory::create_go_task(ExecQueue *queue, Executor *executor, 859623: FUNC&& func, ARGS&&... args) 859623: { 859623: auto&& tmp = std::bind(std::forward(func), 859623: std::forward(args)...); 859623: return new __WFGoTask(queue, executor, std::move(tmp)); 859623: } 859623: 859623: template 859623: WFGoTask *WFTaskFactory::create_timedgo_task(time_t seconds, long nanoseconds, 859623: ExecQueue *queue, Executor *executor, 859623: FUNC&& func, ARGS&&... args) 859623: { 859623: auto&& tmp = std::bind(std::forward(func), 859623: std::forward(args)...); 859623: return new __WFTimedGoTask(seconds, nanoseconds, 859623: queue, executor, 859623: std::move(tmp)); 859623: } 859623: 859623: template 859623: void WFTaskFactory::reset_go_task(WFGoTask *task, FUNC&& func, ARGS&&... args) 859623: { 859623: auto&& tmp = std::bind(std::forward(func), 859623: std::forward(args)...); 859623: ((__WFGoTask *)task)->set_go_func(std::move(tmp)); 859623: } 859623: 859623: 859623: 859623: template<> inline 859623: WFGoTask *WFTaskFactory::create_go_task(const std::string& queue_name, 859623: std::nullptr_t&&) 859623: { 859623: return new __WFGoTask(WFGlobal::get_exec_queue(queue_name), 859623: WFGlobal::get_compute_executor(), 859623: nullptr); 859623: } 859623: 859623: template<> inline 859623: WFGoTask *WFTaskFactory::create_timedgo_task(time_t seconds, long nanoseconds, 859623: const std::string& queue_name, 859623: std::nullptr_t&&) 859623: { 859623: return new __WFTimedGoTask(seconds, nanoseconds, 859623: WFGlobal::get_exec_queue(queue_name), 859623: WFGlobal::get_compute_executor(), 859623: nullptr); 859623: } 859623: 859623: template<> inline 859623: WFGoTask *WFTaskFactory::create_go_task(ExecQueue *queue, Executor *executor, 859623: std::nullptr_t&&) 859623: { 859623: return new __WFGoTask(queue, executor, nullptr); 859623: } 859623: 859623: template<> inline 859623: WFGoTask *WFTaskFactory::create_timedgo_task(time_t seconds, long nanoseconds, 859623: ExecQueue *queue, Executor *executor, 859623: std::nullptr_t&&) 859623: { 859623: return new __WFTimedGoTask(seconds, nanoseconds, queue, executor, nullptr); 859623: } 859623: 859623: template<> inline 859623: void WFTaskFactory::reset_go_task(WFGoTask *task, std::nullptr_t&&) 859623: { 859623: ((__WFGoTask *)task)->set_go_func(nullptr); 859623: } 859623: 859623: 859623: 859623: template 859623: class __WFThreadTask : public WFThreadTask 859623: { 859623: protected: 859623: virtual void execute() 859623: { 859623: this->routine(&this->input, &this->output); 859623: } 859623: 859623: protected: 859623: std::function routine; 859623: 859623: public: 859623: __WFThreadTask(ExecQueue *queue, Executor *executor, 859623: std::function&& rt, 859623: std::function *)>&& cb) : 859623: WFThreadTask(queue, executor, std::move(cb)), 859623: routine(std::move(rt)) 859623: { 859623: } 859623: }; 859623: 859623: template 859623: class __WFTimedThreadTask : public __WFThreadTask 859623: { 859623: protected: 859623: virtual void dispatch(); 859623: virtual SubTask *done(); 859623: 859623: protected: 859623: virtual void handle(int state, int error); 859623: 859623: protected: 859623: static void timer_callback(WFTimerTask *timer); 859623: 859623: protected: 859623: time_t seconds; 859623: long nanoseconds; 859623: std::atomic ref; 859623: 859623: public: 859623: __WFTimedThreadTask(time_t seconds, long nanoseconds, 859623: ExecQueue *queue, Executor *executor, 859623: std::function&& rt, 859623: std::function *)>&& cb) : 859623: __WFThreadTask(queue, executor, std::move(rt), std::move(cb)), 859623: ref(4) 859623: { 859623: this->seconds = seconds; 859623: this->nanoseconds = nanoseconds; 859623: } 859623: }; 859623: 859623: template 859623: void __WFTimedThreadTask::dispatch() 859623: { 859623: WFTimerTask *timer; 859623: 859623: timer = WFTaskFactory::create_timer_task(this->seconds, this->nanoseconds, 859623: __WFTimedThreadTask::timer_callback); 859623: timer->user_data = this; 859623: 859623: this->__WFThreadTask::dispatch(); 859623: timer->start(); 859623: } 859623: 859623: template 859623: SubTask *__WFTimedThreadTask::done() 859623: { 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: return series_of(this)->pop(); 859623: } 859623: 859623: template 859623: void __WFTimedThreadTask::handle(int state, int error) 859623: { 859623: if (--this->ref == 3) 859623: { 859623: this->state = state; 859623: this->error = error; 859623: this->subtask_done(); 859623: } 859623: 859623: if (--this->ref == 0) 859623: delete this; 859623: } 859623: 859623: template 859623: void __WFTimedThreadTask::timer_callback(WFTimerTask *timer) 859623: { 859623: auto *task = (__WFTimedThreadTask *)timer->user_data; 859623: 859623: if (--task->ref == 3) 859623: { 859623: if (timer->get_state() == WFT_STATE_SUCCESS) 859623: { 859623: task->state = WFT_STATE_SYS_ERROR; 859623: task->error = 859623: # 871 "/<>/_include/workflow/WFTaskFactory.inl" 3 859623: 110 859623: # 871 "/<>/_include/workflow/WFTaskFactory.inl" 859623: ; 859623: } 859623: else 859623: { 859623: task->state = timer->get_state(); 859623: task->error = timer->get_error(); 859623: } 859623: 859623: task->subtask_done(); 859623: } 859623: 859623: if (--task->ref == 0) 859623: delete task; 859623: } 859623: 859623: template 859623: WFThreadTask * 859623: WFThreadTaskFactory::create_thread_task(const std::string& queue_name, 859623: std::function routine, 859623: std::function *)> callback) 859623: { 859623: return new __WFThreadTask(WFGlobal::get_exec_queue(queue_name), 859623: WFGlobal::get_compute_executor(), 859623: std::move(routine), 859623: std::move(callback)); 859623: } 859623: 859623: template 859623: WFThreadTask * 859623: WFThreadTaskFactory::create_thread_task(time_t seconds, long nanoseconds, 859623: const std::string& queue_name, 859623: std::function routine, 859623: std::function *)> callback) 859623: { 859623: return new __WFTimedThreadTask(seconds, nanoseconds, 859623: WFGlobal::get_exec_queue(queue_name), 859623: WFGlobal::get_compute_executor(), 859623: std::move(routine), 859623: std::move(callback)); 859623: } 859623: 859623: template 859623: WFThreadTask * 859623: WFThreadTaskFactory::create_thread_task(ExecQueue *queue, Executor *executor, 859623: std::function routine, 859623: std::function *)> callback) 859623: { 859623: return new __WFThreadTask(queue, executor, 859623: std::move(routine), 859623: std::move(callback)); 859623: } 859623: 859623: template 859623: WFThreadTask * 859623: WFThreadTaskFactory::create_thread_task(time_t seconds, long nanoseconds, 859623: ExecQueue *queue, Executor *executor, 859623: std::function routine, 859623: std::function *)> callback) 859623: { 859623: return new __WFTimedThreadTask(seconds, nanoseconds, 859623: queue, executor, 859623: std::move(routine), 859623: std::move(callback)); 859623: } 859623: # 488 "/<>/_include/workflow/WFTaskFactory.h" 2 859623: # 29 "/<>/src/client/WFConsulClient.h" 2 859623: # 1 "/<>/_include/workflow/ConsulDataTypes.h" 1 859623: # 22 "/<>/_include/workflow/ConsulDataTypes.h" 859623: # 1 "/usr/arm-linux-gnueabi/include/assert.h" 1 3 859623: # 23 "/<>/_include/workflow/ConsulDataTypes.h" 2 859623: 859623: 859623: 859623: 859623: 859623: namespace protocol 859623: { 859623: 859623: class ConsulConfig 859623: { 859623: public: 859623: 859623: void set_token(const std::string& token) { this->ptr->token = token; } 859623: std::string get_token() const { return this->ptr->token; } 859623: 859623: 859623: 859623: void set_datacenter(const std::string& data_center) 859623: { 859623: this->ptr->dc = data_center; 859623: } 859623: std::string get_datacenter() const { return this->ptr->dc; } 859623: 859623: void set_near_node(const std::string& near_node) 859623: { 859623: this->ptr->near = near_node; 859623: } 859623: std::string get_near_node() const { return this->ptr->near; } 859623: 859623: void set_filter_expr(const std::string& filter_expr) 859623: { 859623: this->ptr->filter = filter_expr; 859623: } 859623: std::string get_filter_expr() const { return this->ptr->filter; } 859623: 859623: 859623: void set_wait_ttl(int wait_ttl) { this->ptr->wait_ttl = wait_ttl; } 859623: int get_wait_ttl() const { return this->ptr->wait_ttl; } 859623: 859623: 859623: void set_blocking_query(bool enable_flag) 859623: { 859623: this->ptr->blocking_query = enable_flag; 859623: } 859623: bool blocking_query() const { return this->ptr->blocking_query; } 859623: 859623: 859623: void set_passing(bool passing) { this->ptr->passing = passing; } 859623: bool get_passing() const { return this->ptr->passing; } 859623: 859623: 859623: 859623: 859623: void set_replace_checks(bool replace_checks) 859623: { 859623: this->ptr->replace_checks = replace_checks; 859623: } 859623: bool get_replace_checks() const 859623: { 859623: return this->ptr->replace_checks; 859623: } 859623: 859623: void set_check_name(const std::string& check_name) 859623: { 859623: this->ptr->check_cfg.check_name = check_name; 859623: } 859623: std::string get_check_name() const { return this->ptr->check_cfg.check_name; } 859623: 859623: void set_check_http_url(const std::string& http_url) 859623: { 859623: this->ptr->check_cfg.http_url = http_url; 859623: } 859623: std::string get_check_http_url() const 859623: { 859623: return this->ptr->check_cfg.http_url; 859623: } 859623: 859623: void set_check_http_method(const std::string& method) 859623: { 859623: this->ptr->check_cfg.http_method = method; 859623: } 859623: std::string get_check_http_method() const 859623: { 859623: return this->ptr->check_cfg.http_method; 859623: } 859623: 859623: void add_http_header(const std::string& key, 859623: const std::vector& values) 859623: { 859623: this->ptr->check_cfg.headers.emplace(key, values); 859623: } 859623: const std::map> *get_http_headers() const 859623: { 859623: return &this->ptr->check_cfg.headers; 859623: } 859623: 859623: void set_http_body(const std::string& body) 859623: { 859623: this->ptr->check_cfg.http_body = body; 859623: } 859623: std::string get_http_body() const { return this->ptr->check_cfg.http_body; } 859623: 859623: void set_check_interval(int interval) 859623: { 859623: this->ptr->check_cfg.interval = interval; 859623: } 859623: int get_check_interval() const { return this->ptr->check_cfg.interval; } 859623: 859623: void set_check_timeout(int timeout) 859623: { 859623: this->ptr->check_cfg.timeout = timeout; 859623: } 859623: int get_check_timeout() const { return this->ptr->check_cfg.timeout; } 859623: 859623: void set_check_notes(const std::string& notes) 859623: { 859623: this->ptr->check_cfg.notes = notes; 859623: } 859623: std::string get_check_notes() const { return this->ptr->check_cfg.notes; } 859623: 859623: void set_check_tcp(const std::string& tcp_address) 859623: { 859623: this->ptr->check_cfg.tcp_address = tcp_address; 859623: } 859623: std::string get_check_tcp() const { return this->ptr->check_cfg.tcp_address; } 859623: 859623: void set_initial_status(const std::string& initial_status) 859623: { 859623: this->ptr->check_cfg.initial_status = initial_status; 859623: } 859623: std::string get_initial_status() const 859623: { 859623: return this->ptr->check_cfg.initial_status; 859623: } 859623: 859623: void set_auto_deregister_time(int milliseconds) 859623: { 859623: this->ptr->check_cfg.auto_deregister_time = milliseconds; 859623: } 859623: int get_auto_deregister_time() const 859623: { 859623: return this->ptr->check_cfg.auto_deregister_time; 859623: } 859623: 859623: 859623: void set_success_times(int times) 859623: { 859623: this->ptr->check_cfg.success_times = times; 859623: } 859623: int get_success_times() const { return this->ptr->check_cfg.success_times; } 859623: 859623: 859623: void set_failure_times(int times) { this->ptr->check_cfg.failure_times = times; } 859623: int get_failure_times() const { return this->ptr->check_cfg.failure_times; } 859623: 859623: void set_health_check(bool enable_flag) 859623: { 859623: this->ptr->check_cfg.health_check = enable_flag; 859623: } 859623: bool get_health_check() const 859623: { 859623: return this->ptr->check_cfg.health_check; 859623: } 859623: 859623: public: 859623: ConsulConfig() 859623: { 859623: this->ptr = new Config; 859623: this->ptr->blocking_query = false; 859623: this->ptr->passing = false; 859623: this->ptr->replace_checks = false; 859623: this->ptr->wait_ttl = 300 * 1000; 859623: this->ptr->check_cfg.interval = 5000; 859623: this->ptr->check_cfg.timeout = 10000; 859623: this->ptr->check_cfg.http_method = "GET"; 859623: this->ptr->check_cfg.initial_status = "critical"; 859623: this->ptr->check_cfg.auto_deregister_time = 10 * 60 * 1000; 859623: this->ptr->check_cfg.success_times = 0; 859623: this->ptr->check_cfg.failure_times = 0; 859623: this->ptr->check_cfg.health_check = false; 859623: 859623: this->ref = new std::atomic(1); 859623: } 859623: 859623: virtual ~ConsulConfig() 859623: { 859623: if (--*this->ref == 0) 859623: { 859623: delete this->ptr; 859623: delete this->ref; 859623: } 859623: } 859623: 859623: ConsulConfig(ConsulConfig&& move) 859623: { 859623: this->ptr = move.ptr; 859623: this->ref = move.ref; 859623: move.ptr = new Config; 859623: move.ref = new std::atomic(1); 859623: } 859623: 859623: ConsulConfig(const ConsulConfig& copy) 859623: { 859623: this->ptr = copy.ptr; 859623: this->ref = copy.ref; 859623: ++(*this->ref); 859623: } 859623: 859623: ConsulConfig& operator= (ConsulConfig&& move) 859623: { 859623: if (this != &move) 859623: { 859623: this->~ConsulConfig(); 859623: this->ptr = move.ptr; 859623: this->ref = move.ref; 859623: move.ptr = new Config; 859623: move.ref = new std::atomic(1); 859623: } 859623: 859623: return *this; 859623: } 859623: 859623: ConsulConfig& operator= (const ConsulConfig& copy) 859623: { 859623: if (this != ©) 859623: { 859623: this->~ConsulConfig(); 859623: this->ptr = copy.ptr; 859623: this->ref = copy.ref; 859623: ++(*this->ref); 859623: } 859623: 859623: return *this; 859623: } 859623: 859623: private: 859623: 859623: struct HealthCheckConfig 859623: { 859623: std::string check_name; 859623: std::string notes; 859623: std::string http_url; 859623: std::string http_method; 859623: std::string http_body; 859623: std::string tcp_address; 859623: std::string initial_status; 859623: std::map> headers; 859623: int auto_deregister_time; 859623: int interval; 859623: int timeout; 859623: int success_times; 859623: int failure_times; 859623: bool health_check; 859623: }; 859623: 859623: struct Config 859623: { 859623: 859623: std::string token; 859623: 859623: 859623: std::string dc; 859623: std::string near; 859623: std::string filter; 859623: int wait_ttl; 859623: bool blocking_query; 859623: bool passing; 859623: 859623: 859623: bool replace_checks; 859623: HealthCheckConfig check_cfg; 859623: }; 859623: 859623: private: 859623: struct Config *ptr; 859623: std::atomic *ref; 859623: }; 859623: 859623: 859623: using ConsulAddress = std::pair; 859623: 859623: struct ConsulService 859623: { 859623: std::string service_name; 859623: std::string service_namespace; 859623: std::string service_id; 859623: std::vector tags; 859623: ConsulAddress service_address; 859623: ConsulAddress lan; 859623: ConsulAddress lan_ipv4; 859623: ConsulAddress lan_ipv6; 859623: ConsulAddress virtual_address; 859623: ConsulAddress wan; 859623: ConsulAddress wan_ipv4; 859623: ConsulAddress wan_ipv6; 859623: std::map meta; 859623: bool tag_override; 859623: }; 859623: 859623: struct ConsulServiceInstance 859623: { 859623: 859623: std::string node_id; 859623: std::string node_name; 859623: std::string node_address; 859623: std::string dc; 859623: std::map node_meta; 859623: long long create_index; 859623: long long modify_index; 859623: 859623: 859623: struct ConsulService service; 859623: 859623: 859623: std::string check_name; 859623: std::string check_id; 859623: std::string check_notes; 859623: std::string check_output; 859623: std::string check_status; 859623: std::string check_type; 859623: }; 859623: 859623: struct ConsulServiceTags 859623: { 859623: std::string service_name; 859623: std::vector tags; 859623: }; 859623: 859623: } 859623: # 30 "/<>/src/client/WFConsulClient.h" 2 859623: 859623: class WFConsulTask; 859623: using consul_callback_t = std::function; 859623: 859623: enum 859623: { 859623: CONSUL_API_TYPE_UNKNOWN = 0, 859623: CONSUL_API_TYPE_DISCOVER, 859623: CONSUL_API_TYPE_LIST_SERVICE, 859623: CONSUL_API_TYPE_REGISTER, 859623: CONSUL_API_TYPE_DEREGISTER, 859623: }; 859623: 859623: class WFConsulTask : public WFGenericTask 859623: { 859623: public: 859623: bool get_discover_result( 859623: std::vector& result) const; 859623: 859623: bool get_list_service_result( 859623: std::vector& result) const; 859623: 859623: public: 859623: void set_service(const struct protocol::ConsulService *service); 859623: 859623: void set_api_type(int api_type) 859623: { 859623: this->api_type = api_type; 859623: } 859623: 859623: int get_api_type() const 859623: { 859623: return this->api_type; 859623: } 859623: 859623: void set_callback(consul_callback_t cb) 859623: { 859623: this->callback = std::move(cb); 859623: } 859623: 859623: void set_consul_index(long long consul_index) 859623: { 859623: this->consul_index = consul_index; 859623: } 859623: 859623: long long get_consul_index() const { return this->consul_index; } 859623: 859623: const protocol::HttpResponse *get_http_resp() const 859623: { 859623: return &this->http_resp; 859623: } 859623: 859623: protected: 859623: void set_config(protocol::ConsulConfig conf) 859623: { 859623: this->config = std::move(conf); 859623: } 859623: 859623: void set_ssl_ctx(SSL_CTX *ssl_ctx) 859623: { 859623: this->ssl_ctx = ssl_ctx; 859623: } 859623: 859623: protected: 859623: virtual void dispatch(); 859623: virtual SubTask *done(); 859623: 859623: WFHttpTask *create_discover_task(); 859623: WFHttpTask *create_list_service_task(); 859623: WFHttpTask *create_register_task(); 859623: WFHttpTask *create_deregister_task(); 859623: 859623: std::string generate_discover_request(); 859623: long long get_consul_index(protocol::HttpResponse *resp); 859623: 859623: static bool check_task_result(WFHttpTask *task, WFConsulTask *consul_task); 859623: static void discover_callback(WFHttpTask *task); 859623: static void list_service_callback(WFHttpTask *task); 859623: static void register_callback(WFHttpTask *task); 859623: 859623: protected: 859623: protocol::ConsulConfig config; 859623: SSL_CTX *ssl_ctx; 859623: struct protocol::ConsulService service; 859623: std::string proxy_url; 859623: int retry_max; 859623: int api_type; 859623: bool finish; 859623: long long consul_index; 859623: protocol::HttpResponse http_resp; 859623: consul_callback_t callback; 859623: 859623: protected: 859623: WFConsulTask(const std::string& proxy_url, 859623: const std::string& service_namespace, 859623: const std::string& service_name, 859623: const std::string& service_id, 859623: int retry_max, consul_callback_t&& cb); 859623: virtual ~WFConsulTask() { } 859623: friend class WFConsulClient; 859623: }; 859623: 859623: class WFConsulClient 859623: { 859623: public: 859623: 859623: int init(const std::string& proxy_url) 859623: { 859623: return this->init(proxy_url, 859623: # 138 "/<>/src/client/WFConsulClient.h" 3 4 859623: __null 859623: # 138 "/<>/src/client/WFConsulClient.h" 859623: ); 859623: } 859623: 859623: int init(const std::string& proxy_url, protocol::ConsulConfig config) 859623: { 859623: return this->init(proxy_url, std::move(config), 859623: # 143 "/<>/src/client/WFConsulClient.h" 3 4 859623: __null 859623: # 143 "/<>/src/client/WFConsulClient.h" 859623: ); 859623: } 859623: 859623: 859623: int init(const std::string& proxy_url, SSL_CTX *ctx_ctx) 859623: { 859623: return this->init(proxy_url, protocol::ConsulConfig(), ssl_ctx); 859623: } 859623: 859623: int init(const std::string& proxy_url, protocol::ConsulConfig config, 859623: SSL_CTX *ctx); 859623: 859623: void deinit() { } 859623: 859623: WFConsulTask *create_discover_task(const std::string& service_namespace, 859623: const std::string& service_name, 859623: int retry_max, 859623: consul_callback_t cb); 859623: 859623: WFConsulTask *create_list_service_task(const std::string& service_namespace, 859623: int retry_max, 859623: consul_callback_t cb); 859623: 859623: WFConsulTask *create_register_task(const std::string& service_namespace, 859623: const std::string& service_name, 859623: const std::string& service_id, 859623: int retry_max, 859623: consul_callback_t cb); 859623: 859623: WFConsulTask *create_deregister_task(const std::string& service_namespace, 859623: const std::string& service_id, 859623: int retry_max, 859623: consul_callback_t cb); 859623: 859623: protected: 859623: std::string proxy_url; 859623: protocol::ConsulConfig config; 859623: SSL_CTX *ssl_ctx; 859623: 859623: public: 859623: virtual ~WFConsulClient() { } 859623: }; 859623: # 31 "/<>/src/client/WFConsulClient.cc" 2 859623: 859623: using namespace protocol; 859623: 859623: WFConsulTask::WFConsulTask(const std::string& proxy_url, 859623: const std::string& service_namespace, 859623: const std::string& service_name, 859623: const std::string& service_id, 859623: int retry_max, 859623: consul_callback_t&& cb) : 859623: proxy_url(proxy_url), 859623: callback(std::move(cb)) 859623: { 859623: this->service.service_name = service_name; 859623: this->service.service_namespace = service_namespace; 859623: this->service.service_id = service_id; 859623: this->api_type = CONSUL_API_TYPE_UNKNOWN; 859623: this->retry_max = retry_max; 859623: this->finish = false; 859623: this->consul_index = 0; 859623: this->ssl_ctx = 859623: # 50 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 50 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: } 859623: 859623: void WFConsulTask::set_service(const struct protocol::ConsulService *service) 859623: { 859623: this->service.tags = service->tags; 859623: this->service.meta = service->meta; 859623: this->service.tag_override = service->tag_override; 859623: this->service.service_address = service->service_address; 859623: this->service.lan = service->lan; 859623: this->service.lan_ipv4 = service->lan_ipv4; 859623: this->service.lan_ipv6 = service->lan_ipv6; 859623: this->service.virtual_address = service->virtual_address; 859623: this->service.wan = service->wan; 859623: this->service.wan_ipv4 = service->wan_ipv4; 859623: this->service.wan_ipv6 = service->wan_ipv6; 859623: } 859623: 859623: static bool parse_discover_result(const json_value_t *root, 859623: std::vector& result); 859623: static bool parse_list_service_result(const json_value_t *root, 859623: std::vector& result); 859623: 859623: bool WFConsulTask::get_discover_result( 859623: std::vector& result) const 859623: { 859623: json_value_t *root; 859623: int errno_bak; 859623: bool ret; 859623: 859623: if (this->api_type != CONSUL_API_TYPE_DISCOVER) 859623: { 859623: 859623: # 82 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 82 "/<>/src/client/WFConsulClient.cc" 859623: = 859623: # 82 "/<>/src/client/WFConsulClient.cc" 3 859623: 1 859623: # 82 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: return false; 859623: } 859623: 859623: errno_bak = 859623: # 86 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 86 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: 859623: # 87 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 87 "/<>/src/client/WFConsulClient.cc" 859623: = 859623: # 87 "/<>/src/client/WFConsulClient.cc" 3 859623: 74 859623: # 87 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: std::string body = HttpUtil::decode_chunked_body(&this->http_resp); 859623: root = json_value_parse(body.c_str()); 859623: if (!root) 859623: return false; 859623: 859623: ret = parse_discover_result(root, result); 859623: json_value_destroy(root); 859623: if (ret) 859623: 859623: # 96 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 96 "/<>/src/client/WFConsulClient.cc" 859623: = errno_bak; 859623: 859623: return ret; 859623: } 859623: 859623: bool WFConsulTask::get_list_service_result( 859623: std::vector& result) const 859623: { 859623: json_value_t *root; 859623: int errno_bak; 859623: bool ret; 859623: 859623: if (this->api_type != CONSUL_API_TYPE_LIST_SERVICE) 859623: { 859623: 859623: # 110 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 110 "/<>/src/client/WFConsulClient.cc" 859623: = 859623: # 110 "/<>/src/client/WFConsulClient.cc" 3 859623: 1 859623: # 110 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: return false; 859623: } 859623: 859623: errno_bak = 859623: # 114 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 114 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: 859623: # 115 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 115 "/<>/src/client/WFConsulClient.cc" 859623: = 859623: # 115 "/<>/src/client/WFConsulClient.cc" 3 859623: 74 859623: # 115 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: std::string body = HttpUtil::decode_chunked_body(&this->http_resp); 859623: root = json_value_parse(body.c_str()); 859623: if (!root) 859623: return false; 859623: 859623: ret = parse_list_service_result(root, result); 859623: json_value_destroy(root); 859623: if (ret) 859623: 859623: # 124 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 124 "/<>/src/client/WFConsulClient.cc" 859623: = errno_bak; 859623: 859623: return ret; 859623: } 859623: 859623: void WFConsulTask::dispatch() 859623: { 859623: WFHttpTask *task; 859623: 859623: if (this->finish) 859623: { 859623: this->subtask_done(); 859623: return; 859623: } 859623: 859623: switch(this->api_type) 859623: { 859623: case CONSUL_API_TYPE_DISCOVER: 859623: task = create_discover_task(); 859623: break; 859623: 859623: case CONSUL_API_TYPE_LIST_SERVICE: 859623: task = create_list_service_task(); 859623: break; 859623: 859623: case CONSUL_API_TYPE_DEREGISTER: 859623: task = create_deregister_task(); 859623: break; 859623: 859623: case CONSUL_API_TYPE_REGISTER: 859623: task = create_register_task(); 859623: if (task) 859623: break; 859623: 859623: if (1) 859623: { 859623: this->state = WFT_STATE_SYS_ERROR; 859623: this->error = 859623: # 161 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 161 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: } 859623: else 859623: { 859623: default: 859623: this->state = WFT_STATE_TASK_ERROR; 859623: this->error = WFT_ERR_CONSUL_API_UNKNOWN; 859623: } 859623: 859623: this->finish = true; 859623: this->subtask_done(); 859623: return; 859623: } 859623: 859623: auto *t = (WFComplexClientTask *)task; 859623: t->set_ssl_ctx(this->ssl_ctx); 859623: 859623: series_of(this)->push_front(this); 859623: series_of(this)->push_front(task); 859623: this->subtask_done(); 859623: } 859623: 859623: SubTask *WFConsulTask::done() 859623: { 859623: SeriesWork *series = series_of(this); 859623: 859623: if (finish) 859623: { 859623: if (this->callback) 859623: this->callback(this); 859623: 859623: delete this; 859623: } 859623: 859623: return series->pop(); 859623: } 859623: 859623: static std::string convert_time_to_str(int milliseconds) 859623: { 859623: std::string str_time; 859623: int seconds = milliseconds / 1000; 859623: 859623: if (seconds >= 180) 859623: str_time = std::to_string(seconds / 60) + "m"; 859623: else 859623: str_time = std::to_string(seconds) + "s"; 859623: 859623: return str_time; 859623: } 859623: 859623: std::string WFConsulTask::generate_discover_request() 859623: { 859623: std::string url = this->proxy_url; 859623: 859623: url += "/v1/health/service/" + this->service.service_name; 859623: url += "?dc=" + this->config.get_datacenter(); 859623: url += "&ns=" + this->service.service_namespace; 859623: std::string passing = this->config.get_passing() ? "true" : "false"; 859623: url += "&passing=" + passing; 859623: url += "&token=" + this->config.get_token(); 859623: url += "&filter=" + this->config.get_filter_expr(); 859623: 859623: 859623: if (this->config.blocking_query()) 859623: { 859623: url += "&index=" + std::to_string(this->get_consul_index()); 859623: url += "&wait=" + convert_time_to_str(this->config.get_wait_ttl()); 859623: } 859623: 859623: return url; 859623: } 859623: 859623: WFHttpTask *WFConsulTask::create_discover_task() 859623: { 859623: std::string url = generate_discover_request(); 859623: WFHttpTask *task = WFTaskFactory::create_http_task(url, 0, this->retry_max, 859623: discover_callback); 859623: HttpRequest *req = task->get_req(); 859623: 859623: req->add_header_pair("Content-Type", "application/json"); 859623: task->user_data = this; 859623: return task; 859623: } 859623: 859623: WFHttpTask *WFConsulTask::create_list_service_task() 859623: { 859623: std::string url = this->proxy_url; 859623: 859623: url += "/v1/catalog/services?token=" + this->config.get_token(); 859623: url += "&dc=" + this->config.get_datacenter(); 859623: url += "&ns=" + this->service.service_namespace; 859623: 859623: WFHttpTask *task = WFTaskFactory::create_http_task(url, 0, this->retry_max, 859623: list_service_callback); 859623: HttpRequest *req = task->get_req(); 859623: 859623: req->add_header_pair("Content-Type", "application/json"); 859623: task->user_data = this; 859623: return task; 859623: } 859623: 859623: static void print_json_value(const json_value_t *val, int depth, 859623: std::string& json_str); 859623: 859623: static bool create_register_request(const json_value_t *root, 859623: const struct ConsulService *service, 859623: const ConsulConfig& config); 859623: 859623: WFHttpTask *WFConsulTask::create_register_task() 859623: { 859623: std::string payload; 859623: 859623: std::string url = this->proxy_url; 859623: url += "/v1/agent/service/register?replace-existing-checks="; 859623: url += this->config.get_replace_checks() ? "true" : "false"; 859623: 859623: WFHttpTask *task = WFTaskFactory::create_http_task(url, 0, this->retry_max, 859623: register_callback); 859623: HttpRequest *req = task->get_req(); 859623: 859623: req->set_method("PUT"); 859623: req->add_header_pair("Content-Type", "application/json"); 859623: 859623: if (!this->config.get_token().empty()) 859623: req->add_header_pair("X-Consul-Token", this->config.get_token()); 859623: 859623: json_value_t *root = json_value_create(3); 859623: if (root) 859623: { 859623: if (create_register_request(root, &this->service, this->config)) 859623: print_json_value(root, 0, payload); 859623: 859623: json_value_destroy(root); 859623: if (!payload.empty() && req->append_output_body(payload)) 859623: { 859623: task->user_data = this; 859623: return task; 859623: } 859623: } 859623: 859623: task->dismiss(); 859623: return 859623: # 302 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 302 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: } 859623: 859623: WFHttpTask *WFConsulTask::create_deregister_task() 859623: { 859623: std::string url = this->proxy_url; 859623: 859623: url += "/v1/agent/service/deregister/" + this->service.service_id; 859623: url += "?ns=" + this->service.service_namespace; 859623: 859623: WFHttpTask *task = WFTaskFactory::create_http_task(url, 0, this->retry_max, 859623: register_callback); 859623: HttpRequest *req = task->get_req(); 859623: 859623: req->set_method("PUT"); 859623: req->add_header_pair("Content-Type", "application/json"); 859623: 859623: std::string token = this->config.get_token(); 859623: if (!token.empty()) 859623: req->add_header_pair("X-Consul-Token", token); 859623: 859623: task->user_data = this; 859623: return task; 859623: } 859623: 859623: bool WFConsulTask::check_task_result(WFHttpTask *task, WFConsulTask *consul_task) 859623: { 859623: if (task->get_state() != WFT_STATE_SUCCESS) 859623: { 859623: consul_task->state = task->get_state(); 859623: consul_task->error = task->get_error(); 859623: return false; 859623: } 859623: 859623: protocol::HttpResponse *resp = task->get_resp(); 859623: if (strcmp(resp->get_status_code(), "200") != 0) 859623: { 859623: consul_task->state = WFT_STATE_TASK_ERROR; 859623: consul_task->error = WFT_ERR_CONSUL_CHECK_RESPONSE_FAILED; 859623: return false; 859623: } 859623: 859623: return true; 859623: } 859623: 859623: long long WFConsulTask::get_consul_index(HttpResponse *resp) 859623: { 859623: long long consul_index = 0; 859623: 859623: 859623: protocol::HttpHeaderCursor cursor(resp); 859623: std::string consul_index_str; 859623: if (cursor.find("X-Consul-Index", consul_index_str)) 859623: { 859623: consul_index = strtoll(consul_index_str.c_str(), 859623: # 356 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 356 "/<>/src/client/WFConsulClient.cc" 859623: , 10); 859623: if (consul_index < 0) 859623: consul_index = 0; 859623: } 859623: 859623: return consul_index; 859623: } 859623: 859623: void WFConsulTask::discover_callback(WFHttpTask *task) 859623: { 859623: WFConsulTask *t = (WFConsulTask*)task->user_data; 859623: 859623: if (WFConsulTask::check_task_result(task, t)) 859623: { 859623: protocol::HttpResponse *resp = task->get_resp(); 859623: long long consul_index = t->get_consul_index(resp); 859623: long long last_consul_index = t->get_consul_index(); 859623: t->set_consul_index(consul_index < last_consul_index ? 0 : consul_index); 859623: t->state = task->get_state(); 859623: } 859623: 859623: t->http_resp = std::move(*task->get_resp()); 859623: t->finish = true; 859623: } 859623: 859623: void WFConsulTask::list_service_callback(WFHttpTask *task) 859623: { 859623: WFConsulTask *t = (WFConsulTask*)task->user_data; 859623: 859623: if (WFConsulTask::check_task_result(task, t)) 859623: t->state = task->get_state(); 859623: 859623: t->http_resp = std::move(*task->get_resp()); 859623: t->finish = true; 859623: } 859623: 859623: void WFConsulTask::register_callback(WFHttpTask *task) 859623: { 859623: WFConsulTask *t = (WFConsulTask *)task->user_data; 859623: 859623: if (WFConsulTask::check_task_result(task, t)) 859623: t->state = task->get_state(); 859623: 859623: t->http_resp = std::move(*task->get_resp()); 859623: t->finish = true; 859623: } 859623: 859623: int WFConsulClient::init(const std::string& proxy_url, ConsulConfig config, 859623: SSL_CTX *ssl_ctx) 859623: { 859623: ParsedURI uri; 859623: 859623: if (URIParser::parse(proxy_url, uri) >= 0) 859623: { 859623: this->proxy_url = uri.scheme; 859623: this->proxy_url += "://"; 859623: this->proxy_url += uri.host; 859623: if (uri.port) 859623: { 859623: this->proxy_url += ":"; 859623: this->proxy_url += uri.port; 859623: } 859623: 859623: this->config = std::move(config); 859623: this->ssl_ctx = ssl_ctx; 859623: return 0; 859623: } 859623: else if (uri.state == 2) 859623: 859623: # 424 "/<>/src/client/WFConsulClient.cc" 3 859623: (*__errno_location ()) 859623: # 424 "/<>/src/client/WFConsulClient.cc" 859623: = 859623: # 424 "/<>/src/client/WFConsulClient.cc" 3 859623: 22 859623: # 424 "/<>/src/client/WFConsulClient.cc" 859623: ; 859623: 859623: return -1; 859623: } 859623: 859623: WFConsulTask *WFConsulClient::create_discover_task( 859623: const std::string& service_namespace, 859623: const std::string& service_name, 859623: int retry_max, 859623: consul_callback_t cb) 859623: { 859623: WFConsulTask *task = new WFConsulTask(this->proxy_url, service_namespace, 859623: service_name, "", retry_max, 859623: std::move(cb)); 859623: task->set_api_type(CONSUL_API_TYPE_DISCOVER); 859623: task->set_config(this->config); 859623: task->set_ssl_ctx(this->ssl_ctx); 859623: return task; 859623: } 859623: 859623: WFConsulTask *WFConsulClient::create_list_service_task( 859623: const std::string& service_namespace, 859623: int retry_max, 859623: consul_callback_t cb) 859623: { 859623: WFConsulTask *task = new WFConsulTask(this->proxy_url, service_namespace, 859623: "", "", retry_max, 859623: std::move(cb)); 859623: task->set_api_type(CONSUL_API_TYPE_LIST_SERVICE); 859623: task->set_config(this->config); 859623: task->set_ssl_ctx(this->ssl_ctx); 859623: return task; 859623: } 859623: 859623: WFConsulTask *WFConsulClient::create_register_task( 859623: const std::string& service_namespace, 859623: const std::string& service_name, 859623: const std::string& service_id, 859623: int retry_max, 859623: consul_callback_t cb) 859623: { 859623: WFConsulTask *task = new WFConsulTask(this->proxy_url, service_namespace, 859623: service_name, service_id, retry_max, 859623: std::move(cb)); 859623: task->set_api_type(CONSUL_API_TYPE_REGISTER); 859623: task->set_config(this->config); 859623: task->set_ssl_ctx(this->ssl_ctx); 859623: return task; 859623: } 859623: 859623: WFConsulTask *WFConsulClient::create_deregister_task( 859623: const std::string& service_namespace, 859623: const std::string& service_id, 859623: int retry_max, 859623: consul_callback_t cb) 859623: { 859623: WFConsulTask *task = new WFConsulTask(this->proxy_url, service_namespace, 859623: "", service_id, retry_max, 859623: std::move(cb)); 859623: task->set_api_type(CONSUL_API_TYPE_DEREGISTER); 859623: task->set_config(this->config); 859623: task->set_ssl_ctx(this->ssl_ctx); 859623: return task; 859623: } 859623: 859623: static bool create_tagged_address(const ConsulAddress& consul_address, 859623: const std::string& name, 859623: json_object_t *tagged_obj) 859623: { 859623: if (consul_address.first.empty()) 859623: return true; 859623: 859623: const json_value_t *val = json_object_append(tagged_obj, name.c_str(), 859623: 3); 859623: if (!val) 859623: return false; 859623: 859623: json_object_t *obj = json_value_object(val); 859623: 859623: if (!json_object_append(obj, "Address", 1, 859623: consul_address.first.c_str())) 859623: return false; 859623: 859623: if (!json_object_append(obj, "Port", 2, 859623: (double)consul_address.second)) 859623: return false; 859623: 859623: return true; 859623: } 859623: 859623: static bool create_health_check(const ConsulConfig& config, json_object_t *obj) 859623: { 859623: const json_value_t *val; 859623: std::string str; 859623: 859623: if (!config.get_health_check()) 859623: return true; 859623: 859623: val = json_object_append(obj, "Check", 3); 859623: if (!val) 859623: return false; 859623: 859623: obj = json_value_object(val); 859623: 859623: str = config.get_check_name(); 859623: if (!json_object_append(obj, "Name", 1, str.c_str())) 859623: return false; 859623: 859623: str = config.get_check_notes(); 859623: if (!json_object_append(obj, "Notes", 1, str.c_str())) 859623: return false; 859623: 859623: str = config.get_check_http_url(); 859623: if (!str.empty()) 859623: { 859623: if (!json_object_append(obj, "HTTP", 1, str.c_str())) 859623: return false; 859623: 859623: str = config.get_check_http_method(); 859623: if (!json_object_append(obj, "Method", 1, str.c_str())) 859623: return false; 859623: 859623: str = config.get_http_body(); 859623: if (!json_object_append(obj, "Body", 1, str.c_str())) 859623: return false; 859623: 859623: val = json_object_append(obj, "Header", 3); 859623: if (!val) 859623: return false; 859623: 859623: json_object_t *header_obj = json_value_object(val); 859623: 859623: for (const auto& header : *config.get_http_headers()) 859623: { 859623: val = json_object_append(header_obj, header.first.c_str(), 859623: 4); 859623: if (!val) 859623: return false; 859623: 859623: json_array_t *arr = json_value_array(val); 859623: 859623: for (const auto& value : header.second) 859623: { 859623: if (!json_array_append(arr, 1, value.c_str())) 859623: return false; 859623: } 859623: } 859623: } 859623: 859623: str = config.get_check_tcp(); 859623: if (!str.empty()) 859623: { 859623: if (!json_object_append(obj, "TCP", 1, str.c_str())) 859623: return false; 859623: } 859623: 859623: str = config.get_initial_status(); 859623: if (!json_object_append(obj, "Status", 1, str.c_str())) 859623: return false; 859623: 859623: str = convert_time_to_str(config.get_auto_deregister_time()); 859623: if (!json_object_append(obj, "DeregisterCriticalServiceAfter", 859623: 1, str.c_str())) 859623: return false; 859623: 859623: str = convert_time_to_str(config.get_check_interval()); 859623: if (!json_object_append(obj, "Interval", 1, str.c_str())) 859623: return false; 859623: 859623: str = convert_time_to_str(config.get_check_timeout()); 859623: if (!json_object_append(obj, "Timeout", 1, str.c_str())) 859623: return false; 859623: 859623: if (!json_object_append(obj, "SuccessBeforePassing", 2, 859623: (double)config.get_success_times())) 859623: return false; 859623: 859623: if (!json_object_append(obj, "FailuresBeforeCritical", 2, 859623: (double)config.get_failure_times())) 859623: return false; 859623: 859623: return true; 859623: } 859623: 859623: static bool create_register_request(const json_value_t *root, 859623: const struct ConsulService *service, 859623: const ConsulConfig& config) 859623: { 859623: const json_value_t *val; 859623: json_object_t *obj; 859623: 859623: obj = json_value_object(root); 859623: if (!obj) 859623: return false; 859623: 859623: if (!json_object_append(obj, "ID", 1, 859623: service->service_id.c_str())) 859623: return false; 859623: 859623: if (!json_object_append(obj, "Name", 1, 859623: service->service_name.c_str())) 859623: return false; 859623: 859623: if (!service->service_namespace.empty()) 859623: { 859623: if (!json_object_append(obj, "ns", 1, 859623: service->service_namespace.c_str())) 859623: return false; 859623: } 859623: 859623: val = json_object_append(obj, "Tags", 4); 859623: if (!val) 859623: return false; 859623: 859623: json_array_t *arr = json_value_array(val); 859623: 859623: for (const auto& tag : service->tags) 859623: { 859623: if (!json_array_append(arr, 1, tag.c_str())) 859623: return false; 859623: } 859623: 859623: if (!json_object_append(obj, "Address", 1, 859623: service->service_address.first.c_str())) 859623: return false; 859623: 859623: if (!json_object_append(obj, "Port", 2, 859623: (double)service->service_address.second)) 859623: return false; 859623: 859623: val = json_object_append(obj, "Meta", 3); 859623: if (!val) 859623: return false; 859623: 859623: json_object_t *meta_obj = json_value_object(val); 859623: 859623: for (const auto& meta_kv : service->meta) 859623: { 859623: if (!json_object_append(meta_obj, meta_kv.first.c_str(), 859623: 1, meta_kv.second.c_str())) 859623: return false; 859623: } 859623: 859623: int type = service->tag_override ? 5 : 6; 859623: if (!json_object_append(obj, "EnableTagOverride", type)) 859623: return false; 859623: 859623: val = json_object_append(obj, "TaggedAddresses", 3); 859623: if (!val) 859623: return false; 859623: 859623: json_object_t *tagged_obj = json_value_object(val); 859623: if (!tagged_obj) 859623: return false; 859623: 859623: if (!create_tagged_address(service->lan, "lan", tagged_obj)) 859623: return false; 859623: 859623: if (!create_tagged_address(service->lan_ipv4, "lan_ipv4", tagged_obj)) 859623: return false; 859623: 859623: if (!create_tagged_address(service->lan_ipv6, "lan_ipv6", tagged_obj)) 859623: return false; 859623: 859623: if (!create_tagged_address(service->virtual_address, "virtual", tagged_obj)) 859623: return false; 859623: 859623: if (!create_tagged_address(service->wan, "wan", tagged_obj)) 859623: return false; 859623: 859623: if (!create_tagged_address(service->wan_ipv4, "wan_ipv4", tagged_obj)) 859623: return false; 859623: 859623: if (!create_tagged_address(service->wan_ipv6, "wan_ipv6", tagged_obj)) 859623: return false; 859623: 859623: 859623: if (!create_health_check(config, obj)) 859623: return false; 859623: 859623: return true; 859623: } 859623: 859623: static bool parse_list_service_result(const json_value_t *root, 859623: std::vector& result) 859623: { 859623: const json_object_t *obj; 859623: const json_value_t *val; 859623: const json_array_t *arr; 859623: const char *key; 859623: const char *str; 859623: 859623: obj = json_value_object(root); 859623: if (!obj) 859623: return false; 859623: 859623: for (key = 859623: # 720 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 720 "/<>/src/client/WFConsulClient.cc" 859623: , val = 859623: # 720 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 720 "/<>/src/client/WFConsulClient.cc" 859623: ; key = json_object_next_name(key, obj), val = json_object_next_value(val, obj), val; ) 859623: { 859623: struct ConsulServiceTags instance; 859623: 859623: instance.service_name = key; 859623: arr = json_value_array(val); 859623: if (!arr) 859623: return false; 859623: 859623: const json_value_t *tag_val; 859623: for (tag_val = 859623: # 730 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 730 "/<>/src/client/WFConsulClient.cc" 859623: ; tag_val = json_array_next_value(tag_val, arr), tag_val; ) 859623: { 859623: str = json_value_string(tag_val); 859623: if (!str) 859623: return false; 859623: 859623: instance.tags.emplace_back(str); 859623: } 859623: 859623: result.emplace_back(std::move(instance)); 859623: } 859623: 859623: return true; 859623: } 859623: 859623: static bool parse_discover_node(const json_object_t *obj, 859623: struct ConsulServiceInstance *instance) 859623: { 859623: const json_value_t *val; 859623: const char *str; 859623: 859623: val = json_object_find("Node", obj); 859623: if (!val) 859623: return false; 859623: 859623: obj = json_value_object(val); 859623: if (!obj) 859623: return false; 859623: 859623: val = json_object_find("ID", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->node_id = str; 859623: val = json_object_find("Node", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->node_name = str; 859623: val = json_object_find("Address", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->node_address = str; 859623: val = json_object_find("Datacenter", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->dc = str; 859623: 859623: val = json_object_find("Meta", obj); 859623: if (!val) 859623: return false; 859623: 859623: const json_object_t *meta_obj = json_value_object(val); 859623: if (!meta_obj) 859623: return false; 859623: 859623: const char *meta_k; 859623: const json_value_t *meta_v; 859623: 859623: for (meta_k = 859623: # 807 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 807 "/<>/src/client/WFConsulClient.cc" 859623: , meta_v = 859623: # 807 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 807 "/<>/src/client/WFConsulClient.cc" 859623: ; meta_k = json_object_next_name(meta_k, meta_obj), meta_v = json_object_next_value(meta_v, meta_obj), meta_v; ) 859623: { 859623: str = json_value_string(meta_v); 859623: if (!str) 859623: return false; 859623: 859623: instance->node_meta[meta_k] = str; 859623: } 859623: 859623: val = json_object_find("CreateIndex", obj); 859623: if (val && json_value_type(val) == 2) 859623: instance->create_index = json_value_number(val); 859623: 859623: val = json_object_find("ModifyIndex", obj); 859623: if (val && json_value_type(val) == 2) 859623: instance->modify_index = json_value_number(val); 859623: 859623: return true; 859623: } 859623: 859623: static bool parse_tagged_address(const char *name, 859623: const json_value_t *tagged_val, 859623: ConsulAddress& tagged_address) 859623: { 859623: const json_value_t *val; 859623: const json_object_t *obj; 859623: const char *str; 859623: 859623: obj = json_value_object(tagged_val); 859623: if (!obj) 859623: return false; 859623: 859623: val = json_object_find(name, obj); 859623: if (!val) 859623: return false; 859623: 859623: obj = json_value_object(val); 859623: if (!obj) 859623: return false; 859623: 859623: val = json_object_find("Address", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: tagged_address.first = str; 859623: val = json_object_find("Port", obj); 859623: if (!val || json_value_type(val) != 2) 859623: return false; 859623: 859623: tagged_address.second = json_value_number(val); 859623: return true; 859623: } 859623: 859623: static bool parse_service(const json_object_t *obj, 859623: struct ConsulService *service) 859623: { 859623: const json_value_t *val; 859623: const char *str; 859623: 859623: val = json_object_find("Service", obj); 859623: if (!val) 859623: return false; 859623: 859623: obj = json_value_object(val); 859623: if (!obj) 859623: return false; 859623: 859623: val = json_object_find("ID", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: service->service_id = str; 859623: val = json_object_find("Service", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: service->service_name = str; 859623: val = json_object_find("Namespace", obj); 859623: if (val) 859623: { 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: service->service_namespace = str; 859623: } 859623: 859623: val = json_object_find("Address", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: service->service_address.first = str; 859623: 859623: val = json_object_find("Port", obj); 859623: if (!val) 859623: return false; 859623: 859623: service->service_address.second = json_value_number(val); 859623: val = json_object_find("TaggedAddresses", obj); 859623: if (!val) 859623: return false; 859623: 859623: parse_tagged_address("lan", val, service->lan); 859623: parse_tagged_address("lan_ipv4", val, service->lan_ipv4); 859623: parse_tagged_address("lan_ipv6", val, service->lan_ipv6); 859623: parse_tagged_address("virtual", val, service->virtual_address); 859623: parse_tagged_address("wan", val, service->wan); 859623: parse_tagged_address("wan_ipv4", val, service->wan_ipv4); 859623: parse_tagged_address("wan_ipv6", val, service->wan_ipv6); 859623: 859623: val = json_object_find("Tags", obj); 859623: if (!val) 859623: return false; 859623: 859623: const json_array_t *tags_arr = json_value_array(val); 859623: if (tags_arr) 859623: { 859623: const json_value_t *tags_value; 859623: for (tags_value = 859623: # 941 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 941 "/<>/src/client/WFConsulClient.cc" 859623: ; tags_value = json_array_next_value(tags_value, tags_arr), tags_value; ) 859623: { 859623: str = json_value_string(tags_value); 859623: if (!str) 859623: return false; 859623: 859623: service->tags.emplace_back(str); 859623: } 859623: } 859623: 859623: val = json_object_find("Meta", obj); 859623: if (!val) 859623: return false; 859623: 859623: const json_object_t *meta_obj = json_value_object(val); 859623: if (!meta_obj) 859623: return false; 859623: 859623: const char *meta_k; 859623: const json_value_t *meta_v; 859623: for (meta_k = 859623: # 961 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 961 "/<>/src/client/WFConsulClient.cc" 859623: , meta_v = 859623: # 961 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 961 "/<>/src/client/WFConsulClient.cc" 859623: ; meta_k = json_object_next_name(meta_k, meta_obj), meta_v = json_object_next_value(meta_v, meta_obj), meta_v; ) 859623: { 859623: str = json_value_string(meta_v); 859623: if (!str) 859623: return false; 859623: 859623: service->meta[meta_k] = str; 859623: } 859623: 859623: val = json_object_find("EnableTagOverride", obj); 859623: if (val) 859623: service->tag_override = (json_value_type(val) == 5); 859623: 859623: return true; 859623: } 859623: 859623: static bool parse_health_check(const json_object_t *obj, 859623: struct ConsulServiceInstance *instance) 859623: { 859623: const json_value_t *val; 859623: const char *str; 859623: 859623: val = json_object_find("Checks", obj); 859623: if (!val) 859623: return false; 859623: 859623: const json_array_t *check_arr = json_value_array(val); 859623: if (!check_arr) 859623: return false; 859623: 859623: const json_value_t *arr_val; 859623: for (arr_val = 859623: # 992 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 992 "/<>/src/client/WFConsulClient.cc" 859623: ; arr_val = json_array_next_value(arr_val, check_arr), arr_val; ) 859623: { 859623: obj = json_value_object(arr_val); 859623: if (!obj) 859623: return false; 859623: 859623: val = json_object_find("ServiceName", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: std::string check_service_name = str; 859623: val = json_object_find("ServiceID", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: std::string check_service_id = str; 859623: if (check_service_id.empty() || check_service_name.empty()) 859623: continue; 859623: 859623: val = json_object_find("CheckID", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->check_id = str; 859623: 859623: val = json_object_find("Name", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->check_name = str; 859623: val = json_object_find("Status", obj); 859623: if (!val) 859623: return false; 859623: 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->check_status = str; 859623: val = json_object_find("Notes", obj); 859623: if (val) 859623: { 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->check_notes = str; 859623: } 859623: 859623: val = json_object_find("Output", obj); 859623: if (val) 859623: { 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->check_output = str; 859623: } 859623: 859623: val = json_object_find("Type", obj); 859623: if (val) 859623: { 859623: str = json_value_string(val); 859623: if (!str) 859623: return false; 859623: 859623: instance->check_type = str; 859623: } 859623: 859623: break; 859623: } 859623: 859623: return true; 859623: } 859623: 859623: static bool parse_discover_result(const json_value_t *root, 859623: std::vector& result) 859623: { 859623: const json_array_t *arr = json_value_array(root); 859623: const json_value_t *val; 859623: const json_object_t *obj; 859623: 859623: if (!arr) 859623: return false; 859623: 859623: for (val = 859623: # 1093 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 1093 "/<>/src/client/WFConsulClient.cc" 859623: ; val = json_array_next_value(val, arr), val; ) 859623: { 859623: struct ConsulServiceInstance instance; 859623: 859623: obj = json_value_object(val); 859623: if (!obj) 859623: return false; 859623: 859623: if (!parse_discover_node(obj, &instance)) 859623: return false; 859623: 859623: if (!parse_service(obj, &instance.service)) 859623: return false; 859623: 859623: parse_health_check(obj, &instance); 859623: result.emplace_back(std::move(instance)); 859623: } 859623: 859623: return true; 859623: } 859623: 859623: static void print_json_string(const char *str, std::string& json_str) 859623: { 859623: json_str += "\""; 859623: while (*str) 859623: { 859623: switch (*str) 859623: { 859623: case '\r': 859623: json_str += "\\r"; 859623: break; 859623: case '\n': 859623: json_str += "\\n"; 859623: break; 859623: case '\f': 859623: json_str += "\\f"; 859623: break; 859623: case '\b': 859623: json_str += "\\b"; 859623: break; 859623: case '\"': 859623: json_str += "\\\""; 859623: break; 859623: case '\t': 859623: json_str += "\\t"; 859623: break; 859623: case '\\': 859623: json_str += "\\\\"; 859623: break; 859623: default: 859623: if ((unsigned char)*str < 0x20) 859623: { 859623: char buf[8]; 859623: sprintf(buf, "\\u00%02x", *str); 859623: json_str += buf; 859623: } 859623: else 859623: json_str += *str; 859623: break; 859623: } 859623: str++; 859623: } 859623: json_str += "\""; 859623: } 859623: 859623: static void print_json_number(double number, std::string& json_str) 859623: { 859623: long long integer = number; 859623: 859623: if (integer == number) 859623: json_str += std::to_string(integer); 859623: else 859623: json_str += std::to_string(number); 859623: } 859623: 859623: static void print_json_object(const json_object_t *obj, int depth, 859623: std::string& json_str) 859623: { 859623: const char *name; 859623: const json_value_t *val; 859623: int n = 0; 859623: int i; 859623: 859623: json_str += "{\n"; 859623: for (name = 859623: # 1177 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 1177 "/<>/src/client/WFConsulClient.cc" 859623: , val = 859623: # 1177 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 1177 "/<>/src/client/WFConsulClient.cc" 859623: ; name = json_object_next_name(name, obj), val = json_object_next_value(val, obj), val; ) 859623: { 859623: if (n != 0) 859623: json_str += ",\n"; 859623: 859623: n++; 859623: for (i = 0; i < depth + 1; i++) 859623: json_str += " "; 859623: 859623: print_json_string(name, json_str); 859623: json_str += ": "; 859623: print_json_value(val, depth + 1, json_str); 859623: } 859623: 859623: json_str += "\n"; 859623: for (i = 0; i < depth; i++) 859623: json_str += " "; 859623: 859623: json_str += "}"; 859623: } 859623: 859623: static void print_json_array(const json_array_t *arr, int depth, 859623: std::string& json_str) 859623: { 859623: const json_value_t *val; 859623: int n = 0; 859623: int i; 859623: 859623: json_str += "[\n"; 859623: for (val = 859623: # 1206 "/<>/src/client/WFConsulClient.cc" 3 4 859623: __null 859623: # 1206 "/<>/src/client/WFConsulClient.cc" 859623: ; val = json_array_next_value(val, arr), val; ) 859623: { 859623: if (n != 0) 859623: json_str += ",\n"; 859623: 859623: n++; 859623: for (i = 0; i < depth + 1; i++) 859623: json_str += " "; 859623: 859623: print_json_value(val, depth + 1, json_str); 859623: } 859623: 859623: json_str += "\n"; 859623: for (i = 0; i < depth; i++) 859623: json_str += " "; 859623: 859623: json_str += "]"; 859623: } 859623: 859623: static void print_json_value(const json_value_t *val, int depth, 859623: std::string& json_str) 859623: { 859623: switch (json_value_type(val)) 859623: { 859623: case 1: 859623: print_json_string(json_value_string(val), json_str); 859623: break; 859623: case 2: 859623: print_json_number(json_value_number(val), json_str); 859623: break; 859623: case 3: 859623: print_json_object(json_value_object(val), depth, json_str); 859623: break; 859623: case 4: 859623: print_json_array(json_value_array(val), depth, json_str); 859623: break; 859623: case 5: 859623: json_str += "true"; 859623: break; 859623: case 6: 859623: json_str += "false"; 859623: break; 859623: case 7: 859623: json_str += "null"; 859623: break; 859623: } 859623: } === END GCC DUMP === make[3]: *** [src/client/CMakeFiles/client.dir/build.make:138: src/client/CMakeFiles/client.dir/WFConsulClient.cc.o] Error 1 make[3]: Leaving directory '/<>/obj-arm-linux-gnueabi' make[2]: *** [CMakeFiles/Makefile2:632: src/client/CMakeFiles/client.dir/all] Error 2 make[2]: Leaving directory '/<>/obj-arm-linux-gnueabi' make[1]: *** [Makefile:139: all] Error 2 make[1]: Leaving directory '/<>/obj-arm-linux-gnueabi' dh_auto_build: error: cd obj-arm-linux-gnueabi && make -j1 INSTALL="install --strip-program=true" VERBOSE=1 returned exit code 2 make: *** [debian/rules:8: binary-arch] Error 25 dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit status 2 -------------------------------------------------------------------------------- Build finished at 2025-09-24T04:15:40Z +------------------------------------------------------------------------------+ | Finished Timed Build Commands | +------------------------------------------------------------------------------+ rm -Rf /<>/ ----------------------------------------------- I: Finished running 'rm -Rf /<>/'. Finished processing commands. -------------------------------------------------------------------------------- Finished -------- +------------------------------------------------------------------------------+ | Cleanup | +------------------------------------------------------------------------------+ Purging /<> Not cleaning session: cloned chroot in use E: Build failure (dpkg-buildpackage died) +------------------------------------------------------------------------------+ | Summary | +------------------------------------------------------------------------------+ Build Architecture: amd64 Build Profiles: cross nocheck Build Type: any Build-Space: n/a Build-Time: 12 Distribution: unstable Fail-Stage: build Foreign Architectures: armel Host Architecture: armel Install-Time: 13 Job: workflow_0.11.11-1 Machine Architecture: amd64 Package: workflow Package-Time: 40 Source-Version: 0.11.11-1 Space: n/a Status: attempted Version: 0.11.11-1 -------------------------------------------------------------------------------- Finished at 2025-09-24T04:15:40Z Build needed 00:00:40, no disk space