{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.YMHYBPGH/b1/libpqxx_7.10.0-1_arm64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.YMHYBPGH/b2/libpqxx_7.10.0-1_arm64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,5 +1,5 @@\n \n 7801c86399584b97e3450569033eb6a6 2463844 debug optional libpqxx-7.10-dbgsym_7.10.0-1_arm64.deb\n 0441684e14f161ffe34b7f9ab16f60c1 170636 libs optional libpqxx-7.10_7.10.0-1_arm64.deb\n 72ab3a01813b0378c46486e230bae225 360248 libdevel optional libpqxx-dev_7.10.0-1_arm64.deb\n- fdc97815e1695599d84cd2860216e6ac 2637416 doc optional libpqxx-doc_7.10.0-1_all.deb\n+ a5d7341b4425b850feb9f797a37dcc52 2643604 doc optional libpqxx-doc_7.10.0-1_all.deb\n"}, {"source1": "libpqxx-doc_7.10.0-1_all.deb", "source2": "libpqxx-doc_7.10.0-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-01-07 17:35:40.000000 debian-binary\n--rw-r--r-- 0 0 0 32420 2025-01-07 17:35:40.000000 control.tar.xz\n--rw-r--r-- 0 0 0 2604804 2025-01-07 17:35:40.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 32396 2025-01-07 17:35:40.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 2611016 2025-01-07 17:35:40.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: libpqxx-doc\n Source: libpqxx\n Version: 7.10.0-1\n Architecture: all\n Maintainer: Debian PostgreSQL team \n-Installed-Size: 13546\n+Installed-Size: 13779\n Suggests: libpqxx-dev (>= 7.10.0-1)\n Section: doc\n Priority: optional\n Multi-Arch: foreign\n Homepage: https://github.com/jtv/libpqxx/\n Description: C++ library to connect to PostgreSQL (documentation)\n C++ library to enable user programs to communicate with\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -2,19 +2,19 @@\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 17:35:40.000000 ./usr/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 17:35:40.000000 ./usr/share/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 17:35:40.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/\n -rw-r--r-- 0 root (0) root (0) 1305 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 2807 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/\n--rw-r--r-- 0 root (0) root (0) 18206 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/accessing-results.html\n+-rw-r--r-- 0 root (0) root (0) 18203 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/accessing-results.html\n -rw-r--r-- 0 root (0) root (0) 81499 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/annotated.html\n -rw-r--r-- 0 root (0) root (0) 22300 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/annotated_dup.js\n--rw-r--r-- 0 root (0) root (0) 63073 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/array-composite_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 87535 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/array_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 77193 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/array-composite_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 88346 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/array_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 674 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/bc_s.png\n -rw-r--r-- 0 root (0) root (0) 634 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/bc_sd.png\n -rw-r--r-- 0 root (0) root (0) 8304 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/binary.html\n -rw-r--r-- 0 root (0) root (0) 47000 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/binarystring_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 38775 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/blob_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 12823 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/callgate_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 41063 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classes.html\n@@ -114,162 +114,162 @@\n -rw-r--r-- 0 root (0) root (0) 8397 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1field__streambuf__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 370 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1field__streambuf__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 8397 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1field__streambuf__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 6124 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1inclusive__bound-members.html\n -rw-r--r-- 0 root (0) root (0) 7672 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1inclusive__bound.html\n -rw-r--r-- 0 root (0) root (0) 247 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1inclusive__bound.js\n -rw-r--r-- 0 root (0) root (0) 35149 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction-members.html\n--rw-r--r-- 0 root (0) root (0) 79173 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction.html\n+-rw-r--r-- 0 root (0) root (0) 79623 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction.html\n -rw-r--r-- 0 root (0) root (0) 871 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 8578 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 871 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 8578 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 35514 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction-members.html\n--rw-r--r-- 0 root (0) root (0) 81455 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction.html\n+-rw-r--r-- 0 root (0) root (0) 82175 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction.html\n -rw-r--r-- 0 root (0) root (0) 174 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction.js\n -rw-r--r-- 0 root (0) root (0) 853 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 8172 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 853 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 8172 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 5689 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate-members.html\n--rw-r--r-- 0 root (0) root (0) 11492 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate.html\n+-rw-r--r-- 0 root (0) root (0) 12302 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate.html\n -rw-r--r-- 0 root (0) root (0) 343 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate.js\n -rw-r--r-- 0 root (0) root (0) 1550 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 34318 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 7279 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1dynamic__params-members.html\n--rw-r--r-- 0 root (0) root (0) 13232 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1dynamic__params.html\n+-rw-r--r-- 0 root (0) root (0) 18632 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1dynamic__params.html\n -rw-r--r-- 0 root (0) root (0) 510 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1dynamic__params.js\n -rw-r--r-- 0 root (0) root (0) 4697 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler-members.html\n--rw-r--r-- 0 root (0) root (0) 7676 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler.html\n+-rw-r--r-- 0 root (0) root (0) 7766 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler.html\n -rw-r--r-- 0 root (0) root (0) 421 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7053 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 421 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7053 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 5126 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject-members.html\n--rw-r--r-- 0 root (0) root (0) 8082 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject.html\n+-rw-r--r-- 0 root (0) root (0) 8262 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject.html\n -rw-r--r-- 0 root (0) root (0) 417 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7313 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 417 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7313 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4782 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver-members.html\n--rw-r--r-- 0 root (0) root (0) 7855 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver.html\n+-rw-r--r-- 0 root (0) root (0) 7945 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver.html\n -rw-r--r-- 0 root (0) root (0) 437 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7793 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 437 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7793 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4661 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline-members.html\n--rw-r--r-- 0 root (0) root (0) 7596 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline.html\n+-rw-r--r-- 0 root (0) root (0) 7686 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline.html\n -rw-r--r-- 0 root (0) root (0) 411 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 6747 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 411 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 6747 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4693 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor-members.html\n--rw-r--r-- 0 root (0) root (0) 7654 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor.html\n+-rw-r--r-- 0 root (0) root (0) 7744 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor.html\n -rw-r--r-- 0 root (0) root (0) 414 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7164 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 414 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7164 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4674 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to-members.html\n--rw-r--r-- 0 root (0) root (0) 7625 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to.html\n+-rw-r--r-- 0 root (0) root (0) 7715 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to.html\n -rw-r--r-- 0 root (0) root (0) 412 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7210 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 412 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7210 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4693 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction-members.html\n--rw-r--r-- 0 root (0) root (0) 7658 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction.html\n+-rw-r--r-- 0 root (0) root (0) 7748 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction.html\n -rw-r--r-- 0 root (0) root (0) 417 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7047 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 417 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7047 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 5204 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject-members.html\n--rw-r--r-- 0 root (0) root (0) 8247 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject.html\n+-rw-r--r-- 0 root (0) root (0) 8427 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject.html\n -rw-r--r-- 0 root (0) root (0) 458 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7447 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 458 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7447 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4695 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection-members.html\n--rw-r--r-- 0 root (0) root (0) 7674 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection.html\n+-rw-r--r-- 0 root (0) root (0) 7764 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection.html\n -rw-r--r-- 0 root (0) root (0) 421 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7240 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 421 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7240 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4758 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream-members.html\n--rw-r--r-- 0 root (0) root (0) 7819 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream.html\n+-rw-r--r-- 0 root (0) root (0) 7909 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream.html\n -rw-r--r-- 0 root (0) root (0) 437 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7777 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 437 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7777 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4761 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator-members.html\n--rw-r--r-- 0 root (0) root (0) 7812 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator.html\n+-rw-r--r-- 0 root (0) root (0) 7902 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator.html\n -rw-r--r-- 0 root (0) root (0) 432 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 8430 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 432 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 8430 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4647 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection-members.html\n--rw-r--r-- 0 root (0) root (0) 7612 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection.html\n+-rw-r--r-- 0 root (0) root (0) 7702 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection.html\n -rw-r--r-- 0 root (0) root (0) 432 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 6612 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 432 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 6612 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 5045 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation-members.html\n--rw-r--r-- 0 root (0) root (0) 8009 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation.html\n+-rw-r--r-- 0 root (0) root (0) 8189 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation.html\n -rw-r--r-- 0 root (0) root (0) 428 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 6765 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 428 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 6765 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4629 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline-members.html\n--rw-r--r-- 0 root (0) root (0) 7574 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline.html\n+-rw-r--r-- 0 root (0) root (0) 7664 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline.html\n -rw-r--r-- 0 root (0) root (0) 428 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 6516 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 428 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 6516 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4661 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor-members.html\n--rw-r--r-- 0 root (0) root (0) 7634 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor.html\n+-rw-r--r-- 0 root (0) root (0) 7724 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor.html\n -rw-r--r-- 0 root (0) root (0) 432 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 6729 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 432 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 6729 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4701 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor-members.html\n--rw-r--r-- 0 root (0) root (0) 7672 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor.html\n+-rw-r--r-- 0 root (0) root (0) 7762 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor.html\n -rw-r--r-- 0 root (0) root (0) 416 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7633 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 416 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7633 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4754 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus-members.html\n--rw-r--r-- 0 root (0) root (0) 7805 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus.html\n+-rw-r--r-- 0 root (0) root (0) 7895 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus.html\n -rw-r--r-- 0 root (0) root (0) 435 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7680 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 435 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7680 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 7351 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iter-members.html\n--rw-r--r-- 0 root (0) root (0) 9799 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iter.html\n+-rw-r--r-- 0 root (0) root (0) 11149 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iter.html\n -rw-r--r-- 0 root (0) root (0) 264 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iter.js\n -rw-r--r-- 0 root (0) root (0) 5918 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iteration-members.html\n--rw-r--r-- 0 root (0) root (0) 7170 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iteration.html\n+-rw-r--r-- 0 root (0) root (0) 7530 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iteration.html\n -rw-r--r-- 0 root (0) root (0) 14951 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor-members.html\n--rw-r--r-- 0 root (0) root (0) 28230 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor.html\n+-rw-r--r-- 0 root (0) root (0) 30480 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor.html\n -rw-r--r-- 0 root (0) root (0) 358 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor.js\n -rw-r--r-- 0 root (0) root (0) 444 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 5094 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 444 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 5094 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 7922 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__from__input__iterator-members.html\n--rw-r--r-- 0 root (0) root (0) 10688 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__from__input__iterator.html\n+-rw-r--r-- 0 root (0) root (0) 11948 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__from__input__iterator.html\n -rw-r--r-- 0 root (0) root (0) 455 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__from__input__iterator.js\n -rw-r--r-- 0 root (0) root (0) 6463 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__input__iteration-members.html\n--rw-r--r-- 0 root (0) root (0) 8342 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__input__iteration.html\n+-rw-r--r-- 0 root (0) root (0) 8702 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__input__iteration.html\n -rw-r--r-- 0 root (0) root (0) 9218 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query-members.html\n--rw-r--r-- 0 root (0) root (0) 18228 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query.html\n+-rw-r--r-- 0 root (0) root (0) 19938 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query.html\n -rw-r--r-- 0 root (0) root (0) 796 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query.js\n -rw-r--r-- 0 root (0) root (0) 873 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 9824 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 550 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 6505 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 9288 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__input__iterator-members.html\n--rw-r--r-- 0 root (0) root (0) 14324 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__input__iterator.html\n+-rw-r--r-- 0 root (0) root (0) 15944 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__input__iterator.html\n -rw-r--r-- 0 root (0) root (0) 694 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__input__iterator.js\n -rw-r--r-- 0 root (0) root (0) 9668 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject-members.html\n -rw-r--r-- 0 root (0) root (0) 33645 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject.html\n -rw-r--r-- 0 root (0) root (0) 1352 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject.js\n -rw-r--r-- 0 root (0) root (0) 426 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 5162 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 12045 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject__streambuf-members.html\n@@ -373,33 +373,33 @@\n -rw-r--r-- 0 root (0) root (0) 18002 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1zview.html\n -rw-r--r-- 0 root (0) root (0) 700 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1zview.js\n -rw-r--r-- 0 root (0) root (0) 365 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1zview__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 4108 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1zview__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 634 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1zview__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 5643 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1zview__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 132 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/closed.png\n--rw-r--r-- 0 root (0) root (0) 27680 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/composite_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 12353 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/concat_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 28395 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/composite_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 15148 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/concat_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 5997 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/config-internal-autotools_8h_source.html\n -rw-r--r-- 0 root (0) root (0) 5750 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/config-internal-compiler_8h_source.html\n -rw-r--r-- 0 root (0) root (0) 4812 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/config-public-autotools_8h_source.html\n -rw-r--r-- 0 root (0) root (0) 5574 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/config-public-compiler_8h_source.html\n -rw-r--r-- 0 root (0) root (0) 22712 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/config_8h_source.html\n -rw-r--r-- 0 root (0) root (0) 10153 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-errorhandler_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 13234 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-largeobject_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 10660 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-notification__receiver_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 10344 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-pipeline_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 9689 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-sql__cursor_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 8829 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-stream__from_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 8759 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-stream__to_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 13910 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection-transaction_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 137398 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 260956 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/conversions_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 139049 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/connection_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 271863 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/conversions_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 59527 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/cursor_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 36018 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/datatypes.html\n+-rw-r--r-- 0 root (0) root (0) 36021 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/datatypes.html\n -rw-r--r-- 0 root (0) root (0) 13989 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dbtransaction_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 19653 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/deprecated.html\n -rw-r--r-- 0 root (0) root (0) 5222 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dir_09456df80b5baeba1147d2b9ef5f002c.html\n -rw-r--r-- 0 root (0) root (0) 399 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dir_09456df80b5baeba1147d2b9ef5f002c_dep.map\n -rw-r--r-- 0 root (0) root (0) 1857 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dir_09456df80b5baeba1147d2b9ef5f002c_dep.png\n -rw-r--r-- 0 root (0) root (0) 11101 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dir_3abbb4e2076021b5d2239498be5fcb30.html\n -rw-r--r-- 0 root (0) root (0) 1544 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dir_3abbb4e2076021b5d2239498be5fcb30.js\n@@ -418,16 +418,16 @@\n -rw-r--r-- 0 root (0) root (0) 4580 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dir_d44c64559bbebec7f509842c48db8b23.html\n -rw-r--r-- 0 root (0) root (0) 147 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dir_d44c64559bbebec7f509842c48db8b23.js\n -rw-r--r-- 0 root (0) root (0) 1503 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/doc.svg\n -rw-r--r-- 0 root (0) root (0) 1503 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/docd.svg\n -rw-r--r-- 0 root (0) root (0) 45631 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/doxygen.css\n -rw-r--r-- 0 root (0) root (0) 15461 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/doxygen.svg\n -rw-r--r-- 0 root (0) root (0) 7704 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/dynsections.js\n--rw-r--r-- 0 root (0) root (0) 11901 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/encoding__group_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 137795 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/encodings_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 12928 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/encoding__group_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 220982 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/encodings_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 8209 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/errorhandler-connection_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 18589 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/errorhandler_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 10026 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/escaping.html\n -rw-r--r-- 0 root (0) root (0) 144139 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/except_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 85079 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/field_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 25190 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/files.html\n -rw-r--r-- 0 root (0) root (0) 223 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/files_dup.js\n@@ -800,47 +800,47 @@\n -rw-r--r-- 0 root (0) root (0) 3388 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/inherit_graph_98.png\n -rw-r--r-- 0 root (0) root (0) 231 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/inherit_graph_99.map\n -rw-r--r-- 0 root (0) root (0) 2408 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/inherit_graph_99.png\n -rw-r--r-- 0 root (0) root (0) 84788 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/inherits.html\n -rw-r--r-- 0 root (0) root (0) 11272 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/isolation_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 176630 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/jquery.js\n -rw-r--r-- 0 root (0) root (0) 97246 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/largeobject_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 9053 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/libpq-forward_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 9976 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/libpq-forward_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 5925 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/menu.js\n -rw-r--r-- 0 root (0) root (0) 6488 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/menudata.js\n -rw-r--r-- 0 root (0) root (0) 582 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/minus.svg\n -rw-r--r-- 0 root (0) root (0) 582 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/minusd.svg\n -rw-r--r-- 0 root (0) root (0) 18732 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacemembers.html\n -rw-r--r-- 0 root (0) root (0) 4523 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacemembers_enum.html\n -rw-r--r-- 0 root (0) root (0) 4381 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacemembers_eval.html\n -rw-r--r-- 0 root (0) root (0) 14784 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacemembers_func.html\n -rw-r--r-- 0 root (0) root (0) 6302 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacemembers_type.html\n -rw-r--r-- 0 root (0) root (0) 4402 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacemembers_vars.html\n -rw-r--r-- 0 root (0) root (0) 205143 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx.html\n -rw-r--r-- 0 root (0) root (0) 21958 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx.js\n--rw-r--r-- 0 root (0) root (0) 127100 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal.html\n+-rw-r--r-- 0 root (0) root (0) 164605 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal.html\n -rw-r--r-- 0 root (0) root (0) 10672 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal.js\n--rw-r--r-- 0 root (0) root (0) 7435 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal_1_1pq.html\n+-rw-r--r-- 0 root (0) root (0) 8940 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal_1_1pq.html\n -rw-r--r-- 0 root (0) root (0) 4456 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1prepare.html\n -rw-r--r-- 0 root (0) root (0) 379 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_structpqxx_1_1notification_dup.js\n -rw-r--r-- 0 root (0) root (0) 319 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_structpqxx_1_1thread__safety__model_dup.js\n -rw-r--r-- 0 root (0) root (0) 75543 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespaces.html\n -rw-r--r-- 0 root (0) root (0) 79 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/namespaces_dup.js\n -rw-r--r-- 0 root (0) root (0) 155 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/nav_f.png\n -rw-r--r-- 0 root (0) root (0) 168 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/nav_fd.png\n -rw-r--r-- 0 root (0) root (0) 95 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/nav_g.png\n -rw-r--r-- 0 root (0) root (0) 98 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/nav_h.png\n -rw-r--r-- 0 root (0) root (0) 111 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/nav_hd.png\n -rw-r--r-- 0 root (0) root (0) 2167 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtree.css\n -rw-r--r-- 0 root (0) root (0) 15935 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtree.js\n -rw-r--r-- 0 root (0) root (0) 5968 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreedata.js\n--rw-r--r-- 0 root (0) root (0) 19107 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex0.js\n+-rw-r--r-- 0 root (0) root (0) 19104 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex0.js\n -rw-r--r-- 0 root (0) root (0) 21285 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex1.js\n -rw-r--r-- 0 root (0) root (0) 19510 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex2.js\n--rw-r--r-- 0 root (0) root (0) 15186 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex3.js\n+-rw-r--r-- 0 root (0) root (0) 15189 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex3.js\n -rw-r--r-- 0 root (0) root (0) 17784 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex4.js\n -rw-r--r-- 0 root (0) root (0) 18023 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex5.js\n -rw-r--r-- 0 root (0) root (0) 2477 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex6.js\n -rw-r--r-- 0 root (0) root (0) 13256 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/nontransaction_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 16353 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/notification_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 122 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/open.png\n -rw-r--r-- 0 root (0) root (0) 6420 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/pages.html\n@@ -849,51 +849,51 @@\n -rw-r--r-- 0 root (0) root (0) 5810 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/performance.html\n -rw-r--r-- 0 root (0) root (0) 29855 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/pipeline_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 696 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/plus.svg\n -rw-r--r-- 0 root (0) root (0) 696 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/plusd.svg\n -rw-r--r-- 0 root (0) root (0) 8893 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/pqxx-source_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 14803 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/prepared.html\n -rw-r--r-- 0 root (0) root (0) 9364 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/prepared__statement_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 101844 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/range_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 102455 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/range_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 5685 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/resize.js\n -rw-r--r-- 0 root (0) root (0) 8660 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result-connection_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 11425 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result-creation_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 8756 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result-pipeline_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 8591 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result-sql__cursor_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 63743 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 29407 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result__iter_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 64354 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 31058 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result__iter_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 62185 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/result__iterator_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 19467 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/robusttransaction_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 91997 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/row_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 92608 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/row_8hxx_source.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/\n -rw-r--r-- 0 root (0) root (0) 7545 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_0.js\n -rw-r--r-- 0 root (0) root (0) 4729 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_1.js\n--rw-r--r-- 0 root (0) root (0) 6981 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_10.js\n--rw-r--r-- 0 root (0) root (0) 21312 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_11.js\n--rw-r--r-- 0 root (0) root (0) 7527 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_12.js\n+-rw-r--r-- 0 root (0) root (0) 6978 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_10.js\n+-rw-r--r-- 0 root (0) root (0) 21617 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_11.js\n+-rw-r--r-- 0 root (0) root (0) 7531 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_12.js\n -rw-r--r-- 0 root (0) root (0) 2858 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_13.js\n -rw-r--r-- 0 root (0) root (0) 906 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_14.js\n--rw-r--r-- 0 root (0) root (0) 1395 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_15.js\n+-rw-r--r-- 0 root (0) root (0) 1394 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_15.js\n -rw-r--r-- 0 root (0) root (0) 94 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_16.js\n -rw-r--r-- 0 root (0) root (0) 1207 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_17.js\n -rw-r--r-- 0 root (0) root (0) 319 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_18.js\n -rw-r--r-- 0 root (0) root (0) 15544 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_2.js\n--rw-r--r-- 0 root (0) root (0) 4604 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_3.js\n+-rw-r--r-- 0 root (0) root (0) 4603 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_3.js\n -rw-r--r-- 0 root (0) root (0) 9410 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_4.js\n--rw-r--r-- 0 root (0) root (0) 7171 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_5.js\n+-rw-r--r-- 0 root (0) root (0) 7172 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_5.js\n -rw-r--r-- 0 root (0) root (0) 5455 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_6.js\n -rw-r--r-- 0 root (0) root (0) 1038 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_7.js\n--rw-r--r-- 0 root (0) root (0) 5821 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_8.js\n+-rw-r--r-- 0 root (0) root (0) 5822 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_8.js\n -rw-r--r-- 0 root (0) root (0) 147 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_9.js\n -rw-r--r-- 0 root (0) root (0) 2895 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_a.js\n--rw-r--r-- 0 root (0) root (0) 1395 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_b.js\n+-rw-r--r-- 0 root (0) root (0) 1394 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_b.js\n -rw-r--r-- 0 root (0) root (0) 9601 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_c.js\n--rw-r--r-- 0 root (0) root (0) 9128 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_d.js\n+-rw-r--r-- 0 root (0) root (0) 9162 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_d.js\n -rw-r--r-- 0 root (0) root (0) 6432 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_e.js\n--rw-r--r-- 0 root (0) root (0) 4653 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_f.js\n+-rw-r--r-- 0 root (0) root (0) 4663 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/all_f.js\n -rw-r--r-- 0 root (0) root (0) 875 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/classes_0.js\n -rw-r--r-- 0 root (0) root (0) 1086 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/classes_1.js\n -rw-r--r-- 0 root (0) root (0) 975 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/classes_10.js\n -rw-r--r-- 0 root (0) root (0) 835 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/classes_11.js\n -rw-r--r-- 0 root (0) root (0) 157 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/classes_12.js\n -rw-r--r-- 0 root (0) root (0) 85 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/classes_13.js\n -rw-r--r-- 0 root (0) root (0) 3820 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/classes_2.js\n@@ -1007,20 +1007,20 @@\n -rw-r--r-- 0 root (0) root (0) 280 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/variables_b.js\n -rw-r--r-- 0 root (0) root (0) 124 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/variables_c.js\n -rw-r--r-- 0 root (0) root (0) 158 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/search/variables_d.js\n -rw-r--r-- 0 root (0) root (0) 27575 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/separated__list_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 316 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/splitbar.png\n -rw-r--r-- 0 root (0) root (0) 284 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/splitbard.png\n -rw-r--r-- 0 root (0) root (0) 20884 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/sql__cursor_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 22632 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/statement__parameters_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 69161 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/strconv_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 26259 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/statement__parameters_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 70604 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/strconv_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 55559 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__from_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 22603 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__iterator_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 49763 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__query_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 48948 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__query__impl_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 24150 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__iterator_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 63374 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__query_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 53019 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__query__impl_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 57527 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/stream__to_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 14471 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/streams.html\n -rw-r--r-- 0 root (0) root (0) 389 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1argument__error__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 4983 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1argument__error__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 389 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1argument__error__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 4983 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1argument__error__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 697 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1broken__connection__coll__graph.map\n@@ -1094,62 +1094,62 @@\n -rw-r--r-- 0 root (0) root (0) 1461 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1insufficient__resources__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 15359 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1insufficient__resources__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 946 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1integrity__constraint__violation__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 9782 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1integrity__constraint__violation__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 2284 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1integrity__constraint__violation__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 25567 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1integrity__constraint__violation__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 6703 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1array__string__traits-members.html\n--rw-r--r-- 0 root (0) root (0) 8098 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1array__string__traits.html\n+-rw-r--r-- 0 root (0) root (0) 10348 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1array__string__traits.html\n -rw-r--r-- 0 root (0) root (0) 6343 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1c__params-members.html\n--rw-r--r-- 0 root (0) root (0) 10014 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1c__params.html\n+-rw-r--r-- 0 root (0) root (0) 10734 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1c__params.html\n -rw-r--r-- 0 root (0) root (0) 560 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1c__params.js\n -rw-r--r-- 0 root (0) root (0) 7544 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion-members.html\n--rw-r--r-- 0 root (0) root (0) 9374 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion.html\n+-rw-r--r-- 0 root (0) root (0) 12344 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion.html\n -rw-r--r-- 0 root (0) root (0) 7619 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1enum__traits-members.html\n--rw-r--r-- 0 root (0) root (0) 10337 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1enum__traits.html\n+-rw-r--r-- 0 root (0) root (0) 13217 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1enum__traits.html\n -rw-r--r-- 0 root (0) root (0) 7159 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1float__traits-members.html\n--rw-r--r-- 0 root (0) root (0) 9260 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1float__traits.html\n+-rw-r--r-- 0 root (0) root (0) 12050 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1float__traits.html\n -rw-r--r-- 0 root (0) root (0) 6257 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from-members.html\n--rw-r--r-- 0 root (0) root (0) 12100 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from.html\n+-rw-r--r-- 0 root (0) root (0) 12280 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from.html\n -rw-r--r-- 0 root (0) root (0) 419 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 7248 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 419 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 7248 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 4653 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner-members.html\n--rw-r--r-- 0 root (0) root (0) 6353 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner.html\n+-rw-r--r-- 0 root (0) root (0) 6893 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner.html\n -rw-r--r-- 0 root (0) root (0) 4901 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1BIG5_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5596 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1BIG5_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6136 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1BIG5_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4921 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5611 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6151 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4921 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5611 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6151 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4921 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__KR_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5611 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__KR_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6151 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__KR_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4921 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5611 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6151 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4925 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GB18030_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5614 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GB18030_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6154 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GB18030_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4893 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GBK_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5590 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GBK_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6130 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GBK_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4909 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1JOHAB_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5602 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1JOHAB_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6142 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1JOHAB_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4927 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MONOBYTE_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5624 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MONOBYTE_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6164 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MONOBYTE_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4977 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MULE__INTERNAL_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5653 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MULE__INTERNAL_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6193 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MULE__INTERNAL_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4901 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1SJIS_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5596 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1SJIS_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6136 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1SJIS_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4893 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5590 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6130 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4.html\n -rw-r--r-- 0 root (0) root (0) 4901 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4-members.html\n--rw-r--r-- 0 root (0) root (0) 5596 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4.html\n+-rw-r--r-- 0 root (0) root (0) 6136 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4.html\n -rw-r--r-- 0 root (0) root (0) 6832 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1integral__traits-members.html\n--rw-r--r-- 0 root (0) root (0) 8645 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1integral__traits.html\n+-rw-r--r-- 0 root (0) root (0) 11165 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1integral__traits.html\n -rw-r--r-- 0 root (0) root (0) 6775 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1notice__waiters-members.html\n--rw-r--r-- 0 root (0) root (0) 8731 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1notice__waiters.html\n+-rw-r--r-- 0 root (0) root (0) 9361 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1notice__waiters.html\n -rw-r--r-- 0 root (0) root (0) 355 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal__error__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 4177 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal__error__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 355 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal__error__inherit__graph.map\n -rw-r--r-- 0 root (0) root (0) 4177 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal__error__inherit__graph.png\n -rw-r--r-- 0 root (0) root (0) 930 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1invalid__cursor__name__coll__graph.map\n -rw-r--r-- 0 root (0) root (0) 8958 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1invalid__cursor__name__coll__graph.png\n -rw-r--r-- 0 root (0) root (0) 930 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1invalid__cursor__name__inherit__graph.map\n@@ -1517,22 +1517,22 @@\n -rw-r--r-- 0 root (0) root (0) 5631 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/thread-safety.html\n -rw-r--r-- 0 root (0) root (0) 13036 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/time_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 6099 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/topics.html\n -rw-r--r-- 0 root (0) root (0) 648 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/topics.js\n -rw-r--r-- 0 root (0) root (0) 8071 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/transaction-sql__cursor_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 11097 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/transaction-transaction__focus_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 19257 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/transaction_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 141578 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/transaction__base_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 142917 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/transaction__base_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 21897 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/transaction__focus_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 19663 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/transactor_8hxx_source.html\n -rw-r--r-- 0 root (0) root (0) 34918 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/types_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 115450 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/util_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 9333 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/version_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 8055 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/wait_8hxx_source.html\n--rw-r--r-- 0 root (0) root (0) 30428 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/zview_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 131557 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/util_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 9944 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/version_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 9186 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/wait_8hxx_source.html\n+-rw-r--r-- 0 root (0) root (0) 31351 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/doxygen-html/zview_8hxx_source.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-01-07 17:35:40.000000 ./usr/share/doc/libpqxx-doc/examples/\n -rw-r--r-- 0 root (0) root (0) 6285 2024-12-22 18:24:39.000000 ./usr/share/doc/libpqxx-doc/examples/runner.cxx\n -rw-r--r-- 0 root (0) root (0) 2953 2024-12-22 18:24:39.000000 ./usr/share/doc/libpqxx-doc/examples/test00.cxx\n -rw-r--r-- 0 root (0) root (0) 717 2024-12-22 18:24:39.000000 ./usr/share/doc/libpqxx-doc/examples/test01.cxx\n -rw-r--r-- 0 root (0) root (0) 2250 2024-12-22 18:24:39.000000 ./usr/share/doc/libpqxx-doc/examples/test02.cxx\n -rw-r--r-- 0 root (0) root (0) 1282 2024-12-22 18:24:39.000000 ./usr/share/doc/libpqxx-doc/examples/test04.cxx\n -rw-r--r-- 0 root (0) root (0) 3714 2024-12-22 18:24:39.000000 ./usr/share/doc/libpqxx-doc/examples/test07.cxx\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/accessing-results.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/accessing-results.html", "unified_diff": "@@ -93,38 +93,38 @@\n
Accessing results and result rows
\n \n
\n

A query produces a result set consisting of rows, and each row consists of fields. There are several ways to receive this data.

\n

The fields are \"untyped.\" That is to say, libpqxx has no opinion on what their types are. The database sends the data in a very flexible textual format. When you read a field, you specify what type you want it to be, and libpqxx converts the text format to that type for you.

\n

If a value does not conform to the format for the type you specify, the conversion fails. For example, if you have strings that all happen to contain numbers, you can read them as int. But if any of the values is empty, or it's null (for a type that doesn't support null), or it's some string that does not look like an integer, or it's too large, you can't convert it to int.

\n

So usually, reading result data from the database means not just retrieving the data; it also means converting it to some target type.

\n-

\n+

\n Querying rows of data

\n

The simplest way to query rows of data is to call one of a transaction's \"query\" functions, passing as template arguments the types of columns you want to get back (e.g. int, std::string, double, and so on) and as a regular argument the query itself.

\n

You can then iterate over the result to go over the rows of data:

\n
for (auto [id, value] :
\n
tx.query<int, std::string>("SELECT id, name FROM item"))
\n
{
\n
std::cout << id << '\\t' << value << '\\n';
\n
}
\n

The \"query\" functions execute your query, load the complete result data from the database, and then as you iterate, convert each row it received to a tuple of C++ types that you indicated.

\n

There are different query functions for querying any number of rows (query()); querying just one row of data as a std::tuple and throwing an error if there's more than one row (query1()); or querying

\n-

\n+

\n Streaming rows

\n

There's another way to go through the rows coming out of a query. It's usually easier and faster if there are a lot of rows, but there are drawbacks.

\n

One, you start getting rows before all the data has come in from the database. That speeds things up, but what happens if you lose your network connection while transferring the data? Your application may already have processed some of the data before finding out that the rest isn't coming. If that is a problem for your application, streaming may not be the right choice.

\n

Two, streaming only works for some types of query. The stream() function wraps your query in a PostgreSQL COPY command, and COPY only supports a few commands: SELECT, VALUES, or an INSERT, UPDATE, or DELETE with a RETURNING clause. See the COPY documentation here: [ https://www.postgresql.org/docs/current/sql-copy.html ](https://www.postgresql.org/docs/current/sql-copy.html).

\n

Three, when you convert a field to a \"view\" type (such as std::string_view or pqxx::bytes_view), the view points to underlying data which only stays valid until you iterate to the next row or exit the loop. So if you want to use that data for longer than a single iteration of the streaming loop, you'll have to store it somewhere yourself.

\n

Now for the good news. Streaming does make it very easy to query data and loop over it, and often faster than with the \"query\" or \"exec\" functions:

\n
for (auto [id, name, x, y] :
\n
tx.stream<int, std::string_view, float, float>(
\n
"SELECT id, name, x, y FROM point"))
\n
process(id + 1, "point-" + name, x * 10.0, y * 10.0);
\n

The conversion to C++ types (here int, std::string_view, and two floats) is built into the function. You never even see row objects, field objects, iterators, or conversion methods. You just put in your query and you receive your data.

\n-

\n+

\n Results with metadata

\n

Sometimes you want more from a query result than just rows of data. You may need to know right away how many rows of result data you received, or how many rows your UPDATE statement has affected, or the names of the columns, etc.

\n

For that, use the transaction's \"exec\" query execution functions. Apart from a few exceptions, these return a pqxx::result object. A result is a container of pqxx::row objects, so you can iterate them as normal, or index them like you would index an array. Each row in turn is a container of pqxx::field, Each field holds a value, but doesn't know its type. You specify the type when you read the value.

\n

For example, your code might do:

\n
pqxx::result r = tx.exec("SELECT * FROM mytable");
\n
for (auto const &row: r)
\n
{
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/array-composite_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/array-composite_8hxx_source.html", "unified_diff": "@@ -108,282 +108,282 @@\n
8
\n
9namespace pqxx::internal
\n
10{
\n
11// Find the end of a double-quoted string.
\n
19template<encoding_group ENC>
\n
\n
20inline std::size_t scan_double_quoted_string(
\n-
21 char const input[], std::size_t size, std::size_t pos)
\n+
21 char const input[], std::size_t size, std::size_t pos)
\n
22{
\n
23 // TODO: find_char<'"', '\\\\'>().
\n-
24 using scanner = glyph_scanner<ENC>;
\n-
25 auto next{scanner::call(input, size, pos)};
\n+\n+
25 auto next{scanner::call(input, size, pos)};
\n
26 PQXX_ASSUME(next > pos);
\n-
27 bool at_quote{false};
\n+
27 bool at_quote{false};
\n
28 pos = next;
\n-
29 next = scanner::call(input, size, pos);
\n+
29 next = scanner::call(input, size, pos);
\n
30 PQXX_ASSUME(next > pos);
\n
31 while (pos < size)
\n
32 {
\n-
33 if (at_quote)
\n+
33 if (at_quote)
\n
34 {
\n-
35 if (next - pos == 1 and input[pos] == '"')
\n+
35 if (next - pos == 1 and input[pos] == '"')
\n
36 {
\n
37 // We just read a pair of double quotes. Carry on.
\n-
38 at_quote = false;
\n+
38 at_quote = false;
\n
39 }
\n
40 else
\n
41 {
\n
42 // We just read one double quote, and now we're at a character that's
\n
43 // not a second double quote. Ergo, that last character was the
\n
44 // closing double quote and this is the position right after it.
\n
45 return pos;
\n
46 }
\n
47 }
\n
48 else if (next - pos == 1)
\n
49 {
\n-
50 switch (input[pos])
\n+
50 switch (input[pos])
\n
51 {
\n
52 case '\\\\':
\n
53 // Backslash escape. Skip ahead by one more character.
\n
54 pos = next;
\n-
55 next = scanner::call(input, size, pos);
\n+
55 next = scanner::call(input, size, pos);
\n
56 PQXX_ASSUME(next > pos);
\n
57 break;
\n
58
\n
59 case '"':
\n
60 // This is either the closing double quote, or the first of a pair of
\n
61 // double quotes.
\n-
62 at_quote = true;
\n+
62 at_quote = true;
\n
63 break;
\n
64 }
\n
65 }
\n
66 else
\n
67 {
\n
68 // Multibyte character. Carry on.
\n
69 }
\n
70 pos = next;
\n-
71 next = scanner::call(input, size, pos);
\n+
71 next = scanner::call(input, size, pos);
\n
72 PQXX_ASSUME(next > pos);
\n
73 }
\n-
74 if (not at_quote)
\n+
74 if (not at_quote)
\n
75 throw argument_error{
\n-
76 "Missing closing double-quote: " + std::string{input}};
\n+
76 "Missing closing double-quote: " + std::string{input}};
\n
77 return pos;
\n
78}
\n
\n
79
\n
80
\n
81// TODO: Needs version with caller-supplied buffer.
\n
83template<encoding_group ENC>
\n
\n
84inline std::string parse_double_quoted_string(
\n-
85 char const input[], std::size_t end, std::size_t pos)
\n+
85 char const input[], std::size_t end, std::size_t pos)
\n
86{
\n-
87 std::string output;
\n+
87 std::string output;
\n
88 // Maximum output size is same as the input size, minus the opening and
\n
89 // closing quotes. Or in the extreme opposite case, the real number could be
\n
90 // half that. Usually it'll be a pretty close estimate.
\n-
91 output.reserve(std::size_t(end - pos - 2));
\n+
91 output.reserve(std::size_t(end - pos - 2));
\n
92
\n
93 // TODO: Use find_char<...>().
\n-
94 using scanner = glyph_scanner<ENC>;
\n-
95 auto here{scanner::call(input, end, pos)},
\n-
96 next{scanner::call(input, end, here)};
\n-
97 PQXX_ASSUME(here > pos);
\n-
98 PQXX_ASSUME(next > here);
\n-
99 while (here < end - 1)
\n+\n+
95 auto here{scanner::call(input, end, pos)},
\n+
96 next{scanner::call(input, end, here)};
\n+
97 PQXX_ASSUME(here > pos);
\n+
98 PQXX_ASSUME(next > here);
\n+
99 while (here < end - 1)
\n
100 {
\n
101 // A backslash here is always an escape. So is a double-quote, since we're
\n
102 // inside the double-quoted string. In either case, we can just ignore the
\n
103 // escape character and use the next character. This is the one redeeming
\n
104 // feature of SQL's escaping system.
\n-
105 if ((next - here == 1) and (input[here] == '\\\\' or input[here] == '"'))
\n+
105 if ((next - here == 1) and (input[here] == '\\\\' or input[here] == '"'))
\n
106 {
\n
107 // Skip escape.
\n-
108 here = next;
\n-
109 next = scanner::call(input, end, here);
\n-
110 PQXX_ASSUME(next > here);
\n+
108 here = next;
\n+
109 next = scanner::call(input, end, here);
\n+
110 PQXX_ASSUME(next > here);
\n
111 }
\n-
112 output.append(input + here, input + next);
\n-
113 here = next;
\n-
114 next = scanner::call(input, end, here);
\n-
115 PQXX_ASSUME(next > here);
\n+
112 output.append(input + here, input + next);
\n+
113 here = next;
\n+
114 next = scanner::call(input, end, here);
\n+
115 PQXX_ASSUME(next > here);
\n
116 }
\n-
117 return output;
\n+
117 return output;
\n
118}
\n
\n
119
\n
120
\n
122
\n-
129template<pqxx::internal::encoding_group ENC, char... STOP>
\n+
129template<pqxx::internal::encoding_group ENC, char... STOP>
\n
130inline std::size_t
\n
\n-
131scan_unquoted_string(char const input[], std::size_t size, std::size_t pos)
\n+
131scan_unquoted_string(char const input[], std::size_t size, std::size_t pos)
\n
132{
\n-
133 using scanner = glyph_scanner<ENC>;
\n-
134 auto next{scanner::call(input, size, pos)};
\n+\n+
134 auto next{scanner::call(input, size, pos)};
\n
135 PQXX_ASSUME(next > pos);
\n-
136 while ((pos < size) and ((next - pos) > 1 or ((input[pos] != STOP) and ...)))
\n+
136 while ((pos < size) and ((next - pos) > 1 or ((input[pos] != STOP) and ...)))
\n
137 {
\n
138 pos = next;
\n-
139 next = scanner::call(input, size, pos);
\n+
139 next = scanner::call(input, size, pos);
\n
140 PQXX_ASSUME(next > pos);
\n
141 }
\n
142 return pos;
\n
143}
\n
\n
144
\n
145
\n
147template<pqxx::internal::encoding_group ENC>
\n
148inline std::string_view
\n
\n-
149parse_unquoted_string(char const input[], std::size_t end, std::size_t pos)
\n+
149parse_unquoted_string(char const input[], std::size_t end, std::size_t pos)
\n
150{
\n-
151 return {&input[pos], end - pos};
\n+
151 return {&input[pos], end - pos};
\n
152}
\n
\n
153
\n
154
\n
156
\n
179template<encoding_group ENC, typename T>
\n
\n \n-
181 std::size_t &index, std::string_view input, std::size_t &pos, T &field,
\n-
182 std::size_t last_field)
\n+
181 std::size_t &index, std::string_view input, std::size_t &pos, T &field,
\n+
182 std::size_t last_field)
\n
183{
\n-
184 assert(index <= last_field);
\n-
185 auto next{glyph_scanner<ENC>::call(std::data(input), std::size(input), pos)};
\n+
184 assert(index <= last_field);
\n+
185 auto next{glyph_scanner<ENC>::call(std::data(input), std::size(input), pos)};
\n
186 PQXX_ASSUME(next > pos);
\n
187 if ((next - pos) != 1)
\n
188 throw conversion_error{"Non-ASCII character in composite-type syntax."};
\n
189
\n
190 // Expect a field.
\n-
191 switch (input[pos])
\n+
191 switch (input[pos])
\n
192 {
\n
193 case ',':
\n
194 case ')':
\n
195 case ']':
\n
196 // The field is empty, i.e, null.
\n
197 if constexpr (nullness<T>::has_null)
\n \n
199 else
\n
200 throw conversion_error{
\n
201 "Can't read composite field " + to_string(index) + ": C++ type " +
\n-
202 type_name<T> + " does not support nulls."};
\n+
202 type_name<T> + " does not support nulls."};
\n
203 break;
\n
204
\n
205 case '"': {
\n-
206 auto const stop{
\n-
207 scan_double_quoted_string<ENC>(std::data(input), std::size(input), pos)};
\n-
208 PQXX_ASSUME(stop > pos);
\n+
206 auto const stop{
\n+
207 scan_double_quoted_string<ENC>(std::data(input), std::size(input), pos)};
\n+
208 PQXX_ASSUME(stop > pos);
\n
209 auto const text{
\n-
210 parse_double_quoted_string<ENC>(std::data(input), stop, pos)};
\n-
211 field = from_string<T>(text);
\n-
212 pos = stop;
\n+
210 parse_double_quoted_string<ENC>(std::data(input), stop, pos)};
\n+
211 field = from_string<T>(text);
\n+
212 pos = stop;
\n
213 }
\n
214 break;
\n
215
\n
216 default: {
\n-
217 auto const stop{scan_unquoted_string<ENC, ',', ')', ']'>(
\n-
218 std::data(input), std::size(input), pos)};
\n-
219 PQXX_ASSUME(stop >= pos);
\n+\n+
218 std::data(input), std::size(input), pos)};
\n+
219 PQXX_ASSUME(stop >= pos);
\n
220 field =
\n-
221 from_string<T>(std::string_view{std::data(input) + pos, stop - pos});
\n-
222 pos = stop;
\n+
221 from_string<T>(std::string_view{std::data(input) + pos, stop - pos});
\n+
222 pos = stop;
\n
223 }
\n
224 break;
\n
225 }
\n
226
\n
227 // Expect a comma or a closing parenthesis.
\n-
228 next = glyph_scanner<ENC>::call(std::data(input), std::size(input), pos);
\n+
228 next = glyph_scanner<ENC>::call(std::data(input), std::size(input), pos);
\n
229 PQXX_ASSUME(next > pos);
\n
230
\n
231 if ((next - pos) != 1)
\n
232 throw conversion_error{
\n
233 "Unexpected non-ASCII character after composite field: " +
\n-
234 std::string{input}};
\n+
234 std::string{input}};
\n
235
\n-
236 if (index < last_field)
\n+
236 if (index < last_field)
\n
237 {
\n-
238 if (input[pos] != ',')
\n+
238 if (input[pos] != ',')
\n
239 throw conversion_error{
\n-
240 "Found '" + std::string{input[pos]} +
\n-
241 "' in composite value where comma was expected: " + std::data(input)};
\n+
240 "Found '" + std::string{input[pos]} +
\n+
241 "' in composite value where comma was expected: " + std::data(input)};
\n
242 }
\n
243 else
\n
244 {
\n-
245 if (input[pos] == ',')
\n+
245 if (input[pos] == ',')
\n
246 throw conversion_error{
\n
247 "Composite value contained more fields than the expected " +
\n-
248 to_string(last_field) + ": " + std::data(input)};
\n-
249 if (input[pos] != ')' and input[pos] != ']')
\n+
248 to_string(last_field) + ": " + std::data(input)};
\n+
249 if (input[pos] != ')' and input[pos] != ']')
\n
250 throw conversion_error{
\n
251 "Composite value has unexpected characters where closing parenthesis "
\n
252 "was expected: " +
\n-
253 std::string{input}};
\n-
254 if (next != std::size(input))
\n+
253 std::string{input}};
\n+
254 if (next != std::size(input))
\n
255 throw conversion_error{
\n
256 "Composite value has unexpected text after closing parenthesis: " +
\n-
257 std::string{input}};
\n+
257 std::string{input}};
\n
258 }
\n
259
\n
260 pos = next;
\n
261 ++index;
\n
262}
\n
\n
263
\n
264
\n
266template<typename T>
\n-
267using composite_field_parser = void (*)(
\n-
268 std::size_t &index, std::string_view input, std::size_t &pos, T &field,
\n-
269 std::size_t last_field);
\n+\n+
268 std::size_t &index, std::string_view input, std::size_t &pos, T &field,
\n+
269 std::size_t last_field);
\n
270
\n
271
\n
273template<typename T>
\n
\n-\n+\n
275{
\n-
276 switch (enc)
\n+
276 switch (enc)
\n
277 {
\n
278 case encoding_group::MONOBYTE:
\n-
279 return parse_composite_field<encoding_group::MONOBYTE>;
\n+\n
280 case encoding_group::BIG5:
\n-
281 return parse_composite_field<encoding_group::BIG5>;
\n+\n
282 case encoding_group::EUC_CN:
\n-
283 return parse_composite_field<encoding_group::EUC_CN>;
\n+\n
284 case encoding_group::EUC_JP:
\n-
285 return parse_composite_field<encoding_group::EUC_JP>;
\n+\n
286 case encoding_group::EUC_KR:
\n-
287 return parse_composite_field<encoding_group::EUC_KR>;
\n+\n
288 case encoding_group::EUC_TW:
\n-
289 return parse_composite_field<encoding_group::EUC_TW>;
\n+\n
290 case encoding_group::GB18030:
\n-
291 return parse_composite_field<encoding_group::GB18030>;
\n-
292 case encoding_group::GBK: return parse_composite_field<encoding_group::GBK>;
\n+\n+
292 case encoding_group::GBK: return parse_composite_field<encoding_group::GBK>;
\n
293 case encoding_group::JOHAB:
\n-
294 return parse_composite_field<encoding_group::JOHAB>;
\n+\n
295 case encoding_group::MULE_INTERNAL:
\n-
296 return parse_composite_field<encoding_group::MULE_INTERNAL>;
\n+\n
297 case encoding_group::SJIS:
\n-
298 return parse_composite_field<encoding_group::SJIS>;
\n-
299 case encoding_group::UHC: return parse_composite_field<encoding_group::UHC>;
\n+\n+
299 case encoding_group::UHC: return parse_composite_field<encoding_group::UHC>;
\n
300 case encoding_group::UTF8:
\n-
301 return parse_composite_field<encoding_group::UTF8>;
\n+\n
302 }
\n-
303 throw internal_error{concat("Unexpected encoding group code: ", enc, ".")};
\n+
303 throw internal_error{concat("Unexpected encoding group code: ", enc, ".")};
\n
304}
\n
\n
305
\n
306
\n
308template<typename T>
\n
\n-
309inline std::size_t size_composite_field_buffer(T const &field)
\n+
309inline std::size_t size_composite_field_buffer(T const &field)
\n
310{
\n-
311 if constexpr (is_unquoted_safe<T>)
\n+
311 if constexpr (is_unquoted_safe<T>)
\n
312 {
\n
313 // Safe to copy, without quotes or escaping. Drop the terminating zero.
\n
314 return size_buffer(field) - 1;
\n
315 }
\n
316 else
\n
317 {
\n
318 // + Opening quote.
\n@@ -395,37 +395,37 @@\n
324 return 1 + 2 * (size_buffer(field) - 1) + 1;
\n
325 }
\n
326}
\n
\n
327
\n
328
\n
329template<typename T>
\n-
330inline void write_composite_field(char *&pos, char *end, T const &field)
\n+
330inline void write_composite_field(char *&pos, char *end, T const &field)
\n
331{
\n-
332 if constexpr (is_unquoted_safe<T>)
\n+
332 if constexpr (is_unquoted_safe<T>)
\n
333 {
\n
334 // No need for quoting or escaping. Convert it straight into its final
\n
335 // place in the buffer, and "backspace" the trailing zero.
\n
336 pos = string_traits<T>::into_buf(pos, end, field) - 1;
\n
337 }
\n
338 else
\n
339 {
\n
340 // The field may need escaping, which means we need an intermediate buffer.
\n
341 // To avoid allocating that at run time, we use the end of the buffer that
\n
342 // we have.
\n-
343 auto const budget{size_buffer(field)};
\n+
343 auto const budget{size_buffer(field)};
\n
344 *pos++ = '"';
\n
345
\n
346 // Now escape buf into its final position.
\n-
347 for (char const c : string_traits<T>::to_buf(end - budget, end, field))
\n+
347 for (char const c : string_traits<T>::to_buf(end - budget, end, field))
\n
348 {
\n-
349 if ((c == '"') or (c == '\\\\'))
\n+
349 if ((c == '"') or (c == '\\\\'))
\n
350 *pos++ = '\\\\';
\n
351
\n-
352 *pos++ = c;
\n+
352 *pos++ = c;
\n
353 }
\n
354
\n
355 *pos++ = '"';
\n
356 }
\n
357
\n
358 *pos++ = ',';
\n
359}
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -13,275 +13,275 @@\n 7# include \"pqxx/strconv.hxx\"\n 8\n 9namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 10{\n 11// Find the end of a double-quoted string.\n 19template\n _\b2_\b0inline std::size_t _\bs_\bc_\ba_\bn_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg(\n-21 char const input[], std::size_t size, std::size_t pos)\n+21 char const _\bi_\bn_\bp_\bu_\bt[], std::size_t size, std::size_t pos)\n 22{\n 23 // TODO: find_char<'\"', '\\\\'>().\n-24 using scanner = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>;\n-25 auto next{scanner::call(input, size, pos)};\n+24 using _\bs_\bc_\ba_\bn_\bn_\be_\br = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>;\n+25 auto next{scanner::call(_\bi_\bn_\bp_\bu_\bt, size, pos)};\n 26 PQXX_ASSUME(next > pos);\n-27 bool at_quote{false};\n+27 bool _\ba_\bt_\b__\bq_\bu_\bo_\bt_\be{false};\n 28 pos = next;\n-29 next = scanner::call(input, size, pos);\n+29 next = scanner::call(_\bi_\bn_\bp_\bu_\bt, size, pos);\n 30 PQXX_ASSUME(next > pos);\n 31 while (pos < size)\n 32 {\n-33 if (at_quote)\n+33 if (_\ba_\bt_\b__\bq_\bu_\bo_\bt_\be)\n 34 {\n-35 if (next - pos == 1 and input[pos] == '\"')\n+35 if (next - pos == 1 _\ba_\bn_\bd _\bi_\bn_\bp_\bu_\bt[pos] == '\"')\n 36 {\n 37 // We just read a pair of double quotes. Carry on.\n-38 at_quote = false;\n+38 _\ba_\bt_\b__\bq_\bu_\bo_\bt_\be = false;\n 39 }\n 40 else\n 41 {\n 42 // We just read one double quote, and now we're at a character that's\n 43 // not a second double quote. Ergo, that last character was the\n 44 // closing double quote and this is the position right after it.\n 45 return pos;\n 46 }\n 47 }\n 48 else if (next - pos == 1)\n 49 {\n-50 switch (input[pos])\n+50 switch (_\bi_\bn_\bp_\bu_\bt[pos])\n 51 {\n 52 case '\\\\':\n 53 // Backslash escape. Skip ahead by one more character.\n 54 pos = next;\n-55 next = scanner::call(input, size, pos);\n+55 next = scanner::call(_\bi_\bn_\bp_\bu_\bt, size, pos);\n 56 PQXX_ASSUME(next > pos);\n 57 break;\n 58\n 59 case '\"':\n 60 // This is either the closing double quote, or the first of a pair of\n 61 // double quotes.\n-62 at_quote = true;\n+62 _\ba_\bt_\b__\bq_\bu_\bo_\bt_\be = true;\n 63 break;\n 64 }\n 65 }\n 66 else\n 67 {\n 68 // Multibyte character. Carry on.\n 69 }\n 70 pos = next;\n-71 next = scanner::call(input, size, pos);\n+71 next = scanner::call(_\bi_\bn_\bp_\bu_\bt, size, pos);\n 72 PQXX_ASSUME(next > pos);\n 73 }\n-74 if (not at_quote)\n+74 if (_\bn_\bo_\bt _\ba_\bt_\b__\bq_\bu_\bo_\bt_\be)\n 75 throw _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\b__\be_\br_\br_\bo_\br{\n-76 \"Missing closing double-quote: \" + std::string{input}};\n+76 \"Missing closing double-quote: \" + std::string{_\bi_\bn_\bp_\bu_\bt}};\n 77 return pos;\n 78}\n 79\n 80\n 81// TODO: Needs version with caller-supplied buffer.\n 83template\n _\b8_\b4inline std::string _\bp_\ba_\br_\bs_\be_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg(\n-85 char const input[], std::size_t end, std::size_t pos)\n+85 char const _\bi_\bn_\bp_\bu_\bt[], std::size_t end, std::size_t pos)\n 86{\n-87 std::string output;\n+87 std::string _\bo_\bu_\bt_\bp_\bu_\bt;\n 88 // Maximum output size is same as the input size, minus the opening and\n 89 // closing quotes. Or in the extreme opposite case, the real number could be\n 90 // half that. Usually it'll be a pretty close estimate.\n-91 output.reserve(std::size_t(end - pos - 2));\n+91 _\bo_\bu_\bt_\bp_\bu_\bt.reserve(std::size_t(end - pos - 2));\n 92\n 93 // TODO: Use find_char<...>().\n-94 using scanner = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>;\n-95 auto here{scanner::call(input, end, pos)},\n-96 next{scanner::call(input, end, here)};\n-97 PQXX_ASSUME(here > pos);\n-98 PQXX_ASSUME(next > here);\n-99 while (here < end - 1)\n+94 using _\bs_\bc_\ba_\bn_\bn_\be_\br = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>;\n+95 auto _\bh_\be_\br_\be{scanner::call(_\bi_\bn_\bp_\bu_\bt, end, pos)},\n+96 next{scanner::call(_\bi_\bn_\bp_\bu_\bt, end, _\bh_\be_\br_\be)};\n+97 PQXX_ASSUME(_\bh_\be_\br_\be > pos);\n+98 PQXX_ASSUME(next > _\bh_\be_\br_\be);\n+99 while (_\bh_\be_\br_\be < end - 1)\n 100 {\n 101 // A backslash here is always an escape. So is a double-quote, since we're\n 102 // inside the double-quoted string. In either case, we can just ignore the\n 103 // escape character and use the next character. This is the one redeeming\n 104 // feature of SQL's escaping system.\n-105 if ((next - here == 1) and (input[here] == '\\\\' or input[here] == '\"'))\n+105 if ((next - _\bh_\be_\br_\be == 1) _\ba_\bn_\bd (_\bi_\bn_\bp_\bu_\bt[_\bh_\be_\br_\be] == '\\\\' _\bo_\br _\bi_\bn_\bp_\bu_\bt[_\bh_\be_\br_\be] == '\"'))\n 106 {\n 107 // Skip escape.\n-108 here = next;\n-109 next = scanner::call(input, end, here);\n-110 PQXX_ASSUME(next > here);\n+108 _\bh_\be_\br_\be = next;\n+109 next = scanner::call(_\bi_\bn_\bp_\bu_\bt, end, _\bh_\be_\br_\be);\n+110 PQXX_ASSUME(next > _\bh_\be_\br_\be);\n 111 }\n-112 output.append(input + here, input + next);\n-113 here = next;\n-114 next = scanner::call(input, end, here);\n-115 PQXX_ASSUME(next > here);\n+112 _\bo_\bu_\bt_\bp_\bu_\bt.append(_\bi_\bn_\bp_\bu_\bt + _\bh_\be_\br_\be, _\bi_\bn_\bp_\bu_\bt + next);\n+113 _\bh_\be_\br_\be = next;\n+114 next = scanner::call(_\bi_\bn_\bp_\bu_\bt, end, _\bh_\be_\br_\be);\n+115 PQXX_ASSUME(next > _\bh_\be_\br_\be);\n 116 }\n-117 return output;\n+117 return _\bo_\bu_\bt_\bp_\bu_\bt;\n 118}\n 119\n 120\n 122\n-129template\n+129template\n 130inline std::size_t\n-_\b1_\b3_\b1_\bs_\bc_\ba_\bn_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg(char const input[], std::size_t size, std::size_t pos)\n+_\b1_\b3_\b1_\bs_\bc_\ba_\bn_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg(char const _\bi_\bn_\bp_\bu_\bt[], std::size_t size, std::size_t pos)\n 132{\n-133 using scanner = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>;\n-134 auto next{scanner::call(input, size, pos)};\n+133 using _\bs_\bc_\ba_\bn_\bn_\be_\br = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>;\n+134 auto next{scanner::call(_\bi_\bn_\bp_\bu_\bt, size, pos)};\n 135 PQXX_ASSUME(next > pos);\n-136 while ((pos < size) and ((next - pos) > 1 or ((input[pos] != STOP) and\n+136 while ((pos < size) _\ba_\bn_\bd ((next - pos) > 1 _\bo_\br ((_\bi_\bn_\bp_\bu_\bt[pos] != _\bS_\bT_\bO_\bP) _\ba_\bn_\bd\n ...)))\n 137 {\n 138 pos = next;\n-139 next = scanner::call(input, size, pos);\n+139 next = scanner::call(_\bi_\bn_\bp_\bu_\bt, size, pos);\n 140 PQXX_ASSUME(next > pos);\n 141 }\n 142 return pos;\n 143}\n 144\n 145\n 147template\n 148inline std::string_view\n-_\b1_\b4_\b9_\bp_\ba_\br_\bs_\be_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg(char const input[], std::size_t end, std::size_t pos)\n+_\b1_\b4_\b9_\bp_\ba_\br_\bs_\be_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg(char const _\bi_\bn_\bp_\bu_\bt[], std::size_t end, std::size_t pos)\n 150{\n-151 return {&input[pos], end - pos};\n+151 return {&_\bi_\bn_\bp_\bu_\bt[pos], end - pos};\n 152}\n 153\n 154\n 156\n 179template\n _\b1_\b8_\b0inline void _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd(\n-181 std::size_t &index, std::string_view input, std::size_t &pos, T &_\bf_\bi_\be_\bl_\bd,\n-182 std::size_t last_field)\n+181 std::size_t &index, std::string_view _\bi_\bn_\bp_\bu_\bt, std::size_t &pos, _\bT &_\bf_\bi_\be_\bl_\bd,\n+182 std::size_t _\bl_\ba_\bs_\bt_\b__\bf_\bi_\be_\bl_\bd)\n 183{\n-184 assert(index <= last_field);\n-185 auto next{_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(std::data(input), std::size(input),\n+184 _\ba_\bs_\bs_\be_\br_\bt(index <= _\bl_\ba_\bs_\bt_\b__\bf_\bi_\be_\bl_\bd);\n+185 auto next{_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(std::data(_\bi_\bn_\bp_\bu_\bt), std::size(_\bi_\bn_\bp_\bu_\bt),\n pos)};\n 186 PQXX_ASSUME(next > pos);\n 187 if ((next - pos) != 1)\n 188 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{\"Non-ASCII character in composite-type syntax.\"};\n 189\n 190 // Expect a field.\n-191 switch (input[pos])\n+191 switch (_\bi_\bn_\bp_\bu_\bt[pos])\n 192 {\n 193 case ',':\n 194 case ')':\n 195 case ']':\n 196 // The field is empty, i.e, null.\n 197 if constexpr (_\bn_\bu_\bl_\bl_\bn_\be_\bs_\bs_\b<_\bT_\b>_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bu_\bl_\bl)\n 198 _\bf_\bi_\be_\bl_\bd = _\bn_\bu_\bl_\bl_\bn_\be_\bs_\bs_\b<_\bT_\b>_\b:_\b:_\bn_\bu_\bl_\bl();\n 199 else\n 200 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{\n 201 \"Can't read composite field \" + _\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg(index) + \": C++ type \" +\n-202 type_name + \" does not support nulls.\"};\n+202 _\bt_\by_\bp_\be_\b__\bn_\ba_\bm_\be_\b<_\bT_\b> + \" does not support nulls.\"};\n 203 break;\n 204\n 205 case '\"': {\n-206 auto const stop{\n-207 scan_double_quoted_string(std::data(input), std::size(input), pos)};\n-208 PQXX_ASSUME(stop > pos);\n+206 auto const _\bs_\bt_\bo_\bp{\n+207 _\bs_\bc_\ba_\bn_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bE_\bN_\bC_\b>(std::data(_\bi_\bn_\bp_\bu_\bt), std::size(_\bi_\bn_\bp_\bu_\bt), pos)};\n+208 PQXX_ASSUME(_\bs_\bt_\bo_\bp > pos);\n 209 auto const text{\n-210 parse_double_quoted_string(std::data(input), stop, pos)};\n-211 _\bf_\bi_\be_\bl_\bd = from_string(text);\n-212 pos = stop;\n+210 _\bp_\ba_\br_\bs_\be_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bE_\bN_\bC_\b>(std::data(_\bi_\bn_\bp_\bu_\bt), _\bs_\bt_\bo_\bp, pos)};\n+211 _\bf_\bi_\be_\bl_\bd = _\bf_\br_\bo_\bm_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bT_\b>(text);\n+212 pos = _\bs_\bt_\bo_\bp;\n 213 }\n 214 break;\n 215\n 216 default: {\n-217 auto const stop{scan_unquoted_string(\n-218 std::data(input), std::size(input), pos)};\n-219 PQXX_ASSUME(stop >= pos);\n+217 auto const _\bs_\bt_\bo_\bp{_\bs_\bc_\ba_\bn_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bE_\bN_\bC_\b,_\b _\b'_\b,_\b'_\b,_\b _\b'_\b)_\b'_\b,_\b _\b'_\b]_\b'_\b>(\n+218 std::data(_\bi_\bn_\bp_\bu_\bt), std::size(_\bi_\bn_\bp_\bu_\bt), pos)};\n+219 PQXX_ASSUME(_\bs_\bt_\bo_\bp >= pos);\n 220 _\bf_\bi_\be_\bl_\bd =\n-221 from_string(std::string_view{std::data(input) + pos, stop - pos});\n-222 pos = stop;\n+221 _\bf_\br_\bo_\bm_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bT_\b>(std::string_view{std::data(_\bi_\bn_\bp_\bu_\bt) + pos, _\bs_\bt_\bo_\bp - pos});\n+222 pos = _\bs_\bt_\bo_\bp;\n 223 }\n 224 break;\n 225 }\n 226\n 227 // Expect a comma or a closing parenthesis.\n-228 next = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(std::data(input), std::size(input), pos);\n+228 next = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(std::data(_\bi_\bn_\bp_\bu_\bt), std::size(_\bi_\bn_\bp_\bu_\bt), pos);\n 229 PQXX_ASSUME(next > pos);\n 230\n 231 if ((next - pos) != 1)\n 232 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{\n 233 \"Unexpected non-ASCII character after composite field: \" +\n-234 std::string{input}};\n+234 std::string{_\bi_\bn_\bp_\bu_\bt}};\n 235\n-236 if (index < last_field)\n+236 if (index < _\bl_\ba_\bs_\bt_\b__\bf_\bi_\be_\bl_\bd)\n 237 {\n-238 if (input[pos] != ',')\n+238 if (_\bi_\bn_\bp_\bu_\bt[pos] != ',')\n 239 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{\n-240 \"Found '\" + std::string{input[pos]} +\n-241 \"' in composite value where comma was expected: \" + std::data(input)};\n+240 \"Found '\" + std::string{_\bi_\bn_\bp_\bu_\bt[pos]} +\n+241 \"' in composite value where comma was expected: \" + std::data(_\bi_\bn_\bp_\bu_\bt)};\n 242 }\n 243 else\n 244 {\n-245 if (input[pos] == ',')\n+245 if (_\bi_\bn_\bp_\bu_\bt[pos] == ',')\n 246 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{\n 247 \"Composite value contained more fields than the expected \" +\n-248 _\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg(last_field) + \": \" + std::data(input)};\n-249 if (input[pos] != ')' and input[pos] != ']')\n+248 _\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg(_\bl_\ba_\bs_\bt_\b__\bf_\bi_\be_\bl_\bd) + \": \" + std::data(_\bi_\bn_\bp_\bu_\bt)};\n+249 if (_\bi_\bn_\bp_\bu_\bt[pos] != ')' _\ba_\bn_\bd _\bi_\bn_\bp_\bu_\bt[pos] != ']')\n 250 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{\n 251 \"Composite value has unexpected characters where closing parenthesis \"\n 252 \"was expected: \" +\n-253 std::string{input}};\n-254 if (next != std::size(input))\n+253 std::string{_\bi_\bn_\bp_\bu_\bt}};\n+254 if (next != std::size(_\bi_\bn_\bp_\bu_\bt))\n 255 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{\n 256 \"Composite value has unexpected text after closing parenthesis: \" +\n-257 std::string{input}};\n+257 std::string{_\bi_\bn_\bp_\bu_\bt}};\n 258 }\n 259\n 260 pos = next;\n 261 ++index;\n 262}\n 263\n 264\n 266template\n-_\b2_\b6_\b7using _\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b__\bp_\ba_\br_\bs_\be_\br = void (*)(\n-268 std::size_t &index, std::string_view input, std::size_t &pos, T &_\bf_\bi_\be_\bl_\bd,\n-269 std::size_t last_field);\n+_\b2_\b6_\b7using _\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b__\bp_\ba_\br_\bs_\be_\br = _\bv_\bo_\bi_\bd (*)(\n+268 std::size_t &index, std::string_view _\bi_\bn_\bp_\bu_\bt, std::size_t &pos, _\bT &_\bf_\bi_\be_\bl_\bd,\n+269 std::size_t _\bl_\ba_\bs_\bt_\b__\bf_\bi_\be_\bl_\bd);\n 270\n 271\n 273template\n _\b2_\b7_\b4_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b__\bp_\ba_\br_\bs_\be_\br_\b<_\bT_\b> _\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd(encoding_group\n-enc)\n+_\be_\bn_\bc)\n 275{\n-276 switch (enc)\n+276 switch (_\be_\bn_\bc)\n 277 {\n 278 case encoding_group::MONOBYTE:\n-279 return parse_composite_field;\n+279 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bM_\bO_\bN_\bO_\bB_\bY_\bT_\bE_\b>;\n 280 case encoding_group::BIG5:\n-281 return parse_composite_field;\n+281 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bB_\bI_\bG_\b5_\b>;\n 282 case encoding_group::EUC_CN:\n-283 return parse_composite_field;\n+283 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bE_\bU_\bC_\b__\bC_\bN_\b>;\n 284 case encoding_group::EUC_JP:\n-285 return parse_composite_field;\n+285 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bE_\bU_\bC_\b__\bJ_\bP_\b>;\n 286 case encoding_group::EUC_KR:\n-287 return parse_composite_field;\n+287 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bE_\bU_\bC_\b__\bK_\bR_\b>;\n 288 case encoding_group::EUC_TW:\n-289 return parse_composite_field;\n+289 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bE_\bU_\bC_\b__\bT_\bW_\b>;\n 290 case encoding_group::GB18030:\n-291 return parse_composite_field;\n-292 case encoding_group::GBK: return parse_composite_field;\n+291 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bG_\bB_\b1_\b8_\b0_\b3_\b0_\b>;\n+292 case encoding_group::GBK: return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:\n+_\bG_\bB_\bK_\b>;\n 293 case encoding_group::JOHAB:\n-294 return parse_composite_field;\n+294 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bJ_\bO_\bH_\bA_\bB_\b>;\n 295 case encoding_group::MULE_INTERNAL:\n-296 return parse_composite_field;\n+296 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bM_\bU_\bL_\bE_\b__\bI_\bN_\bT_\bE_\bR_\bN_\bA_\bL_\b>;\n 297 case encoding_group::SJIS:\n-298 return parse_composite_field;\n-299 case encoding_group::UHC: return parse_composite_field;\n+298 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bS_\bJ_\bI_\bS_\b>;\n+299 case encoding_group::UHC: return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:\n+_\bU_\bH_\bC_\b>;\n 300 case encoding_group::UTF8:\n-301 return parse_composite_field;\n+301 return _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bg_\br_\bo_\bu_\bp_\b:_\b:_\bU_\bT_\bF_\b8_\b>;\n 302 }\n-303 throw _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b__\be_\br_\br_\bo_\br{_\bc_\bo_\bn_\bc_\ba_\bt(\"Unexpected encoding group code: \", enc, \".\")};\n+303 throw _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b__\be_\br_\br_\bo_\br{_\bc_\bo_\bn_\bc_\ba_\bt(\"Unexpected encoding group code: \", _\be_\bn_\bc, \".\")};\n 304}\n 305\n 306\n 308template\n-_\b3_\b0_\b9inline std::size_t _\bs_\bi_\bz_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b__\bb_\bu_\bf_\bf_\be_\br(T const &_\bf_\bi_\be_\bl_\bd)\n+_\b3_\b0_\b9inline std::size_t _\bs_\bi_\bz_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b__\bb_\bu_\bf_\bf_\be_\br(_\bT const &_\bf_\bi_\be_\bl_\bd)\n 310{\n-311 if constexpr (is_unquoted_safe)\n+311 if constexpr (_\bi_\bs_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\ba_\bf_\be_\b<_\bT_\b>)\n 312 {\n 313 // Safe to copy, without quotes or escaping. Drop the terminating zero.\n 314 return size_buffer(_\bf_\bi_\be_\bl_\bd) - 1;\n 315 }\n 316 else\n 317 {\n 318 // + Opening quote.\n@@ -292,37 +292,37 @@\n 323 // + Closing quote.\n 324 return 1 + 2 * (size_buffer(_\bf_\bi_\be_\bl_\bd) - 1) + 1;\n 325 }\n 326}\n 327\n 328\n 329template\n-330inline void write_composite_field(char *&pos, char *end, T const &_\bf_\bi_\be_\bl_\bd)\n+330inline void write_composite_field(char *&pos, char *end, _\bT const &_\bf_\bi_\be_\bl_\bd)\n 331{\n-332 if constexpr (is_unquoted_safe)\n+332 if constexpr (_\bi_\bs_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\ba_\bf_\be_\b<_\bT_\b>)\n 333 {\n 334 // No need for quoting or escaping. Convert it straight into its final\n 335 // place in the buffer, and \"backspace\" the trailing zero.\n 336 pos = _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\bT_\b>_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(pos, end, _\bf_\bi_\be_\bl_\bd) - 1;\n 337 }\n 338 else\n 339 {\n 340 // The field may need escaping, which means we need an intermediate buffer.\n 341 // To avoid allocating that at run time, we use the end of the buffer that\n 342 // we have.\n-343 auto const budget{size_buffer(field)};\n+343 auto const _\bb_\bu_\bd_\bg_\be_\bt{size_buffer(field)};\n 344 *pos++ = '\"';\n 345\n 346 // Now escape buf into its final position.\n-347 for (char const c : string_traits::to_buf(end - budget, end, field))\n+347 for (char const _\bc : string_traits<_\bT>::to_buf(end - _\bb_\bu_\bd_\bg_\be_\bt, end, field))\n 348 {\n-349 if ((c == '\"') or (c == '\\\\'))\n+349 if ((_\bc == '\"') _\bo_\br (_\bc == '\\\\'))\n 350 *pos++ = '\\\\';\n 351\n-352 *pos++ = c;\n+352 *pos++ = _\bc;\n 353 }\n 354\n 355 *pos++ = '\"';\n 356 }\n 357\n 358 *pos++ = ',';\n 359}\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/array_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/array_8hxx_source.html", "unified_diff": "@@ -405,28 +405,28 @@\n
380 // string might not contain any special characters. So it's
\n
381 // tempting to check, and try to use a string_view and avoid a
\n
382 // useless copy step. But. Even besides the branch prediction
\n
383 // risk, the very fact that the back-end chose to quote the string
\n
384 // indicates that there is some kind of special character in there.
\n
385 // So in practice, this optimisation would only apply if the only
\n
386 // special characters in the string were commas.
\n-
387 end = pqxx::internal::scan_double_quoted_string<ENC>(
\n+\n
388 std::data(data), std::size(data), here);
\n
389 // TODO: scan_double_quoted_string() with reusable buffer.
\n
390 std::string const buf{
\n-
391 pqxx::internal::parse_double_quoted_string<ENC>(
\n+\n
392 std::data(data), end, here)};
\n
393 m_elts.emplace_back(from_string<ELEMENT>(buf));
\n
394 }
\n
395 break;
\n
396 default: {
\n
397 // Unquoted string. An unquoted string is always literal, no
\n
398 // escaping or encoding, so we don't need to parse it into a
\n
399 // buffer. We can just read it as a string_view.
\n-
400 end = pqxx::internal::scan_unquoted_string<ENC, SEPARATOR, '}'>(
\n+\n
401 std::data(data), std::size(data), here);
\n
402 std::string_view const field{
\n
403 std::string_view{std::data(data) + here, end - here}};
\n
404 if (field == "NULL")
\n
405 {
\n
406 if constexpr (nullness<ELEMENT>::has_null)
\n
407 m_elts.emplace_back(nullness<ELEMENT>::null());
\n@@ -591,14 +591,15 @@\n
constexpr auto cbegin() const noexcept
Begin iteration of individual elements.
Definition array.hxx:115
\n
constexpr auto crend() const noexcept
Return end point of reverse iteration.
Definition array.hxx:121
\n
std::array< std::size_t, DIMENSIONS > const & sizes() noexcept
Return the sizes of this array in each of its dimensions.
Definition array.hxx:82
\n
array(std::string_view data, connection const &cx)
Parse an SQL array, read as text from a pqxx::result or stream.
Definition array.hxx:68
\n
constexpr auto front() const noexcept
Refer to the first element, if any.
Definition array.hxx:153
\n
Connection to a database.
Definition connection.hxx:279
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
static TYPE null()
Return a null value.
\n
static bool has_null
Does this type have a null value?
Definition strconv.hxx:93
\n
\n
\n \n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -304,28 +304,28 @@\n 380 // string might not contain any special characters. So it's\n 381 // tempting to check, and try to use a string_view and avoid a\n 382 // useless copy step. But. Even besides the branch prediction\n 383 // risk, the very fact that the back-end chose to quote the string\n 384 // indicates that there is some kind of special character in there.\n 385 // So in practice, this optimisation would only apply if the only\n 386 // special characters in the string were commas.\n-387 end = pqxx::internal::scan_double_quoted_string(\n+387 end = _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bc_\ba_\bn_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bE_\bN_\bC_\b>(\n 388 std::data(data), std::size(data), here);\n 389 // TODO: scan_double_quoted_string() with reusable buffer.\n 390 std::string const buf{\n-391 pqxx::internal::parse_double_quoted_string(\n+391 _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bp_\ba_\br_\bs_\be_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bE_\bN_\bC_\b>(\n 392 std::data(data), end, here)};\n 393 m_elts.emplace_back(from_string(buf));\n 394 }\n 395 break;\n 396 default: {\n 397 // Unquoted string. An unquoted string is always literal, no\n 398 // escaping or encoding, so we don't need to parse it into a\n 399 // buffer. We can just read it as a string_view.\n-400 end = pqxx::internal::scan_unquoted_string(\n+400 end = _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bc_\ba_\bn_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bE_\bN_\bC_\b,_\b _\bS_\bE_\bP_\bA_\bR_\bA_\bT_\bO_\bR_\b,_\b _\b'_\b}_\b'_\b>(\n 401 std::data(data), std::size(data), here);\n 402 std::string_view const field{\n 403 std::string_view{std::data(data) + here, end - here}};\n 404 if (field == \"NULL\")\n 405 {\n 406 if constexpr (_\bn_\bu_\bl_\bl_\bn_\be_\bs_\bs_\b<_\bE_\bL_\bE_\bM_\bE_\bN_\bT_\b>_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bu_\bl_\bl)\n 407 m_elts.emplace_back(_\bn_\bu_\bl_\bl_\bn_\be_\bs_\bs_\b<_\bE_\bL_\bE_\bM_\bE_\bN_\bT_\b>_\b:_\b:_\bn_\bu_\bl_\bl());\n@@ -539,14 +539,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn\n Connection to a database.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn connection.hxx:279\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt\n std::string concat(TYPE... item)\n Efficiently combine a bunch of items into one big string.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn concat.hxx:31\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n _\bp_\bq_\bx_\bx_\b:_\b:_\bn_\bu_\bl_\bl_\bn_\be_\bs_\bs_\b:_\b:_\bn_\bu_\bl_\bl\n static TYPE null()\n Return a null value.\n _\bp_\bq_\bx_\bx_\b:_\b:_\bn_\bu_\bl_\bl_\bn_\be_\bs_\bs_\b:_\b:_\bh_\ba_\bs_\b__\bn_\bu_\bl_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/binary.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/binary.html", "unified_diff": "@@ -103,15 +103,15 @@\n
std::string hi{"Hello binary world"};
\n
my_blob.write(pqxx::binary_cast(hi);
\n
bytes_view binary_cast(TYPE const &data)
Cast binary data to a type that libpqxx will recognise as binary.
Definition util.hxx:409
\n

The other takes a pointer and a size:

\n
char const greeting[] = "Hello binary world";
\n
char const *hi = greeting;
\n
my_blob.write(pqxx::binary_cast(hi, sizeof(greeting)));
\n-

\n+

\n Caveats

\n

There are some restrictions on binary_cast that you must be aware of.

\n

First, your data must of a type that gives us bytes. So: char, unsigned char, signed char, int8_t, uint8_t, or of course std::byte. You can't feed in a vector of double, or anything like that.

\n

Second, the data must be laid out as a contiguous block in memory. If there's no std::data() implementation for your type, it's not suitable.

\n

Third, binary_cast only constructs something like a std::string_view. It does not make a copy of your actual data. So, make sure that your data remains alive and in the same place while you're using it.

\n \n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__fieldstream.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__fieldstream.html", "unified_diff": "@@ -148,15 +148,15 @@\n \n  basic_fieldstream (field const &f)\n  \n \n

Detailed Description

\n
template<typename CHAR = char, typename TRAITS = std::char_traits<CHAR>>
\n class pqxx::basic_fieldstream< CHAR, TRAITS >

Input stream that gets its data from a result field.

\n-
Deprecated:
To convert a field's value string to some other type, e.g. to an int, use the field's as<...>() member function. To read a field efficiently just as a string, use its c_str() or its as<std::string_vview>().
\n+
Deprecated:
To convert a field's value string to some other type, e.g. to an int, use the field's as<...>() member function. To read a field efficiently just as a string, use its c_str() or its as<std::string_vview>().
\n

Works like any other istream to read data from a field. It supports all formatting and streaming operations of std::istream. For convenience there is a fieldstream alias, which defines a basic_fieldstream for char. This is similar to how e.g. std::ifstream relates to std::basic_ifstream.

\n

This class has only been tested for the char type (and its default traits).

\n

The documentation for this class was generated from the following file:\n \n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__ilostream.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__ilostream.html", "unified_diff": "@@ -151,15 +151,15 @@\n  basic_ilostream (dbtransaction &t, oid o, largeobject::size_type buf_size=512)\n  Create a basic_ilostream.
\n  \n \n

Detailed Description

\n
template<typename CHAR = char, typename TRAITS = std::char_traits<CHAR>>
\n class pqxx::basic_ilostream< CHAR, TRAITS >

Input stream that gets its data from a large object.

\n-
Deprecated:
Access large objects directly using the blob class.
\n+
Deprecated:
Access large objects directly using the blob class.
\n

This class worked like any other istream, but to read data from a large object. It supported all formatting and streaming operations of std::istream.

\n

This functionality was considered too fragile and complex, so it has been replaced with a single, much simpler class.

\n

Constructor & Destructor Documentation

\n \n

◆ basic_ilostream() [1/2]

\n \n
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__lostream.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__lostream.html", "unified_diff": "@@ -151,15 +151,15 @@\n  basic_lostream (dbtransaction &t, oid o, largeobject::size_type buf_size=512)\n  Create a basic_lostream.
\n  \n \n

Detailed Description

\n
template<typename CHAR = char, typename TRAITS = std::char_traits<CHAR>>
\n class pqxx::basic_lostream< CHAR, TRAITS >

Stream that reads and writes a large object.

\n-
Deprecated:
Access large objects directly using the blob class.
\n+
Deprecated:
Access large objects directly using the blob class.
\n

This worked like a std::iostream, but to read data from, or write data to, a large object. It supported all formatting and streaming operations of std::iostream.

\n

This functionality was considered too fragile and complex, so it has been replaced with a single, much simpler class.

\n

Constructor & Destructor Documentation

\n \n

◆ basic_lostream() [1/2]

\n \n
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__olostream.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1basic__olostream.html", "unified_diff": "@@ -151,15 +151,15 @@\n  basic_olostream (dbtransaction &t, oid o, largeobject::size_type buf_size=512)\n  Create a basic_olostream.
\n  \n \n

Detailed Description

\n
template<typename CHAR = char, typename TRAITS = std::char_traits<CHAR>>
\n class pqxx::basic_olostream< CHAR, TRAITS >

Output stream that writes data back to a large object.

\n-
Deprecated:
Access large objects directly using the blob class.
\n+
Deprecated:
Access large objects directly using the blob class.
\n

This worked like any other ostream, but to write data to a large object. It supported all formatting and streaming operations of std::ostream.

\n

This functionality was considered too fragile and complex, so it has been replaced with a single, much simpler class.

\n

Constructor & Destructor Documentation

\n \n

◆ basic_olostream() [1/2]

\n \n
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1blob.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1blob.html", "unified_diff": "@@ -543,15 +543,15 @@\n \n inline \n \n \n
\n \n

Read up to std::size(buf) bytes from the object.

\n-
Deprecated:
As libpqxx moves to C++20 as its baseline language version, this will take and return std::span<std::byte>.
\n+
Deprecated:
As libpqxx moves to C++20 as its baseline language version, this will take and return std::span<std::byte>.
\n

Retrieves bytes from the blob, at the current position, until buf is full (i.e. its current size is reached), or there are no more bytes to read, whichever comes first.

\n

This function will not change either the size or the capacity of buf, only its contents.

\n

Returns the filled portion of buf. This may be empty.

\n \n
\n
\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1connection.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1connection.html", "unified_diff": "@@ -379,31 +379,31 @@\n  \n \n \n \n \n@@ -788,15 +788,15 @@\n \n \n \n \n \n

Notifications and Receivers

This is PostgreSQL-specific extension that goes beyond standard SQL. It's a communications mechanism between clients on a database, akin to a transactional message bus.

\n

A notification happens on a channel, identified by a name. You can set a connection to listen for notifications on the channel, using the connection's listen() function. (Internally this will issue a LISTEN SQL command). Any client on the database can send a notification on that channel by executing a NOTIFY SQL command. The transaction classes implement a convenience function for this, called transaction_base::notify().

\n

Notifications can carry an optional payload string. This is free-form text which carries additional information to the receiver.

\n
Warning
There are a few pitfalls with the channel names: case sensitivity and encodings. They are not too hard to avoid, but the safest thing to do is use only lower-case ASCII names.
\n-

\n+

\n Case sensitivity

\n

Channel names are case-sensitive. By default, however, PostgreSQL does convert the channel name in a NOTIFY or LISTEN command to lower-case, to give the impression that it is not case-sensitive while keeping the performance cost low.

\n

Thus, a LISTEN Hello will pick up a notification from NOTIFY Hello but also one from NOTIFY hello, because the database converts Hello into hello going in either direction.

\n

You can prevent this conversion by putting the name in double quotes, as quote_name() does. This is what libpqxx's notification functions do. If you use libpqxx to lisen on Hello but raw SQL to notify Hello, the notification will not arrive because the notification actually uses the string hello instead.

\n

Confused? Safest thing to do is to use only lower-case letters in the channel names!

\n-

\n+

\n Transactions

\n

Both listening and notifying are transactional in the backend: they only take effect once the back-end transaction in which you do them is committed.

\n

For an outgoing notification, this means that the transaction holds on to the outgoing message until you commit. (A nontransaction does not start a backend transaction, so if that's the transaction type you're using, the message does go out immediately.)

\n

For listening to incoming notifications, it gets a bit more complicated. To avoid complicating its internal bookkeeping, libpqxx only lets you start listening while no transaction is open.

\n

No notifications will come in while you're in a transaction... again unless it's a nontransaction of course, because that does not open a transaction on the backend.

\n-

\n+

\n Exceptions

\n

If your handler throws an exception, that will simply propagate up the call chain to wherever you were when you received it.

\n

This is differnt from the old notification_receiver mechanism which logged exceptions but did not propagate them.

\n-

\n+

\n Encoding

\n

When a client sends a notification, it does so in its client encoding. If necessary, the back-end converts them to its internal encoding. And then when a client receives the notification, the database converts it to the receiver's client encoding.

\n

Simple enough, right?

\n

However if you should change your connection's client encoding after you start listening on a channel, then any notifications you receive may have different channel names than the ones for which you are listening.

\n

If this could be a problem in your scenario, stick to names in pure ASCII. Those will look the same in all the encodings postgres supports.

\n
using notification_handler = std::function< void(notification)>
std::vector< pqxx::errorhandler * > pqxx::connection::get_errorhandlers () const
\n
\n-
Deprecated:
Return pointers to the active errorhandlers.
\n+
Deprecated:
Return pointers to the active errorhandlers.
\n

The entries are ordered from oldest to newest handler.

\n

The pointers point to the real errorhandlers. The container it returns however is a copy of the one internal to the connection, not a reference.

\n \n
\n \n \n

◆ get_notifs()

\n@@ -1528,15 +1528,15 @@\n )\n &\n \n \n
\n \n

Set session variable, using SQL's SET command.

\n-
Deprecated:
To set a session variable, use set_session_var. To set a transaction-local variable, execute an SQL SET command.
\n+
Deprecated:
To set a session variable, use set_session_var. To set a transaction-local variable, execute an SQL SET command.
\n
Warning
When setting a string value, you must escape and quote it first. Use the quote() function to do that.
\n
\n This executes an SQL query, so do not get or set variables while a table stream or pipeline is active on the same connection.
\n
Parameters
\n \n \n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1errorhandler.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1errorhandler.html", "unified_diff": "@@ -126,15 +126,15 @@\n \n \n \n
varVariable to set.
valueNew value for Var. This can be any SQL expression. If it's a string, be sure that it's properly escaped and quoted.

\n Friends

\n class internal::gate::errorhandler_connection
 
\n

Detailed Description

\n-
Deprecated:
Base class for obsolete error-handler callbacks.
\n+
Deprecated:
Base class for obsolete error-handler callbacks.
\n

This method of handling errors is obsolete. Use a \"notice handler\" instead.

\n
Warning
Strange things happen when a result object outlives its parent connection. If you register an error handler on a connection, then you must not access the result after destroying the connection. This applies even if you destroy the error handler first!
\n

Constructor & Destructor Documentation

\n \n

◆ errorhandler()

\n \n
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__robusttransaction.html", "unified_diff": "@@ -127,18 +127,18 @@\n \"\"\n \n
[legend]
\n \n \n \n+ \n \n \n+ \n \n \n \n \n \n \n \n \n

\n Protected Member Functions

\n- basic_robusttransaction (connection &cx, zview begin_command, std::string_view tname)
basic_robusttransaction (connection &cx, zview begin_command, std::string_view tname)
 
\n- basic_robusttransaction (connection &cx, zview begin_command)
basic_robusttransaction (connection &cx, zview begin_command)
 
\"-\"/ Protected Member Functions inherited from pqxx::dbtransaction
\n  dbtransaction (connection &cx)
 Begin transaction.
 
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -9,18 +9,18 @@\n [+]Inheritance diagram for pqxx::internal::basic_robusttransaction:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::basic_robusttransaction:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n P\bPr\bro\bot\bte\bec\bct\bte\bed\bd M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 b\bba\bas\bsi\bic\bc_\b_r\bro\bob\bbu\bus\bst\btt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx, _\bz_\bv_\bi_\be_\bw begin_command,\n- std::string_view tname)\n+ \u00a0 b\bba\bas\bsi\bic\bc_\b_r\bro\bob\bbu\bus\bst\btt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &_\bc_\bx, _\bz_\bv_\bi_\be_\bw _\bb_\be_\bg_\bi_\bn_\b__\bc_\bo_\bm_\bm_\ba_\bn_\bd,\n+ std::string_view _\bt_\bn_\ba_\bm_\be)\n \u00a0\n- \u00a0 b\bba\bas\bsi\bic\bc_\b_r\bro\bob\bbu\bus\bst\btt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx, _\bz_\bv_\bi_\be_\bw begin_command)\n+ \u00a0 b\bba\bas\bsi\bic\bc_\b_r\bro\bob\bbu\bus\bst\btt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &_\bc_\bx, _\bz_\bv_\bi_\be_\bw _\bb_\be_\bg_\bi_\bn_\b__\bc_\bo_\bm_\bm_\ba_\bn_\bd)\n \u00a0\n [-]\u00a0Protected Member Functions inherited from _\bp_\bq_\bx_\bx_\b:_\b:_\bd_\bb_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn\n \u00a0 d\bdb\bbt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx)\n \u00a0 Begin transaction.\n \u00a0\n \u00a0 d\bdb\bbt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx, std::string_view tname)\n \u00a0 Begin transaction.\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1basic__transaction.html", "unified_diff": "@@ -126,21 +126,21 @@\n \"\"\n \"\"\n \n
[legend]
\n \n \n-\n+\n \n \n+ \n \n \n+ \n \n \n \n \n \n \n \n \n \n

\n Protected Member Functions

 basic_transaction (connection &cx, zview begin_command, std::string_view tname)
 basic_transaction (connection &cx, zview begin_command, std::string_view tname)
 
\n- basic_transaction (connection &cx, zview begin_command, std::string &&tname)
basic_transaction (connection &cx, zview begin_command, std::string &&tname)
 
\n- basic_transaction (connection &cx, zview begin_command)
basic_transaction (connection &cx, zview begin_command)
 
\"-\"/ Protected Member Functions inherited from pqxx::dbtransaction
\n  dbtransaction (connection &cx)
 Begin transaction.
 
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -9,21 +9,21 @@\n [+]Inheritance diagram for pqxx::internal::basic_transaction:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::basic_transaction:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n P\bPr\bro\bot\bte\bec\bct\bte\bed\bd M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 _\bb_\ba_\bs_\bi_\bc_\b__\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx, _\bz_\bv_\bi_\be_\bw begin_command, std::\n- string_view tname)\n+ \u00a0 _\bb_\ba_\bs_\bi_\bc_\b__\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &_\bc_\bx, _\bz_\bv_\bi_\be_\bw _\bb_\be_\bg_\bi_\bn_\b__\bc_\bo_\bm_\bm_\ba_\bn_\bd, std::\n+ string_view _\bt_\bn_\ba_\bm_\be)\n \u00a0\n- \u00a0 b\bba\bas\bsi\bic\bc_\b_t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx, _\bz_\bv_\bi_\be_\bw begin_command, std::\n- string &&tname)\n+ \u00a0 b\bba\bas\bsi\bic\bc_\b_t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &_\bc_\bx, _\bz_\bv_\bi_\be_\bw _\bb_\be_\bg_\bi_\bn_\b__\bc_\bo_\bm_\bm_\ba_\bn_\bd, std::\n+ string &&_\bt_\bn_\ba_\bm_\be)\n \u00a0\n- \u00a0 b\bba\bas\bsi\bic\bc_\b_t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx, _\bz_\bv_\bi_\be_\bw begin_command)\n+ \u00a0 b\bba\bas\bsi\bic\bc_\b_t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &_\bc_\bx, _\bz_\bv_\bi_\be_\bw _\bb_\be_\bg_\bi_\bn_\b__\bc_\bo_\bm_\bm_\ba_\bn_\bd)\n \u00a0\n [-]\u00a0Protected Member Functions inherited from _\bp_\bq_\bx_\bx_\b:_\b:_\bd_\bb_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn\n \u00a0 d\bdb\bbt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx)\n \u00a0 Begin transaction.\n \u00a0\n \u00a0 d\bdb\bbt\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn (_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &cx, std::string_view tname)\n \u00a0 Begin transaction.\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1callgate.html", "unified_diff": "@@ -120,34 +120,34 @@\n \"\"\n \n
[legend]
\n \n \n \n+using \n \n \n \n+using \n \n \n

\n Protected Types

\n-using super = callgate< HOME >
super = callgate< HOME >
 This class, to keep constructors easy.
 
\n-using reference = HOME &
reference = HOME &
 A reference to the host class. Helps keep constructors easy.
 
\n \n \n+ \n \n \n+reference \n \n \n

\n Protected Member Functions

\n- callgate (reference x)
callgate (reference x)
 
\n-reference home () const noexcept
home () const noexcept
 The home object. The gate class has full \"private\" access.
 
\n

Detailed Description

\n-
template<typename HOME>
\n+
template<typename HOME>
\n class pqxx::internal::callgate< HOME >

Base class for call gates.

\n

A call gate defines a limited, private interface on the host class that specified client classes can access.

\n

The metaphor works as follows: the gate stands in front of a \"home,\" which is really a class, and only lets specific friends in.

\n

To implement a call gate that gives client C access to host H,

    \n
  • derive a gate class from callgate<H>;
  • \n
  • make the gate class a friend of H;
  • \n
  • make C a friend of the gate class; and
  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,28 +6,28 @@\n _\bP_\br_\bo_\bt_\be_\bc_\bt_\be_\bd_\b _\bT_\by_\bp_\be_\bs | _\bP_\br_\bo_\bt_\be_\bc_\bt_\be_\bd_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::callgate< HOME > Class Template Reference\n Base class for call gates. _\bM_\bo_\br_\be_\b._\b._\b.\n [+]Inheritance diagram for pqxx::internal::callgate< HOME >:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n P\bPr\bro\bot\bte\bec\bct\bte\bed\bd T\bTy\byp\bpe\bes\bs\n-using\u00a0 s\bsu\bup\bpe\ber\br = _\bc_\ba_\bl_\bl_\bg_\ba_\bt_\be< HOME >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 s\bsu\bup\bpe\ber\br = _\bc_\ba_\bl_\bl_\bg_\ba_\bt_\be< _\bH_\bO_\bM_\bE >\n \u00a0 This class, to keep constructors easy.\n \u00a0\n-using\u00a0 r\bre\bef\bfe\ber\bre\ben\bnc\bce\be = HOME &\n+_\bu_\bs_\bi_\bn_\bg\u00a0 r\bre\bef\bfe\ber\bre\ben\bnc\bce\be = _\bH_\bO_\bM_\bE &\n \u00a0 A reference to the host class. Helps keep constructors easy.\n \u00a0\n P\bPr\bro\bot\bte\bec\bct\bte\bed\bd M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 c\bca\bal\bll\blg\bga\bat\bte\be (_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be x)\n+ \u00a0 c\bca\bal\bll\blg\bga\bat\bte\be (_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bx)\n \u00a0\n-_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\u00a0 h\bho\bom\bme\be () const noexcept\n+_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\u00a0 h\bho\bom\bme\be () _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 The home object. The gate class has full \"private\" access.\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-template\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bH_\bO_\bM_\bE>\n class pqxx::internal::callgate< HOME >\n Base class for call gates.\n A call gate defines a limited, private interface on the host class that\n specified client classes can access.\n The metaphor works as follows: the gate stands in front of a \"home,\" which is\n really a class, and only lets specific friends in.\n To implement a call gate that gives client C access to host H,\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1dynamic__params.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1dynamic__params.html", "unified_diff": "@@ -96,70 +96,70 @@\n
    pqxx::internal::dynamic_params< IT, ACCESSOR > Class Template Reference
    \n
\n
\n \n \n \n+constexpr \n \n \n-\n+\n \n \n \n-\n+template<typenameC > \n+\n \n \n-\n-\n+\n+\n \n \n \n+constexprIT \n \n \n+constexprIT \n \n \n+constexprauto \n \n

\n Public Member Functions

\n-constexpr dynamic_params (IT begin, IT end)
dynamic_params (IT begin, IT end)
 Wrap a sequence of pointers or iterators.
 
constexpr dynamic_params (IT begin, IT end, ACCESSOR &acc)
constexpr dynamic_params (IT begin, IT end, ACCESSOR &acc)
 Wrap a sequence of pointers or iterators.
 
\n-template<typename C >
constexpr dynamic_params (C &container)
constexpr dynamic_params (C &container)
 Wrap a container.
 
template<typename C >
constexpr dynamic_params (C &container, ACCESSOR &acc)
template<typename C >
constexpr dynamic_params (C &container, ACCESSOR &acc)
 Wrap a container.
 
\n-constexpr IT begin () const noexcept
begin () const noexcept
 
\n-constexpr IT end () const noexcept
end () const noexcept
 
\n-constexpr auto access (decltype(*std::declval< IT >()) value) const -> decltype(std::declval< ACCESSOR >()(value))
access (decltype(*std::declval< IT >()) value) const -> decltype(std::declval< ACCESSOR >()(value))
 
\n

Detailed Description

\n-
template<typename IT, typename ACCESSOR = decltype(iterator_identity<IT>)>
\n-class pqxx::internal::dynamic_params< IT, ACCESSOR >
Deprecated:
Use params instead.
\n+
template<typename IT, typename ACCESSOR = decltype(iterator_identity<IT>)>
\n+class pqxx::internal::dynamic_params< IT, ACCESSOR >
Deprecated:
Use params instead.
\n

Constructor & Destructor Documentation

\n \n

◆ dynamic_params() [1/2]

\n \n
\n
\n
\n-template<typename IT , typename ACCESSOR = decltype(iterator_identity<IT>)>
\n+template<typename IT , typename ACCESSOR = decltype(iterator_identity<IT>)>
\n \n \n \n \n \n \n
\n \n \n- \n+ \n \n- \n+ \n \n \n \n \n \n- \n+ \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -178,31 +178,31 @@\n \n \n

◆ dynamic_params() [2/2]

\n \n
\n
\n
\n-template<typename IT , typename ACCESSOR = decltype(iterator_identity<IT>)>
\n+template<typename IT , typename ACCESSOR = decltype(iterator_identity<IT>)>
\n
\n-template<typename C >
\n+template<typename C >
\n
constexpr pqxx::internal::dynamic_params< IT, ACCESSOR >::dynamic_params constexpr pqxx::internal::dynamic_params< IT, ACCESSOR >::dynamic_params (IT IT begin,
IT IT end,
ACCESSOR & ACCESSORacc 
)
\n \n \n \n \n \n
\n \n \n- \n+ \n \n- \n+ \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,58 +2,58 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::dynamic_params< IT, ACCESSOR > Class Template Reference\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- constexpr\u00a0 d\bdy\byn\bna\bam\bmi\bic\bc_\b_p\bpa\bar\bra\bam\bms\bs (IT begin, IT end)\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br\u00a0 d\bdy\byn\bna\bam\bmi\bic\bc_\b_p\bpa\bar\bra\bam\bms\bs (_\bI_\bT begin, _\bI_\bT end)\n \u00a0 Wrap a sequence of pointers or iterators.\n \u00a0\n- constexpr\u00a0 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs (IT begin, IT end, ACCESSOR &acc)\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br\u00a0 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs (_\bI_\bT begin, _\bI_\bT end, _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR &_\ba_\bc_\bc)\n \u00a0 Wrap a sequence of pointers or iterators.\n \u00a0\n-template\n- constexpr\u00a0 d\bdy\byn\bna\bam\bmi\bic\bc_\b_p\bpa\bar\bra\bam\bms\bs (C &container)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC >\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br\u00a0 d\bdy\byn\bna\bam\bmi\bic\bc_\b_p\bpa\bar\bra\bam\bms\bs (_\bC &_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br)\n \u00a0 Wrap a container.\n \u00a0\n-template\n- constexpr\u00a0 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs (C &container, ACCESSOR &acc)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC >\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br\u00a0 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs (_\bC &_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br, _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR &_\ba_\bc_\bc)\n \u00a0 Wrap a container.\n \u00a0\n- constexpr IT\u00a0 b\bbe\beg\bgi\bin\bn () const noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bI_\bT\u00a0 b\bbe\beg\bgi\bin\bn () _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n- constexpr IT\u00a0 e\ben\bnd\bd () const noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bI_\bT\u00a0 e\ben\bnd\bd () _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n-constexpr auto\u00a0 a\bac\bcc\bce\bes\bss\bs (decltype(*std::declval< IT >()) value) const -\n- > decltype(std::declval< ACCESSOR >()(value))\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\ba_\bu_\bt_\bo\u00a0 a\bac\bcc\bce\bes\bss\bs (_\bd_\be_\bc_\bl_\bt_\by_\bp_\be(*std::declval< _\bI_\bT >()) value) _\bc_\bo_\bn_\bs_\bt -\n+ > _\bd_\be_\bc_\bl_\bt_\by_\bp_\be(std::declval< _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR >()(value))\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-template)>\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bI_\bT, _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR = decltype(iterator_identity)>\n class pqxx::internal::dynamic_params< IT, ACCESSOR >\n _\bD\bD_\be\be_\bp\bp_\br\br_\be\be_\bc\bc_\ba\ba_\bt\bt_\be\be_\bd\bd_\b:\b:\n Use _\bp_\ba_\br_\ba_\bm_\bs instead.\n *\b**\b**\b**\b**\b* C\bCo\bon\bns\bst\btr\bru\buc\bct\bto\bor\br &\b& D\bDe\bes\bst\btr\bru\buc\bct\bto\bor\br D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0d\bdy\byn\bna\bam\bmi\bic\bc_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) [\b[1\b1/\b/2\b2]\b] *\b**\b**\b**\b**\b*\n-template)>\n-constexpr _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs< ( IT\u00a0 b\bbe\beg\bgi\bin\bn,\n-IT, ACCESSOR >::dynamic_params\n- IT\u00a0 e\ben\bnd\bd, inlineconstexpr\n- ACCESSOR &\u00a0 a\bac\bcc\bc\u00a0\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bI_\bT , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR = decltype(iterator_identity)>\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs< ( _\bI_\bT\u00a0 b\bbe\beg\bgi\bin\bn,\n+_\bI_\bT, _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR >::dynamic_params\n+ _\bI_\bT\u00a0 e\ben\bnd\bd, inlineconstexpr\n+ _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR &\u00a0 a\bac\bcc\bc\u00a0\n )\n Wrap a sequence of pointers or iterators.\n This version takes an accessor callable. If you pass an accessor acc, then any\n parameter p will go into the statement's parameter list as acc(p).\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0d\bdy\byn\bna\bam\bmi\bic\bc_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) [\b[2\b2/\b/2\b2]\b] *\b**\b**\b**\b**\b*\n-template)>\n-template\n-constexpr _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:\n-_\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs< IT, ACCESSOR ( C &\u00a0 c\bco\bon\bnt\bta\bai\bin\bne\ber\br,\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bI_\bT , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR = decltype(iterator_identity)>\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC >\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:\n+_\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs< _\bI_\bT, _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR ( _\bC &\u00a0 c\bco\bon\bnt\bta\bai\bin\bne\ber\br,\n >::dynamic_params inlineexplicitconstexpr\n- ACCESSOR &\u00a0 a\bac\bcc\bc\u00a0\n+ _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR &\u00a0 a\bac\bcc\bc\u00a0\n )\n Wrap a container.\n This version takes an accessor callable. If you pass an accessor acc, then any\n parameter p will go into the statement's parameter list as acc(p).\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__errorhandler.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n
constexpr pqxx::internal::dynamic_params< IT, ACCESSOR >::dynamic_params constexpr pqxx::internal::dynamic_params< IT, ACCESSOR >::dynamic_params (C & Ccontainer,
ACCESSOR & ACCESSORacc 
)
\n \n \n+class \n \n

\n Friends

\n-class pqxx::errorhandler
pqxx::errorhandler
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::connection_errorhandler:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::connection_errorhandler:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:e\ber\brr\bro\bor\brh\bha\ban\bnd\bdl\ble\ber\br\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:e\ber\brr\bro\bor\brh\bha\ban\bnd\bdl\ble\ber\br\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\be_\br_\br_\bo_\br_\bh_\ba_\bn_\bd_\bl_\be_\br_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__largeobject.html", "unified_diff": "@@ -120,18 +120,18 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n \n+class \n \n

\n Friends

\n-class pqxx::blob
pqxx::blob
 
\n-class pqxx::largeobject
pqxx::largeobject
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,17 +8,17 @@\n [+]Inheritance diagram for pqxx::internal::gate::connection_largeobject:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::connection_largeobject:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:b\bbl\blo\bob\bb\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:b\bbl\blo\bob\bb\n \u00a0\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:l\bla\bar\brg\bge\beo\bob\bbj\bje\bec\bct\bt\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:l\bla\bar\brg\bge\beo\bob\bbj\bje\bec\bct\bt\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bl_\ba_\br_\bg_\be_\bo_\bb_\bj_\be_\bc_\bt_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__notification__receiver.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::notification_receiver
pqxx::notification_receiver
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -10,15 +10,15 @@\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::\n connection_notification_receiver:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:n\bno\bot\bti\bif\bfi\bic\bca\bat\bti\bio\bon\bn_\b_r\bre\bec\bce\bei\biv\bve\ber\br\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:n\bno\bot\bti\bif\bfi\bic\bca\bat\bti\bio\bon\bn_\b_r\bre\bec\bce\bei\biv\bve\ber\br\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bn_\bo_\bt_\bi_\bf_\bi_\bc_\ba_\bt_\bi_\bo_\bn_\b__\br_\be_\bc_\be_\bi_\bv_\be_\br_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__pipeline.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::pipeline
pqxx::pipeline
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::connection_pipeline:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::connection_pipeline:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:p\bpi\bip\bpe\bel\bli\bin\bne\be\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:p\bpi\bip\bpe\bel\bli\bin\bne\be\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bp_\bi_\bp_\be_\bl_\bi_\bn_\be_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__sql__cursor.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::internal::sql_cursor
pqxx::internal::sql_cursor
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::connection_sql_cursor:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::connection_sql_cursor:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bin\bnt\bte\ber\brn\bna\bal\bl:\b::\b:s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bin\bnt\bte\ber\brn\bna\bal\bl:\b::\b:s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bs_\bq_\bl_\b__\bc_\bu_\br_\bs_\bo_\br_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__stream__to.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::stream_to
pqxx::stream_to
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::connection_stream_to:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::connection_stream_to:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:s\bst\btr\bre\bea\bam\bm_\b_t\bto\bo\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:s\bst\btr\bre\bea\bam\bm_\b_t\bto\bo\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bs_\bt_\br_\be_\ba_\bm_\b__\bt_\bo_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1connection__transaction.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::transaction_base
pqxx::transaction_base
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::connection_transaction:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::connection_transaction:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn_\b_b\bba\bas\bse\be\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn_\b_b\bba\bas\bse\be\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1const__connection__largeobject.html", "unified_diff": "@@ -120,18 +120,18 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n \n+class \n \n

\n Friends

\n-class pqxx::blob
pqxx::blob
 
\n-class pqxx::largeobject
pqxx::largeobject
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -9,17 +9,17 @@\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::\n const_connection_largeobject:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:b\bbl\blo\bob\bb\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:b\bbl\blo\bob\bb\n \u00a0\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:l\bla\bar\brg\bge\beo\bob\bbj\bje\bec\bct\bt\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:l\bla\bar\brg\bge\beo\bob\bbj\bje\bec\bct\bt\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bl_\ba_\br_\bg_\be_\bo_\bb_\bj_\be_\bc_\bt_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1errorhandler__connection.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::connection
pqxx::connection
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::errorhandler_connection:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::errorhandler_connection:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\be_\br_\br_\bo_\br_\bh_\ba_\bn_\bd_\bl_\be_\br_\b-_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursor__iterator__icursorstream.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::icursorstream
pqxx::icursorstream
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -10,15 +10,15 @@\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::\n icursor_iterator_icursorstream:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bic\bcu\bur\brs\bso\bor\brs\bst\btr\bre\bea\bam\bm\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bic\bcu\bur\brs\bso\bor\brs\bst\btr\bre\bea\bam\bm\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bi_\bc_\bu_\br_\bs_\bo_\br_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b-_\bi_\bc_\bu_\br_\bs_\bo_\br_\bs_\bt_\br_\be_\ba_\bm_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::icursor_iterator
pqxx::icursor_iterator
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -10,15 +10,15 @@\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::\n icursorstream_icursor_iterator:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bic\bcu\bur\brs\bso\bor\br_\b_i\bit\bte\ber\bra\bat\bto\bor\br\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bic\bcu\bur\brs\bso\bor\br_\b_i\bit\bte\ber\bra\bat\bto\bor\br\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bi_\bc_\bu_\br_\bs_\bo_\br_\bs_\bt_\br_\be_\ba_\bm_\b-_\bi_\bc_\bu_\br_\bs_\bo_\br_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__connection.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::connection
pqxx::connection
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::result_connection:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::result_connection:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\br_\be_\bs_\bu_\bl_\bt_\b-_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__creation.html", "unified_diff": "@@ -120,18 +120,18 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n \n+class \n \n

\n Friends

\n-class pqxx::connection
pqxx::connection
 
\n-class pqxx::pipeline
pqxx::pipeline
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,17 +8,17 @@\n [+]Inheritance diagram for pqxx::internal::gate::result_creation:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::result_creation:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn\n \u00a0\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:p\bpi\bip\bpe\bel\bli\bin\bne\be\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:p\bpi\bip\bpe\bel\bli\bin\bne\be\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\br_\be_\bs_\bu_\bl_\bt_\b-_\bc_\br_\be_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__pipeline.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::pipeline
pqxx::pipeline
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::result_pipeline:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::result_pipeline:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:p\bpi\bip\bpe\bel\bli\bin\bne\be\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:p\bpi\bip\bpe\bel\bli\bin\bne\be\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\br_\be_\bs_\bu_\bl_\bt_\b-_\bp_\bi_\bp_\be_\bl_\bi_\bn_\be_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1result__sql__cursor.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::internal::sql_cursor
pqxx::internal::sql_cursor
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::result_sql_cursor:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::result_sql_cursor:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bin\bnt\bte\ber\brn\bna\bal\bl:\b::\b:s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bin\bnt\bte\ber\brn\bna\bal\bl:\b::\b:s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\br_\be_\bs_\bu_\bl_\bt_\b-_\bs_\bq_\bl_\b__\bc_\bu_\br_\bs_\bo_\br_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::internal::sql_cursor
pqxx::internal::sql_cursor
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n [+]Inheritance diagram for pqxx::internal::gate::transaction_sql_cursor:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::transaction_sql_cursor:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bin\bnt\bte\ber\brn\bna\bal\bl:\b::\b:s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:i\bin\bnt\bte\ber\brn\bna\bal\bl:\b::\b:s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b-_\bs_\bq_\bl_\b__\bc_\bu_\br_\bs_\bo_\br_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus.html", "unified_diff": "@@ -120,15 +120,15 @@\n \"\"\n \n
[legend]
\n \n \n \n+class \n \n

\n Friends

\n-class pqxx::transaction_focus
pqxx::transaction_focus
 
\n
The documentation for this class was generated from the following file:\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -9,15 +9,15 @@\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::\n transaction_transaction_focus:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n F\bFr\bri\bie\ben\bnd\bds\bs\n-class\u00a0 p\bpq\bqx\bxx\bx:\b::\b:t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn_\b_f\bfo\boc\bcu\bus\bs\n+_\bc_\bl_\ba_\bs_\bs\u00a0 p\bpq\bqx\bxx\bx:\b::\b:t\btr\bra\ban\bns\bsa\bac\bct\bti\bio\bon\bn_\b_f\bfo\boc\bcu\bus\bs\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/gates/\n _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b-_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iter.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iter.html", "unified_diff": "@@ -100,41 +100,41 @@\n \n

Iterator for looped unpacking of a result. \n More...

\n \n \n \n+using \n \n

\n Public Types

\n-using value_type = std::tuple< TYPE... >
value_type = std::tuple< TYPE... >
 
\n \n \n+ \n \n \n \n+ \n \n \n+ \n \n \n \n \n+bool \n \n \n \n+bool \n \n \n+value_type const & \n \n

\n Public Member Functions

\n- result_iter ()=default
result_iter ()=default
 Construct an \"end\" iterator.
 
\n- result_iter (result const &home)
result_iter (result const &home)
 
\n- result_iter (result_iter const &)=default
result_iter (result_iter const &)=default
 
\n result_iteroperator++ ()
 
\n-bool operator== (result_iter const &rhs) const
operator== (result_iter const &rhs) const
 Comparison only works for comparing to end().
 
\n-bool operator!= (result_iter const &rhs) const
operator!= (result_iter const &rhs) const
 
\n-value_type const & operator* () const
operator* () const
 
\n

Detailed Description

\n
template<typename... TYPE>
\n class pqxx::internal::result_iter< TYPE >

Iterator for looped unpacking of a result.

\n

The documentation for this class was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/result_iter.hxx
  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,32 +3,32 @@\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bT_\by_\bp_\be_\bs | _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::result_iter< TYPE > Class Template Reference\n Iterator for looped unpacking of a result. _\bM_\bo_\br_\be_\b._\b._\b.\n P\bPu\bub\bbl\bli\bic\bc T\bTy\byp\bpe\bes\bs\n-using\u00a0 v\bva\bal\blu\bue\be_\b_t\bty\byp\bpe\be = std::tuple< TYPE... >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 v\bva\bal\blu\bue\be_\b_t\bty\byp\bpe\be = std::tuple< TYPE... >\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\br ()=default\n+ \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\br ()=_\bd_\be_\bf_\ba_\bu_\bl_\bt\n \u00a0 Construct an \"end\" iterator.\n \u00a0\n- \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\br (_\br_\be_\bs_\bu_\bl_\bt const &home)\n+ \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\br (_\br_\be_\bs_\bu_\bl_\bt _\bc_\bo_\bn_\bs_\bt &home)\n \u00a0\n- \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\br (_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &)=default\n+ \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\br (_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br _\bc_\bo_\bn_\bs_\bt &)=_\bd_\be_\bf_\ba_\bu_\bl_\bt\n \u00a0\n _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br+\b++\b+ ()\n \u00a0\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &rhs) const\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br _\bc_\bo_\bn_\bs_\bt &_\br_\bh_\bs) _\bc_\bo_\bn_\bs_\bt\n \u00a0 Comparison only works for comparing to end().\n \u00a0\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &rhs) const\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br _\bc_\bo_\bn_\bs_\bt &_\br_\bh_\bs) _\bc_\bo_\bn_\bs_\bt\n \u00a0\n-value_type const &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br*\b* () const\n+value_type _\bc_\bo_\bn_\bs_\bt &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br*\b* () _\bc_\bo_\bn_\bs_\bt\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n template\n class pqxx::internal::result_iter< TYPE >\n Iterator for looped unpacking of a result.\n ===============================================================================\n The documentation for this class was generated from the following file:\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iteration.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1result__iteration.html", "unified_diff": "@@ -97,27 +97,27 @@\n
    pqxx::internal::result_iteration< TYPE > Class Template Reference
    \n \n
    \n \n \n \n+using \n \n

    \n Public Types

    \n-using iterator = result_iter< TYPE... >
    iterator = result_iter< TYPE... >
     
    \n \n \n+ \n \n \n+iterator \n \n \n+iterator \n \n

    \n Public Member Functions

    \n- result_iteration (result const &home)
    result_iteration (result const &home)
     
    \n-iterator begin () const
    begin () const
     
    \n-iterator end () const
    end () const
     
    \n
    The documentation for this class was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/result_iter.hxx
    • \n
    \n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,22 +2,22 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bT_\by_\bp_\be_\bs | _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::result_iteration< TYPE > Class Template Reference\n P\bPu\bub\bbl\bli\bic\bc T\bTy\byp\bpe\bes\bs\n-using\u00a0 i\bit\bte\ber\bra\bat\bto\bor\br = _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br< TYPE... >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 i\bit\bte\ber\bra\bat\bto\bor\br = _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br< TYPE... >\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\bra\bat\bti\bio\bon\bn (_\br_\be_\bs_\bu_\bl_\bt const &home)\n+ \u00a0 r\bre\bes\bsu\bul\blt\bt_\b_i\bit\bte\ber\bra\bat\bti\bio\bon\bn (_\br_\be_\bs_\bu_\bl_\bt _\bc_\bo_\bn_\bs_\bt &home)\n \u00a0\n-_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 b\bbe\beg\bgi\bin\bn () const\n+_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 b\bbe\beg\bgi\bin\bn () _\bc_\bo_\bn_\bs_\bt\n \u00a0\n-_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 e\ben\bnd\bd () const\n+_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 e\ben\bnd\bd () _\bc_\bo_\bn_\bs_\bt\n \u00a0\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1sql__cursor.html", "unified_diff": "@@ -123,43 +123,43 @@\n \"\"\n \n
    [legend]
    \n \n \n \n+ \n \n \n+ \n \n \n+result \n \n \n+result \n \n \n+difference_type \n \n \n+difference_type \n \n-\n+\n \n \n-\n+\n \n \n \n+resultconst & \n \n \n \n+void \n \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -9,44 +9,44 @@\n [+]Inheritance diagram for pqxx::internal::sql_cursor:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::sql_cursor:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &t, std::\n- string_view query, std::string_view cname,\n- _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:_\ba_\bc_\bc_\be_\bs_\bs_\b__\bp_\bo_\bl_\bi_\bc_\by ap, _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:\n- _\bu_\bp_\bd_\ba_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by up, _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:_\bo_\bw_\bn_\be_\br_\bs_\bh_\bi_\bp_\b__\bp_\bo_\bl_\bi_\bc_\by\n- op, bool hold)\n+ \u00a0 s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt, std::\n+ string_view query, std::string_view _\bc_\bn_\ba_\bm_\be,\n+ _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:_\ba_\bc_\bc_\be_\bs_\bs_\b__\bp_\bo_\bl_\bi_\bc_\by _\ba_\bp, _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:\n+ _\bu_\bp_\bd_\ba_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by _\bu_\bp, _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:_\bo_\bw_\bn_\be_\br_\bs_\bh_\bi_\bp_\b__\bp_\bo_\bl_\bi_\bc_\by\n+ _\bo_\bp, _\bb_\bo_\bo_\bl _\bh_\bo_\bl_\bd)\n \u00a0\n- \u00a0 s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &t, std::\n- string_view cname, _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:_\bo_\bw_\bn_\be_\br_\bs_\bh_\bi_\bp_\b__\bp_\bo_\bl_\bi_\bc_\by\n- op)\n+ \u00a0 s\bsq\bql\bl_\b_c\bcu\bur\brs\bso\bor\br (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt, std::\n+ string_view _\bc_\bn_\ba_\bm_\be, _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be_\b:_\b:_\bo_\bw_\bn_\be_\br_\bs_\bh_\bi_\bp_\b__\bp_\bo_\bl_\bi_\bc_\by\n+ _\bo_\bp)\n \u00a0\n- _\br_\be_\bs_\bu_\bl_\bt\u00a0 f\bfe\bet\btc\bch\bh (difference_type rows, difference_type\n- &displacement)\n+ _\br_\be_\bs_\bu_\bl_\bt\u00a0 f\bfe\bet\btc\bch\bh (difference_type _\br_\bo_\bw_\bs, difference_type\n+ &_\bd_\bi_\bs_\bp_\bl_\ba_\bc_\be_\bm_\be_\bn_\bt)\n \u00a0\n- _\br_\be_\bs_\bu_\bl_\bt\u00a0 f\bfe\bet\btc\bch\bh (difference_type rows)\n+ _\br_\be_\bs_\bu_\bl_\bt\u00a0 f\bfe\bet\btc\bch\bh (difference_type _\br_\bo_\bw_\bs)\n \u00a0\n- difference_type\u00a0 m\bmo\bov\bve\be (difference_type rows, difference_type\n- &displacement)\n+ difference_type\u00a0 m\bmo\bov\bve\be (difference_type _\br_\bo_\bw_\bs, difference_type\n+ &_\bd_\bi_\bs_\bp_\bl_\ba_\bc_\be_\bm_\be_\bn_\bt)\n \u00a0\n- difference_type\u00a0 m\bmo\bov\bve\be (difference_type rows)\n+ difference_type\u00a0 m\bmo\bov\bve\be (difference_type _\br_\bo_\bw_\bs)\n \u00a0\n- difference_type\u00a0 _\bp_\bo_\bs () const noexcept\n+ difference_type\u00a0 _\bp_\bo_\bs () _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Current position, or -1 for unknown.\n \u00a0\n- difference_type\u00a0 _\be_\bn_\bd_\bp_\bo_\bs () const noexcept\n+ difference_type\u00a0 _\be_\bn_\bd_\bp_\bo_\bs () _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 End position, or -1 for unknown.\n \u00a0\n- _\br_\be_\bs_\bu_\bl_\bt const &\u00a0 e\bem\bmp\bpt\bty\by_\b_r\bre\bes\bsu\bul\blt\bt () const noexcept\n+ _\br_\be_\bs_\bu_\bl_\bt _\bc_\bo_\bn_\bs_\bt &\u00a0 e\bem\bmp\bpt\bty\by_\b_r\bre\bes\bsu\bul\blt\bt () _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Return zero-row result for this cursor.\n \u00a0\n- void\u00a0 c\bcl\blo\bos\bse\be () noexcept\n+ _\bv_\bo_\bi_\bd\u00a0 c\bcl\blo\bos\bse\be () _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n [-]\u00a0Public Member Functions inherited from _\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be\n \u00a0 c\bcu\bur\brs\bso\bor\br_\b_b\bba\bas\bse\be (_\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be const &)=delete\n \u00a0\n _\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bc_\bu_\br_\bs_\bo_\br_\b__\bb_\ba_\bs_\be const &)=delete\n \u00a0\n constexpr std::string const &\u00a0 _\bn_\ba_\bm_\be () const noexcept\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__from__input__iterator.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__from__input__iterator.html", "unified_diff": "@@ -100,41 +100,41 @@\n \n

    Input iterator for stream_from. \n More...

    \n

    \n Public Member Functions

    \n- sql_cursor (transaction_base &t, std::string_view query, std::string_view cname, cursor_base::access_policy ap, cursor_base::update_policy up, cursor_base::ownership_policy op, bool hold)
    sql_cursor (transaction_base &t, std::string_view query, std::string_view cname, cursor_base::access_policy ap, cursor_base::update_policy up, cursor_base::ownership_policy op, bool hold)
     
    \n- sql_cursor (transaction_base &t, std::string_view cname, cursor_base::ownership_policy op)
    sql_cursor (transaction_base &t, std::string_view cname, cursor_base::ownership_policy op)
     
    \n-result fetch (difference_type rows, difference_type &displacement)
    fetch (difference_type rows, difference_type &displacement)
     
    \n-result fetch (difference_type rows)
    fetch (difference_type rows)
     
    \n-difference_type move (difference_type rows, difference_type &displacement)
    move (difference_type rows, difference_type &displacement)
     
    \n-difference_type move (difference_type rows)
    move (difference_type rows)
     
    difference_type pos () const noexcept
    difference_type pos () const noexcept
     Current position, or -1 for unknown.
     
    difference_type endpos () const noexcept
    difference_type endpos () const noexcept
     End position, or -1 for unknown.
     
    \n-result const & empty_result () const noexcept
    empty_result () const noexcept
     Return zero-row result for this cursor.
     
    \n-void close () noexcept
    close () noexcept
     
    \"-\"/ Public Member Functions inherited from pqxx::cursor_base
    \n  cursor_base (cursor_base const &)=delete
     
    \n cursor_baseoperator= (cursor_base const &)=delete
    \n \n \n+using \n \n

    \n Public Types

    \n-using value_type = std::tuple< TYPE... >
    value_type = std::tuple< TYPE... >
     
    \n \n \n+ \n \n \n \n \n \n+ \n \n \n \n \n+value_type const & \n \n \n+bool \n \n \n \n+bool \n \n \n

    \n Public Member Functions

    \n- stream_from_input_iterator ()=default
    stream_from_input_iterator ()=default
     Construct an \"end\" iterator.
     
    \n  stream_from_input_iterator (stream_t &home)
     
    \n- stream_from_input_iterator (stream_from_input_iterator const &)=default
    stream_from_input_iterator (stream_from_input_iterator const &)=default
     
    \n stream_from_input_iteratoroperator++ ()
     
    \n-value_type const & operator* () const
    operator* () const
     
    \n-bool operator== (stream_from_input_iterator const &rhs) const
    operator== (stream_from_input_iterator const &rhs) const
     Comparison only works for comparing to end().
     
    \n-bool operator!= (stream_from_input_iterator const &rhs) const
    operator!= (stream_from_input_iterator const &rhs) const
     Comparison only works for comparing to end().
     
    \n

    Detailed Description

    \n
    template<typename... TYPE>
    \n class pqxx::internal::stream_from_input_iterator< TYPE >

    Input iterator for stream_from.

    \n

    Just barely enough to support range-based \"for\" loops on stream_from. Don't assume that any of the usual behaviour works beyond that.

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,35 +3,35 @@\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bT_\by_\bp_\be_\bs | _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::stream_from_input_iterator< TYPE > Class Template Reference\n Input iterator for _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm. _\bM_\bo_\br_\be_\b._\b._\b.\n P\bPu\bub\bbl\bli\bic\bc T\bTy\byp\bpe\bes\bs\n-using\u00a0 v\bva\bal\blu\bue\be_\b_t\bty\byp\bpe\be = std::tuple< TYPE... >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 v\bva\bal\blu\bue\be_\b_t\bty\byp\bpe\be = std::tuple< TYPE... >\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bro\bom\bm_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bto\bor\br ()=default\n+ \u00a0 s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bro\bom\bm_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bto\bor\br ()=_\bd_\be_\bf_\ba_\bu_\bl_\bt\n \u00a0 Construct an \"end\" iterator.\n \u00a0\n \u00a0 s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bro\bom\bm_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bto\bor\br (_\bs_\bt_\br_\be_\ba_\bm_\b__\bt &home)\n \u00a0\n \u00a0 s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bro\bom\bm_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bto\bor\br\n- (_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const &)=default\n+ (_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\bo_\bn_\bs_\bt &)=_\bd_\be_\bf_\ba_\bu_\bl_\bt\n \u00a0\n _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br+\b++\b+ ()\n \u00a0\n- value_type const &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br*\b* () const\n+ value_type _\bc_\bo_\bn_\bs_\bt &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br*\b* () _\bc_\bo_\bn_\bs_\bt\n \u00a0\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const\n- &rhs) const\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\bo_\bn_\bs_\bt\n+ &_\br_\bh_\bs) _\bc_\bo_\bn_\bs_\bt\n \u00a0 Comparison only works for comparing to end().\n \u00a0\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const\n- &rhs) const\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\bo_\bn_\bs_\bt\n+ &_\br_\bh_\bs) _\bc_\bo_\bn_\bs_\bt\n \u00a0 Comparison only works for comparing to end().\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n template\n class pqxx::internal::stream_from_input_iterator< TYPE >\n Input iterator for _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm.\n Just barely enough to support range-based \"for\" loops on _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm. Don't\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__input__iteration.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__input__iteration.html", "unified_diff": "@@ -100,30 +100,30 @@\n \n

    Iteration over a stream_query. \n More...

    \n \n \n \n+using \n \n \n+using \n \n

    \n Public Types

    \n-using stream_t = stream_from
    stream_t = stream_from
     
    \n-using iterator = stream_from_input_iterator< TYPE... >
    iterator = stream_from_input_iterator< TYPE... >
     
    \n \n \n \n \n+iterator \n \n \n+iterator \n \n

    \n Public Member Functions

    \n  stream_input_iteration (stream_t &home)
     
    \n-iterator begin () const
    begin () const
     
    \n-iterator end () const
    end () const
     
    \n

    Detailed Description

    \n
    template<typename... TYPE>
    \n class pqxx::internal::stream_input_iteration< TYPE >

    Iteration over a stream_query.

    \n

    The documentation for this class was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/stream_iterator.hxx
    • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,24 +3,24 @@\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bT_\by_\bp_\be_\bs | _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::stream_input_iteration< TYPE > Class Template Reference\n Iteration over a _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n P\bPu\bub\bbl\bli\bic\bc T\bTy\byp\bpe\bes\bs\n-using\u00a0 s\bst\btr\bre\bea\bam\bm_\b_t\bt = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm\n+_\bu_\bs_\bi_\bn_\bg\u00a0 s\bst\btr\bre\bea\bam\bm_\b_t\bt = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm\n \u00a0\n-using\u00a0 i\bit\bte\ber\bra\bat\bto\bor\br = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br< TYPE... >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 i\bit\bte\ber\bra\bat\bto\bor\br = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br< TYPE... >\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n \u00a0 s\bst\btr\bre\bea\bam\bm_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bti\bio\bon\bn (_\bs_\bt_\br_\be_\ba_\bm_\b__\bt &home)\n \u00a0\n-_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 b\bbe\beg\bgi\bin\bn () const\n+_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 b\bbe\beg\bgi\bin\bn () _\bc_\bo_\bn_\bs_\bt\n \u00a0\n-_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 e\ben\bnd\bd () const\n+_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 e\ben\bnd\bd () _\bc_\bo_\bn_\bs_\bt\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n template\n class pqxx::internal::stream_input_iteration< TYPE >\n Iteration over a _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by.\n ===============================================================================\n The documentation for this class was generated from the following file:\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query.html", "unified_diff": "@@ -126,46 +126,46 @@\n \"\"\n \n
      [legend]
    \n \n \n \n+using \n \n

    \n Public Types

    \n-using line_handle = std::unique_ptr< char, void(*)(void const *)>
    line_handle = std::unique_ptr< char, void(*)(void const *)>
     
    \n \n \n+ \n \n \n \n+ \n \n \n \n+ \n \n \n+stream_query & \n \n \n+bool \n \n \n \n+auto \n \n \n-\n+\n \n \n \n+std::tuple< TYPE... > \n \n \n \n \n \n

    \n Public Member Functions

    \n- stream_query (transaction_base &tx, std::string_view query)
    stream_query (transaction_base &tx, std::string_view query)
     Execute query on tx, stream results.
     
    \n- stream_query (transaction_base &tx, std::string_view query, params const &)
    stream_query (transaction_base &tx, std::string_view query, params const &)
     Execute query on tx, stream results.
     
    \n- stream_query (stream_query &&)=delete
    stream_query (stream_query &&)=delete
     
    \n-stream_queryoperator= (stream_query &&)=delete
    operator= (stream_query &&)=delete
     
    \n-bool done () const &noexcept
    done () const &noexcept
     Has this stream reached the end of its data?
     
    \n-auto begin () &
    begin () &
     Begin iterator. Only for use by \"range for.\".
     
    auto end () const &
    auto end () const &
     End iterator. Only for use by \"range for.\".
     
    \n-std::tuple< TYPE... > parse_line (zview line) &
    parse_line (zview line) &
     Parse and convert the latest line of data we received.
     
    \n std::pair< line_handle, std::size_t > read_line () &
     Read a COPY line from the server.
     
    \n@@ -187,15 +187,15 @@\n
    \n template<typename... TYPE>
    \n \n \n \n \n \n
    \n \n \n- \n+ \n \n \n \n \n
    auto pqxx::internal::stream_query< TYPE >::end auto pqxx::internal::stream_query< TYPE >::end () const &
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -10,42 +10,42 @@\n [+]Inheritance diagram for pqxx::internal::stream_query< TYPE >:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::stream_query< TYPE >:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n P\bPu\bub\bbl\bli\bic\bc T\bTy\byp\bpe\bes\bs\n-using\u00a0 l\bli\bin\bne\be_\b_h\bha\ban\bnd\bdl\ble\be = std::unique_ptr< char, void(*)(void const *)>\n+_\bu_\bs_\bi_\bn_\bg\u00a0 l\bli\bin\bne\be_\b_h\bha\ban\bnd\bdl\ble\be = std::unique_ptr< _\bc_\bh_\ba_\br, _\bv_\bo_\bi_\bd(*)(_\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt *)>\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx,\n+ \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt_\bx,\n std::string_view query)\n \u00a0 Execute query on tx, stream results.\n \u00a0\n- \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx,\n- std::string_view query, _\bp_\ba_\br_\ba_\bm_\bs const &)\n+ \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt_\bx,\n+ std::string_view query, _\bp_\ba_\br_\ba_\bm_\bs _\bc_\bo_\bn_\bs_\bt &)\n \u00a0 Execute query on tx, stream results.\n \u00a0\n- \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &&)=delete\n+ \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &&)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n- _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &&)=delete\n+ _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &&)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n- bool\u00a0 d\bdo\bon\bne\be () const &noexcept\n+ _\bb_\bo_\bo_\bl\u00a0 d\bdo\bon\bne\be () _\bc_\bo_\bn_\bs_\bt &_\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Has this stream reached the end of its\n data?\n \u00a0\n- auto\u00a0 b\bbe\beg\bgi\bin\bn () &\n+ _\ba_\bu_\bt_\bo\u00a0 b\bbe\beg\bgi\bin\bn () &\n \u00a0 Begin iterator. Only for use by \"range\n for.\".\n \u00a0\n- auto\u00a0 _\be_\bn_\bd () const &\n+ _\ba_\bu_\bt_\bo\u00a0 _\be_\bn_\bd () _\bc_\bo_\bn_\bs_\bt &\n \u00a0 End iterator. Only for use by \"range\n for.\".\n \u00a0\n- std::tuple< TYPE... >\u00a0 p\bpa\bar\brs\bse\be_\b_l\bli\bin\bne\be (_\bz_\bv_\bi_\be_\bw line) &\n+ std::tuple< TYPE... >\u00a0 p\bpa\bar\brs\bse\be_\b_l\bli\bin\bne\be (_\bz_\bv_\bi_\be_\bw _\bl_\bi_\bn_\be) &\n \u00a0 Parse and convert the latest line of\n data we received.\n \u00a0\n std::pair< line_handle, std::size_t >\u00a0 r\bre\bea\bad\bd_\b_l\bli\bin\bne\be () &\n \u00a0 Read a COPY line from the server.\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n@@ -71,15 +71,15 @@\n Warning\n While a stream is active, you cannot execute queries, open a pipeline,\n etc. on the same transaction. A transaction can have at most one object\n of a type derived from _\bp_\bq_\bx_\bx_\b:_\b:_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs active on it at a time.\n *\b**\b**\b**\b**\b* M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0e\ben\bnd\bd(\b()\b) *\b**\b**\b**\b**\b*\n template\n-auto _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by< TYPE >::end ( ) const & inline\n+_\ba_\bu_\bt_\bo _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by< _\bT_\bY_\bP_\bE >::end ( ) const & inline\n End iterator. Only for use by \"range for.\".\n The end iterator is a different type than the regular iterator. It simplifies\n the comparisons: we know at compile time that we're comparing to the end\n pointer.\n ===============================================================================\n The documentation for this class was generated from the following files:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__input__iterator.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1internal_1_1stream__query__input__iterator.html", "unified_diff": "@@ -100,52 +100,52 @@\n \n

    Input iterator for stream_query. \n More...

    \n \n \n \n+using \n \n \n+using \n \n

    \n Public Types

    \n-using value_type = std::tuple< TYPE... >
    value_type = std::tuple< TYPE... >
     
    \n-using difference_type = long
    difference_type = long
     
    \n \n \n \n \n+ \n \n \n+ \n \n \n \n \n-\n+\n \n \n \n+value_type \n \n \n \n+bool \n \n \n \n+bool \n \n \n \n+stream_query_input_iterator & \n \n

    \n Public Member Functions

    \n  stream_query_input_iterator (stream_t &home)
     
    \n- stream_query_input_iterator (stream_query_input_iterator const &)=default
    stream_query_input_iterator (stream_query_input_iterator const &)=default
     
    \n- stream_query_input_iterator (stream_query_input_iterator &&)=default
    stream_query_input_iterator (stream_query_input_iterator &&)=default
     
    \n stream_query_input_iteratoroperator++ () &
     Pre-increment. This is what you'd normally want to use.
     
    stream_query_input_iterator operator++ (int)
    stream_query_input_iterator operator++ (int)
     Post-increment. Only here to satisfy input_iterator concept.
     
    \n-value_type operator* () const
    operator* () const
     Dereference. There's no caching in here, so don't repeat calls.
     
    \n-bool operator== (stream_query_end_iterator) const noexcept
    operator== (stream_query_end_iterator) const noexcept
     Are we at the end?
     
    \n-bool operator!= (stream_query_end_iterator) const noexcept
    operator!= (stream_query_end_iterator) const noexcept
     Comparison only works for comparing to end().
     
    \n-stream_query_input_iteratoroperator= (stream_query_input_iterator &&rhs) noexcept
    operator= (stream_query_input_iterator &&rhs) noexcept
     
    \n

    Detailed Description

    \n
    template<typename... TYPE>
    \n class pqxx::internal::stream_query_input_iterator< TYPE >

    Input iterator for stream_query.

    \n

    Just barely enough to support range-based \"for\" loops on stream_from. Don't assume that any of the usual behaviour works beyond that.

    \n

    Member Function Documentation

    \n@@ -157,17 +157,17 @@\n
    \n template<typename... TYPE>
    \n \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,61 +3,61 @@\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bT_\by_\bp_\be_\bs | _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::stream_query_input_iterator< TYPE > Class Template Reference\n Input iterator for _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n P\bPu\bub\bbl\bli\bic\bc T\bTy\byp\bpe\bes\bs\n-using\u00a0 v\bva\bal\blu\bue\be_\b_t\bty\byp\bpe\be = std::tuple< TYPE... >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 v\bva\bal\blu\bue\be_\b_t\bty\byp\bpe\be = std::tuple< TYPE... >\n \u00a0\n-using\u00a0 d\bdi\bif\bff\bfe\ber\bre\ben\bnc\bce\be_\b_t\bty\byp\bpe\be = long\n+_\bu_\bs_\bi_\bn_\bg\u00a0 d\bdi\bif\bff\bfe\ber\bre\ben\bnc\bce\be_\b_t\bty\byp\bpe\be = _\bl_\bo_\bn_\bg\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bto\bor\br (_\bs_\bt_\br_\be_\ba_\bm_\b__\bt &home)\n \u00a0\n \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bto\bor\br\n- (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const &)=default\n+ (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bc_\bo_\bn_\bs_\bt &)=_\bd_\be_\bf_\ba_\bu_\bl_\bt\n \u00a0\n \u00a0 s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by_\b_i\bin\bnp\bpu\but\bt_\b_i\bit\bte\ber\bra\bat\bto\bor\br\n- (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &&)=default\n+ (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &&)=_\bd_\be_\bf_\ba_\bu_\bl_\bt\n \u00a0\n _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br+\b++\b+ () &\n \u00a0 Pre-increment. This is what you'd normally want\n to use.\n \u00a0\n- _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+ (int)\n+ _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\u00a0 _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+ (_\bi_\bn_\bt)\n \u00a0 Post-increment. Only here to satisfy\n input_iterator concept.\n \u00a0\n- value_type\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br*\b* () const\n+ value_type\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br*\b* () _\bc_\bo_\bn_\bs_\bt\n \u00a0 Dereference. There's no caching in here, so\n don't repeat calls.\n \u00a0\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br) const\n- noexcept\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br) _\bc_\bo_\bn_\bs_\bt\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Are we at the end?\n \u00a0\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br) const\n- noexcept\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br) _\bc_\bo_\bn_\bs_\bt\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Comparison only works for comparing to end().\n \u00a0\n-_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &&rhs)\n- noexcept\n+_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &&_\br_\bh_\bs)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n template\n class pqxx::internal::stream_query_input_iterator< TYPE >\n Input iterator for _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by.\n Just barely enough to support range-based \"for\" loops on _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm. Don't\n assume that any of the usual behaviour works beyond that.\n *\b**\b**\b**\b**\b* M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0o\bop\bpe\ber\bra\bat\bto\bor\br+\b++\b+(\b()\b) *\b**\b**\b**\b**\b*\n template\n _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:\n-_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br< TYPE >:: ( int\u00a0 ) inline\n+_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br< _\bT_\bY_\bP_\bE >:: ( _\bi_\bn_\bt\u00a0 ) inline\n operator++\n Post-increment. Only here to satisfy input_iterator concept.\n The iterator that this returns is in an unusable state.\n ===============================================================================\n The documentation for this class was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bm_\bp_\bl_\b._\bh_\bx_\bx\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject.html", "unified_diff": "@@ -171,15 +171,15 @@\n \n \n \n
    \n \n \n- \n+ \n \n- \n+ \n \n \n \n
    stream_query_input_iterator pqxx::internal::stream_query_input_iterator< TYPE >::operator++ stream_query_input_iterator pqxx::internal::stream_query_input_iterator< TYPE >::operator++ (int int )
    \n
    \n inline
     
    \n PQXX_PRIVATE std::string reason (connection const &, int err) const
     
    \n

    Detailed Description

    \n

    Identity of a large object.

    \n-
    Deprecated:
    Use the blob class instead.
    \n+
    Deprecated:
    Use the blob class instead.
    \n

    Encapsulates the identity of a large object.

    \n

    A largeobject must be accessed only from within a backend transaction, but the object's identity remains valid as long as the object exists.

    \n

    Constructor & Destructor Documentation

    \n \n

    ◆ largeobject() [1/5]

    \n \n
    \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject__streambuf.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobject__streambuf.html", "unified_diff": "@@ -190,15 +190,15 @@\n
    \n virtual int_type underflow () override
     
    \n

    Detailed Description

    \n
    template<typename CHAR = char, typename TRAITS = std::char_traits<CHAR>>
    \n class pqxx::largeobject_streambuf< CHAR, TRAITS >

    Streambuf to use large objects in standard I/O streams.

    \n-
    Deprecated:
    Access large objects directly using the blob class.
    \n+
    Deprecated:
    Access large objects directly using the blob class.
    \n

    The standard streambuf classes provide uniform access to data storage such as files or string buffers, so they can be accessed using standard input or output streams. This streambuf implementation provided similar access to large objects, so they could be read and written using the same stream classes.

    \n

    This functionality was considered too fragile and complex, so it has been replaced with a single, much simpler class.

    \n

    Member Data Documentation

    \n \n

    ◆ default_mode

    \n \n
    \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobjectaccess.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1largeobjectaccess.html", "unified_diff": "@@ -238,15 +238,15 @@\n
 
bool operator>= (largeobject const &other) const
 Compare object identities.
 
\n

Detailed Description

\n

Accessor for large object's contents.

\n-
Deprecated:
Use the blob class instead.
\n+
Deprecated:
Use the blob class instead.
\n

Member Typedef Documentation

\n \n

◆ openmode

\n \n
\n
\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1params.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1params.html", "unified_diff": "@@ -181,15 +181,15 @@\n \n \n \n \n \n
(binarystring const & value) &
\n
\n-
Deprecated:
Append binarystring parameter.
\n+
Deprecated:
Append binarystring parameter.
\n

The binarystring must stay valid for as long as the params remains active.

\n \n
\n
\n \n

◆ append() [2/6]

\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1quiet__errorhandler.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1quiet__errorhandler.html", "unified_diff": "@@ -137,15 +137,15 @@\n  
errorhandler (errorhandler const &)=delete
 
\n errorhandleroperator= (errorhandler const &)=delete
 
\n

Detailed Description

\n-
Deprecated:
Use a notice handler instead.
\n+
Deprecated:
Use a notice handler instead.
\n

Member Function Documentation

\n \n

◆ operator()()

\n \n
\n
\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1row.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1row.html", "unified_diff": "@@ -497,15 +497,15 @@\n \n \n \n \n
) const
\n
\n

Produce a slice of this row, containing the given range of columns.

\n-
Deprecated:
I haven't heard of anyone caring about row slicing at all in at least the last 15 years. Yet it adds complexity, so unless anyone files a bug explaining why they really need this feature, I'm going to remove it. Even if they do, the feature may need an update.
\n+
Deprecated:
I haven't heard of anyone caring about row slicing at all in at least the last 15 years. Yet it adds complexity, so unless anyone files a bug explaining why they really need this feature, I'm going to remove it. Even if they do, the feature may need an update.
\n

The slice runs from the range's starting column to the range's end column, exclusive. It looks just like a normal result row, except slices can be empty.

\n \n
\n
\n \n

◆ table_column()

\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1stream__from.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1stream__from.html", "unified_diff": "@@ -209,15 +209,15 @@\n
 
static stream_from table (transaction_base &tx, table_path path, std::initializer_list< std::string_view > columns={})
 Factory: Stream data from a given table.
 
\n

Detailed Description

\n

Stream data from the database.

\n-
Deprecated:
Use transaction_base::stream.
\n+
Deprecated:
Use transaction_base::stream.
\n

For larger data sets, retrieving data this way is likely to be faster than executing a query and then iterating and converting the rows fields. You will also be able to start processing before all of the data has come in.

\n

There are also downsides. Not all kinds of query will work in a stream. But straightforward SELECT and UPDATE ... RETURNING queries should work. This function makes use of pqxx::stream_from, which in turn uses PostgreSQL's COPY command, so see the documentation for those to get the full details.

\n

There are other downsides. If there stream encounters an error, it may leave the entire connection in an unusable state, so you'll have to give the whole thing up. Finally, opening a stream puts the connection in a special state, so you won't be able to do many other things with the connection or the transaction while the stream is open.

\n

There are two ways of starting a stream: you stream either all rows in a table (using one of the factories, table() or raw_table()), or the results of a query (using the query() factory).

\n

Usually you'll want the stream convenience wrapper in transaction_base, * so you don't need to deal with this class directly.

\n
Warning
While a stream is active, you cannot execute queries, open a pipeline, etc. on the same transaction. A transaction can have at most one object of a type derived from pqxx::transaction_focus active on it at a time.
\n

Constructor & Destructor Documentation

\n@@ -250,15 +250,15 @@\n
)
\n
\n \n

Execute query, and stream over the results.

\n-
Deprecated:
Use factory function query instead.
\n+
Deprecated:
Use factory function query instead.
\n \n
\n
\n \n

◆ stream_from() [2/7]

\n \n
\n@@ -287,15 +287,15 @@\n )\n \n \n \n
\n \n

Stream all rows in table, all columns.

\n-
Deprecated:
Use factories table or raw_table instead.
\n+
Deprecated:
Use factories table or raw_table instead.
\n \n
\n \n \n

◆ stream_from() [3/7]

\n \n
\n@@ -346,15 +346,15 @@\n \n inline \n \n \n
\n \n

Stream given columns from all rows in table.

\n-
Deprecated:
Use factories table or raw_table instead.
\n+
Deprecated:
Use factories table or raw_table instead.
\n \n
\n \n \n

◆ stream_from() [4/7]

\n \n
\n@@ -399,15 +399,15 @@\n \n inline \n \n \n
\n \n

Stream given columns from all rows in table.

\n-
Deprecated:
Use factory function query instead.
\n+
Deprecated:
Use factory function query instead.
\n \n
\n \n \n

◆ stream_from() [5/7]

\n \n
\n@@ -436,15 +436,15 @@\n \n \n \n inline \n \n \n
\n-
Deprecated:
Use factories table or raw_table instead.
\n+
Deprecated:
Use factories table or raw_table instead.
\n \n
\n \n \n

◆ stream_from() [6/7]

\n \n
\n@@ -481,15 +481,15 @@\n \n \n \n inline \n \n \n
\n-
Deprecated:
Use factories table or raw_table instead.
\n+
Deprecated:
Use factories table or raw_table instead.
\n \n
\n \n \n

◆ stream_from() [7/7]

\n \n
\n@@ -524,15 +524,15 @@\n \n \n )\n \n \n \n
\n-
Deprecated:
Use factories table or raw_table instead.
\n+
Deprecated:
Use factories table or raw_table instead.
\n \n
\n \n

Member Function Documentation

\n \n

◆ complete()

\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1stream__to.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/classpqxx_1_1stream__to.html", "unified_diff": "@@ -218,15 +218,15 @@\n \n inline \n \n \n
\n \n

Create a stream, without specifying columns.

\n-
Deprecated:
Use table or raw_table as a factory.
\n+
Deprecated:
Use table or raw_table as a factory.
\n

Fields will be inserted in whatever order the columns have in the database.

\n

You'll probably want to specify the columns, so that the mapping between your data fields and the table is explicit in your code, and not hidden in an \"implicit contract\" between your code and your schema.

\n \n
\n \n \n

◆ stream_to() [2/2]

\n@@ -267,15 +267,15 @@\n \n inline \n \n \n
\n \n

Create a stream, specifying column names as a container of strings.

\n-
Deprecated:
Use table or raw_table as a factory.
\n+
Deprecated:
Use table or raw_table as a factory.
\n \n
\n \n

Member Function Documentation

\n \n

◆ complete()

\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/composite_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/composite_8hxx_source.html", "unified_diff": "@@ -131,15 +131,15 @@\n
49 internal::concat("Invalid composite value string: ", text)};
\n
50
\n
51 here = next;
\n
52
\n
53 // TODO: Reuse parse_composite_field specialisation across calls.
\n
54 constexpr auto num_fields{sizeof...(fields)};
\n
55 std::size_t index{0};
\n-
56 (pqxx::internal::specialize_parse_composite_field<T>(enc)(
\n+
56 (pqxx::internal::specialize_parse_composite_field<T>(enc)(
\n
57 index, text, here, fields, num_fields - 1),
\n
58 ...);
\n
59 if (here != std::size(text))
\n
60 throw conversion_error{internal::concat(
\n
61 "Composite value did not end at the closing parenthesis: '", text,
\n
62 "'.")};
\n
63 if (text[here - 1] != ')')
\n@@ -209,15 +209,15 @@\n
133 std::memcpy(begin, empty, std::size(empty));
\n
134 return begin + std::size(empty);
\n
135 }
\n
136
\n
137 char *pos{begin};
\n
138 *pos++ = '(';
\n
139
\n-
140 (pqxx::internal::write_composite_field<T>(pos, end, fields), ...);
\n+
140 (pqxx::internal::write_composite_field<T>(pos, end, fields), ...);
\n
141
\n
142 // If we've got multiple fields, "backspace" that last comma.
\n
143 if constexpr (num_fields > 1)
\n
144 --pos;
\n
145 *pos++ = ')';
\n
146 *pos++ = '\\0';
\n
147 return pos;
\n@@ -226,14 +226,15 @@\n
149} // namespace pqxx
\n
150#endif
\n
Value conversion failed, e.g. when converting "Hello" to int.
Definition except.hxx:283
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n
std::size_t size_composite_field_buffer(T const &field)
Conservatively estimate buffer size needed for a composite field.
Definition array-composite.hxx:309
\n
PQXX_LIBEXPORT glyph_scanner_func * get_glyph_scanner(encoding_group)
Look up the glyph scanner function for a given encoding group.
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
char * composite_into_buf(char *begin, char *end, T const &...fields)
Render a series of values as a single composite SQL value.
Definition composite.hxx:123
\n
std::size_t composite_size_buffer(T const &...fields) noexcept
Estimate the buffer size needed to represent a value of a composite type.
Definition composite.hxx:96
\n
void parse_composite(pqxx::internal::encoding_group enc, std::string_view text, T &...fields)
Parse a string representation of a value of a composite type.
Definition composite.hxx:35
\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -36,15 +36,15 @@\n 49 _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt(\"Invalid composite value string: \", text)};\n 50\n 51 here = next;\n 52\n 53 // TODO: Reuse parse_composite_field specialisation across calls.\n 54 constexpr auto num_fields{sizeof...(fields)};\n 55 std::size_t index{0};\n-56 (pqxx::internal::specialize_parse_composite_field(enc)(\n+56 (_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\bT_\b>(enc)(\n 57 index, text, here, fields, num_fields - 1),\n 58 ...);\n 59 if (here != std::size(text))\n 60 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt(\n 61 \"Composite value did not end at the closing parenthesis: '\", text,\n 62 \"'.\")};\n 63 if (text[here - 1] != ')')\n@@ -108,15 +108,15 @@\n 133 std::memcpy(begin, empty, std::size(empty));\n 134 return begin + std::size(empty);\n 135 }\n 136\n 137 char *pos{begin};\n 138 *pos++ = '(';\n 139\n-140 (pqxx::internal::write_composite_field(pos, end, fields), ...);\n+140 (_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bw_\br_\bi_\bt_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\bT_\b>(pos, end, fields), ...);\n 141\n 142 // If we've got multiple fields, \"backspace\" that last comma.\n 143 if constexpr (num_fields > 1)\n 144 --pos;\n 145 *pos++ = ')';\n 146 *pos++ = '\\0';\n 147 return pos;\n@@ -136,14 +136,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bi_\bz_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b__\bb_\bu_\bf_\bf_\be_\br\n std::size_t size_composite_field_buffer(T const &field)\n Conservatively estimate buffer size needed for a composite field.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:309\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n PQXX_LIBEXPORT glyph_scanner_func * get_glyph_scanner(encoding_group)\n Look up the glyph scanner function for a given encoding group.\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n _\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf\n char * composite_into_buf(char *begin, char *end, T const &...fields)\n Render a series of values as a single composite SQL value.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn composite.hxx:123\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/concat_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/concat_8hxx_source.html", "unified_diff": "@@ -106,48 +106,49 @@\n
6
\n
7# include "pqxx/strconv.hxx"
\n
8
\n
9namespace pqxx::internal
\n
10{
\n
12template<typename TYPE>
\n
\n-
13void render_item(TYPE const &item, char *&here, char *end)
\n+
13void render_item(TYPE const &item, char *&here, char *end)
\n
14{
\n-
15 auto const next = string_traits<TYPE>::into_buf(here, end, item) - 1;
\n-
16 PQXX_ASSUME(next >= here);
\n-
17 here = next;
\n+
15 auto const next = string_traits<TYPE>::into_buf(here, end, item) - 1;
\n+
16 PQXX_ASSUME(next >= here);
\n+
17 here = next;
\n
18}
\n
\n
19
\n
20
\n
21// C++20: Support non-random_access_range ranges.
\n
23
\n-
30template<typename... TYPE>
\n+
30template<typename... TYPE>
\n
\n-
31[[nodiscard]] inline std::string concat(TYPE... item)
\n+
31[[nodiscard]] inline std::string concat(TYPE... item)
\n
32{
\n-
33 std::string buf;
\n+
33 std::string buf;
\n
34 // Size to accommodate string representations of all inputs, minus their
\n
35 // terminating zero bytes.
\n-
36 buf.resize(size_buffer(item...));
\n+
36 buf.resize(size_buffer(item...));
\n
37
\n-
38 char *const data{buf.data()};
\n-
39 char *here = data;
\n-
40 char *end = data + std::size(buf);
\n-
41 (render_item(item, here, end), ...);
\n+
38 char *const data{buf.data()};
\n+
39 char *here = data;
\n+
40 char *end = data + std::size(buf);
\n+
41 (render_item(item, here, end), ...);
\n
42
\n-
43 buf.resize(static_cast<std::size_t>(here - data));
\n-
44 return buf;
\n+
43 buf.resize(static_cast<std::size_t>(here - data));
\n+
44 return buf;
\n
45}
\n
\n
46} // namespace pqxx::internal
\n
47#endif
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n
void render_item(TYPE const &item, char *&here, char *end)
Convert item to a string, write it into [here, end).
Definition concat.hxx:13
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
static char * into_buf(char *begin, char *end, TYPE const &value)
Write value's string representation into buffer at begin.
\n \n \n \n
\n
    \n
  • include
  • pqxx
  • internal
  • concat.hxx
  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -11,53 +11,58 @@\n 5# include \n 6\n 7# include \"pqxx/strconv.hxx\"\n 8\n 9namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 10{\n 12template\n-_\b1_\b3void _\br_\be_\bn_\bd_\be_\br_\b__\bi_\bt_\be_\bm(TYPE const &item, char *&here, char *end)\n+_\b1_\b3void _\br_\be_\bn_\bd_\be_\br_\b__\bi_\bt_\be_\bm(_\bT_\bY_\bP_\bE const &_\bi_\bt_\be_\bm, char *&_\bh_\be_\br_\be, char *end)\n 14{\n-15 auto const next = _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(here, end, item) - 1;\n-16 PQXX_ASSUME(next >= here);\n-17 here = next;\n+15 auto const next = _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(_\bh_\be_\br_\be, end, _\bi_\bt_\be_\bm) - 1;\n+16 PQXX_ASSUME(next >= _\bh_\be_\br_\be);\n+17 _\bh_\be_\br_\be = next;\n 18}\n 19\n 20\n 21// C++20: Support non-random_access_range ranges.\n 23\n-30template\n-_\b3_\b1[[nodiscard]] inline std::string _\bc_\bo_\bn_\bc_\ba_\bt(TYPE... item)\n+30template\n+_\b3_\b1[[_\bn_\bo_\bd_\bi_\bs_\bc_\ba_\br_\bd]] inline std::string _\bc_\bo_\bn_\bc_\ba_\bt(_\bT_\bY_\bP_\bE... _\bi_\bt_\be_\bm)\n 32{\n-33 std::string buf;\n+33 std::string _\bb_\bu_\bf;\n 34 // Size to accommodate string representations of all inputs, minus their\n 35 // terminating zero bytes.\n-36 buf.resize(size_buffer(item...));\n+36 _\bb_\bu_\bf.resize(size_buffer(_\bi_\bt_\be_\bm...));\n 37\n-38 char *const data{buf.data()};\n-39 char *here = data;\n-40 char *end = data + std::size(buf);\n-41 (_\br_\be_\bn_\bd_\be_\br_\b__\bi_\bt_\be_\bm(item, here, end), ...);\n+38 char *const data{_\bb_\bu_\bf.data()};\n+39 char *_\bh_\be_\br_\be = data;\n+40 char *end = data + std::size(_\bb_\bu_\bf);\n+41 (_\br_\be_\bn_\bd_\be_\br_\b__\bi_\bt_\be_\bm(_\bi_\bt_\be_\bm, _\bh_\be_\br_\be, end), ...);\n 42\n-43 buf.resize(static_cast(here - data));\n-44 return buf;\n+43 _\bb_\bu_\bf.resize(static_cast(_\bh_\be_\br_\be - data));\n+44 return _\bb_\bu_\bf;\n 45}\n 46} // namespace pqxx::internal\n 47#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt\n std::string concat(TYPE... item)\n Efficiently combine a bunch of items into one big string.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn concat.hxx:31\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\br_\be_\bn_\bd_\be_\br_\b__\bi_\bt_\be_\bm\n void render_item(TYPE const &item, char *&here, char *end)\n Convert item to a string, write it into [here, end).\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn concat.hxx:13\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf\n static char * into_buf(char *begin, char *end, TYPE const &value)\n Write value's string representation into buffer at begin.\n * _\bi_\bn_\bc_\bl_\bu_\bd_\be\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n * c\bco\bon\bnc\bca\bat\bt.\b.h\bhx\bxx\bx\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/connection_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/connection_8hxx_source.html", "unified_diff": "@@ -146,24 +146,24 @@\n
    46
    \n
    79namespace pqxx::internal
    \n
    80{
    \n
    81class sql_cursor;
    \n
    82
    \n
    83#if defined(PQXX_HAVE_CONCEPTS)
    \n
    85template<typename T>
    \n-
    86concept ZKey_ZValues = std::ranges::input_range<T> and requires(T t) {
    \n-
    87 { std::cbegin(t) };
    \n-
    88 { std::get<0>(*std::cbegin(t)) } -> ZString;
    \n-
    89 { std::get<1>(*std::cbegin(t)) } -> ZString;
    \n-
    90} and std::tuple_size_v<typename std::ranges::iterator_t<T>::value_type> == 2;
    \n+
    86concept ZKey_ZValues = std::ranges::input_range<T> and requires(T t) {
    \n+
    87 { std::cbegin(t) };
    \n+
    88 { std::get<0>(*std::cbegin(t)) } -> ZString;
    \n+
    89 { std::get<1>(*std::cbegin(t)) } -> ZString;
    \n+
    90} and std::tuple_size_v<typename std::ranges::iterator_t<T>::value_type> == 2;
    \n
    91#endif // PQXX_HAVE_CONCEPTS
    \n
    92
    \n
    93
    \n
    95
    \n-
    102void PQXX_COLD PQXX_LIBEXPORT skip_init_ssl(int skips) noexcept;
    \n+
    102void PQXX_COLD PQXX_LIBEXPORT skip_init_ssl(int skips) noexcept;
    \n
    103} // namespace pqxx::internal
    \n
    104
    \n
    105
    \n
    106namespace pqxx::internal::gate
    \n
    107{
    \n
    108class connection_dbtransaction;
    \n
    109class connection_errorhandler;
    \n@@ -886,14 +886,15 @@\n
    Build a parameter list for a parameterised or prepared statement.
    Definition params.hxx:33
    \n
    Marker-type wrapper: zero-terminated std::string_view.
    Definition zview.hxx:38
    \n
    constexpr char const * c_str() const &noexcept
    Either a null pointer, or a zero-terminated text buffer.
    Definition zview.hxx:96
    \n
    The caller attempted to set a variable to null, which is not allowed.
    Definition except.hxx:116
    \n
    Internal items for libpqxx' own use. Do not use these yourself.
    Definition encodings.cxx:33
    \n
    void PQXX_LIBEXPORT unesc_bin(std::string_view escaped_data, std::byte buffer[])
    Reconstitute binary data from its escaped version.
    Definition util.cxx:166
    \n
    void PQXX_COLD PQXX_LIBEXPORT skip_init_ssl(int skips) noexcept
    Control OpenSSL/crypto library initialisation.
    \n+
    composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
    Look up implementation of parse_composite_field for ENC.
    Definition array-composite.hxx:274
    \n
    constexpr std::size_t size_unesc_bin(std::size_t escaped_bytes) noexcept
    Compute binary size from the size of its escaped version.
    Definition util.hxx:525
    \n
    The home of all libpqxx classes, functions, templates, etc.
    Definition array.cxx:27
    \n
    std::string separated_list(std::string_view sep, ITER begin, ITER end, ACCESS access)
    Represent sequence of values as a string, joined by a given separator.
    Definition separated_list.hxx:46
    \n
    PQXX_PRIVATE void check_version() noexcept
    Definition util.hxx:236
    \n
    void skip_init_ssl() noexcept
    Control initialisation of OpenSSL and libcrypto libraries.
    Definition connection.hxx:216
    \n
    bytes_view binary_cast(TYPE const &data)
    Cast binary data to a type that libpqxx will recognise as binary.
    Definition util.hxx:409
    \n
    std::initializer_list< std::string_view > table_path
    Representation of a PostgreSQL table path.
    Definition connection.hxx:231
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -53,25 +53,25 @@\n 46\n 79namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 80{\n 81class sql_cursor;\n 82\n 83#if defined(PQXX_HAVE_CONCEPTS)\n 85template\n-86concept ZKey_ZValues = std::ranges::input_range and requires(T t) {\n-87 { std::cbegin(t) };\n-88 { std::get<0>(*std::cbegin(t)) } -> ZString;\n-89 { std::get<1>(*std::cbegin(t)) } -> ZString;\n-90} and std::tuple_size_v::value_type> ==\n+86concept _\bZ_\bK_\be_\by_\b__\bZ_\bV_\ba_\bl_\bu_\be_\bs = std::ranges::input_range _\ba_\bn_\bd requires(_\bT _\bt) {\n+87 { std::cbegin(_\bt) };\n+88 { std::get<0>(*std::cbegin(_\bt)) } -> _\bZ_\bS_\bt_\br_\bi_\bn_\bg;\n+89 { std::get<1>(*std::cbegin(_\bt)) } -> _\bZ_\bS_\bt_\br_\bi_\bn_\bg;\n+90} _\ba_\bn_\bd std::tuple_size_v::value_type> ==\n 2;\n 91#endif // PQXX_HAVE_CONCEPTS\n 92\n 93\n 95\n-_\b1_\b0_\b2void PQXX_COLD PQXX_LIBEXPORT _\bs_\bk_\bi_\bp_\b__\bi_\bn_\bi_\bt_\b__\bs_\bs_\bl(int skips) noexcept;\n+_\b1_\b0_\b2void PQXX_COLD PQXX_LIBEXPORT _\bs_\bk_\bi_\bp_\b__\bi_\bn_\bi_\bt_\b__\bs_\bs_\bl(int _\bs_\bk_\bi_\bp_\bs) noexcept;\n 103} // namespace pqxx::internal\n 104\n 105\n 106namespace pqxx::internal::gate\n 107{\n 108class connection_dbtransaction;\n 109class connection_errorhandler;\n@@ -827,14 +827,19 @@\n void PQXX_LIBEXPORT unesc_bin(std::string_view escaped_data, std::byte buffer\n [])\n Reconstitute binary data from its escaped version.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.cxx:166\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bk_\bi_\bp_\b__\bi_\bn_\bi_\bt_\b__\bs_\bs_\bl\n void PQXX_COLD PQXX_LIBEXPORT skip_init_ssl(int skips) noexcept\n Control OpenSSL/crypto library initialisation.\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bi_\bz_\be_\b__\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn\n constexpr std::size_t size_unesc_bin(std::size_t escaped_bytes) noexcept\n Compute binary size from the size of its escaped version.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:525\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/conversions_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/conversions_8hxx_source.html", "unified_diff": "@@ -120,128 +120,128 @@\n
    20/* Internal helpers for string conversion, and conversion implementations.
    \n
    21 *
    \n
    22 * Do not include this header directly. The libpqxx headers do it for you.
    \n
    23 */
    \n
    24namespace pqxx::internal
    \n
    25{
    \n
    \n-
    27inline constexpr char number_to_digit(int i) noexcept
    \n+
    27inline constexpr char number_to_digit(int i) noexcept
    \n
    28{
    \n-
    29 return static_cast<char>(i + '0');
    \n+
    29 return static_cast<char>(i + '0');
    \n
    30}
    \n
    \n
    31
    \n
    32
    \n
    \n-
    34constexpr int digit_to_number(char c) noexcept
    \n+
    34constexpr int digit_to_number(char c) noexcept
    \n
    35{
    \n-
    36 return c - '0';
    \n+
    36 return c - '0';
    \n
    37}
    \n
    \n
    38
    \n
    39
    \n
    41
    \n
    44std::string PQXX_LIBEXPORT
    \n-
    45state_buffer_overrun(int have_bytes, int need_bytes);
    \n+\n
    46
    \n
    47
    \n
    48template<typename HAVE, typename NEED>
    \n-
    49inline std::string state_buffer_overrun(HAVE have_bytes, NEED need_bytes)
    \n+\n
    50{
    \n \n-
    52 static_cast<int>(have_bytes), static_cast<int>(need_bytes));
    \n+
    52 static_cast<int>(have_bytes), static_cast<int>(need_bytes));
    \n
    53}
    \n
    54
    \n
    55
    \n-
    57[[noreturn]] PQXX_LIBEXPORT PQXX_COLD void
    \n+
    57[[noreturn]] PQXX_LIBEXPORT PQXX_COLD void
    \n
    58throw_null_conversion(std::string const &type);
    \n
    59
    \n
    60
    \n-
    62[[noreturn]] PQXX_LIBEXPORT PQXX_COLD void
    \n+
    62[[noreturn]] PQXX_LIBEXPORT PQXX_COLD void
    \n
    63throw_null_conversion(std::string_view type);
    \n
    64
    \n
    65
    \n
    67
    \n
    \n
    76template<typename CHAR_TYPE> struct disallowed_ambiguous_char_conversion
    \n
    77{
    \n
    78 static constexpr bool converts_to_string{false};
    \n
    79 static constexpr bool converts_from_string{false};
    \n-
    80 static char *into_buf(char *, char *, CHAR_TYPE) = delete;
    \n+
    80 static char *into_buf(char *, char *, CHAR_TYPE) = delete;
    \n
    81 static constexpr zview
    \n-
    82 to_buf(char *, char *, CHAR_TYPE const &) noexcept = delete;
    \n+
    82 to_buf(char *, char *, CHAR_TYPE const &) noexcept = delete;
    \n
    83
    \n
    84 static constexpr std::size_t
    \n-
    85 size_buffer(CHAR_TYPE const &) noexcept = delete;
    \n-
    86 static CHAR_TYPE from_string(std::string_view) = delete;
    \n+
    85 size_buffer(CHAR_TYPE const &) noexcept = delete;
    \n+
    86 static CHAR_TYPE from_string(std::string_view) = delete;
    \n
    87};
    \n
    \n
    88
    \n
    89
    \n-
    90template<typename T> PQXX_LIBEXPORT extern std::string to_string_float(T);
    \n+
    90template<typename T> PQXX_LIBEXPORT extern std::string to_string_float(T);
    \n
    91
    \n
    92
    \n
    94template<typename T>
    \n
    \n-
    95inline char *generic_into_buf(char *begin, char *end, T const &value)
    \n+
    95inline char *generic_into_buf(char *begin, char *end, T const &value)
    \n
    96{
    \n
    97 zview const text{string_traits<T>::to_buf(begin, end, value)};
    \n-
    98 auto const space{end - begin};
    \n+
    98 auto const space{end - begin};
    \n
    99 // Include the trailing zero.
    \n-
    100 auto const len = std::size(text) + 1;
    \n-
    101 if (internal::cmp_greater(len, space))
    \n+
    100 auto const len = std::size(text) + 1;
    \n+\n
    102 throw conversion_overrun{
    \n-
    103 "Not enough buffer space to insert " + type_name<T> + ". " +
    \n-
    104 state_buffer_overrun(space, len)};
    \n-
    105 std::memmove(begin, text.data(), len);
    \n-
    106 return begin + len;
    \n+
    103 "Not enough buffer space to insert " + type_name<T> + ". " +
    \n+\n+
    105 std::memmove(begin, text.data(), len);
    \n+
    106 return begin + len;
    \n
    107}
    \n
    \n
    108
    \n
    109
    \n
    110// C++20: Guard with concept?
    \n
    \n
    112template<typename T> struct integral_traits
    \n
    113{
    \n
    114 static constexpr bool converts_to_string{true};
    \n
    115 static constexpr bool converts_from_string{true};
    \n-
    116 static PQXX_LIBEXPORT T from_string(std::string_view text);
    \n-
    117 static PQXX_LIBEXPORT zview to_buf(char *begin, char *end, T const &value);
    \n-
    118 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, T const &value);
    \n+
    116 static PQXX_LIBEXPORT T from_string(std::string_view text);
    \n+
    117 static PQXX_LIBEXPORT zview to_buf(char *begin, char *end, T const &value);
    \n+
    118 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, T const &value);
    \n
    119
    \n-
    120 static constexpr std::size_t size_buffer(T const &) noexcept
    \n+
    120 static constexpr std::size_t size_buffer(T const &) noexcept
    \n
    121 {
    \n
    126 return std::is_signed_v<T> + std::numeric_limits<T>::digits10 + 1 + 1;
    \n
    127 }
    \n
    128};
    \n
    \n
    129
    \n
    130
    \n
    131// C++20: Guard with concept?
    \n
    \n
    133template<typename T> struct float_traits
    \n
    134{
    \n
    135 static constexpr bool converts_to_string{true};
    \n
    136 static constexpr bool converts_from_string{true};
    \n-
    137 static PQXX_LIBEXPORT T from_string(std::string_view text);
    \n-
    138 static PQXX_LIBEXPORT zview to_buf(char *begin, char *end, T const &value);
    \n-
    139 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, T const &value);
    \n+
    137 static PQXX_LIBEXPORT T from_string(std::string_view text);
    \n+
    138 static PQXX_LIBEXPORT zview to_buf(char *begin, char *end, T const &value);
    \n+
    139 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, T const &value);
    \n
    140
    \n
    141 // Return a nonnegative integral value's number of decimal digits.
    \n
    142 static constexpr std::size_t digits10(std::size_t value) noexcept
    \n
    143 {
    \n
    144 if (value < 10)
    \n
    145 return 1;
    \n
    146 else
    \n
    147 return 1 + digits10(value / 10);
    \n
    148 }
    \n
    149
    \n-
    150 static constexpr std::size_t size_buffer(T const &) noexcept
    \n+
    150 static constexpr std::size_t size_buffer(T const &) noexcept
    \n
    151 {
    \n-
    152 using lims = std::numeric_limits<T>;
    \n+
    152 using lims = std::numeric_limits<T>;
    \n
    153 // See #328 for a detailed discussion on the maximum number of digits.
    \n
    154 //
    \n
    155 // In a nutshell: for the big cases, the scientific notation is always
    \n
    156 // the shortest one, and therefore the one that to_chars will pick.
    \n
    157 //
    \n
    158 // So... How long can the scientific notation get? 1 (for sign) + 1 (for
    \n
    159 // decimal point) + 1 (for 'e') + 1 (for exponent sign) + max_digits10 +
    \n@@ -257,27 +257,27 @@\n
    169 // the smallest power of 10 which a normalised version of T can represent.
    \n
    170 // But the smallest denormalised power of 10 that T can represent is
    \n
    171 // another max_digits10 powers of 10 below that.
    \n
    172 // needs a minus sign.
    \n
    173 //
    \n
    174 // All this stuff messes with my head a bit because it's on the order of
    \n
    175 // log10(log10(n)). It's easy to get the number of logs wrong.
    \n-
    176 auto const max_pos_exp{digits10(lims::max_exponent10)};
    \n+
    176 auto const max_pos_exp{digits10(lims::max_exponent10)};
    \n
    177 // Really want std::abs(lims::min_exponent10), but MSVC 2017 apparently has
    \n
    178 // problems with std::abs. So we use -lims::min_exponent10 instead.
    \n-
    179 auto const max_neg_exp{
    \n+
    179 auto const max_neg_exp{
    \n
    180 digits10(lims::max_digits10 - lims::min_exponent10)};
    \n
    181 return 1 + // Sign.
    \n
    182 1 + // Decimal point.
    \n
    183 std::numeric_limits<T>::max_digits10 + // Mantissa digits.
    \n
    184 1 + // Exponent "e".
    \n
    185 1 + // Exponent sign.
    \n
    186 // Spell this weirdly to stop Windows compilers from reading this as
    \n
    187 // a call to their "max" macro when NOMINMAX is not defined.
    \n-
    188 (std::max)(max_pos_exp, max_neg_exp) + // Exponent digits.
    \n+
    188 (std::max)(max_pos_exp, max_neg_exp) + // Exponent digits.
    \n
    189 1; // Terminating zero.
    \n
    190 }
    \n
    191};
    \n
    \n
    192} // namespace pqxx::internal
    \n
    193
    \n
    194
    \n@@ -1193,106 +1193,106 @@\n \n
    1040 static constexpr zview s_null{"NULL"};
    \n
    1041
    \n
    1042public:
    \n
    1043 static constexpr bool converts_to_string{true};
    \n
    1044 static constexpr bool converts_from_string{false};
    \n
    1045
    \n-
    1046 static zview to_buf(char *begin, char *end, Container const &value)
    \n+
    1046 static zview to_buf(char *begin, char *end, Container const &value)
    \n
    1047 {
    \n
    1048 return generic_to_buf(begin, end, value);
    \n
    1049 }
    \n
    1050
    \n-
    1051 static char *into_buf(char *begin, char *end, Container const &value)
    \n+
    1051 static char *into_buf(char *begin, char *end, Container const &value)
    \n
    1052 {
    \n-
    1053 assert(begin <= end);
    \n-
    1054 std::size_t const budget{size_buffer(value)};
    \n-
    1055 if (internal::cmp_less(end - begin, budget))
    \n+
    1053 assert(begin <= end);
    \n+
    1054 std::size_t const budget{size_buffer(value)};
    \n+
    1055 if (internal::cmp_less(end - begin, budget))
    \n
    1056 throw conversion_overrun{
    \n
    1057 "Not enough buffer space to convert array to string."};
    \n
    1058
    \n-
    1059 char *here = begin;
    \n-
    1060 *here++ = '{';
    \n+
    1059 char *here = begin;
    \n+
    1060 *here++ = '{';
    \n
    1061
    \n-
    1062 bool nonempty{false};
    \n-
    1063 for (auto const &elt : value)
    \n+
    1062 bool nonempty{false};
    \n+
    1063 for (auto const &elt : value)
    \n
    1064 {
    \n-
    1065 if (is_null(elt))
    \n+
    1065 if (is_null(elt))
    \n
    1066 {
    \n-
    1067 s_null.copy(here, std::size(s_null));
    \n-
    1068 here += std::size(s_null);
    \n+
    1067 s_null.copy(here, std::size(s_null));
    \n+
    1068 here += std::size(s_null);
    \n
    1069 }
    \n-
    1070 else if constexpr (is_sql_array<elt_type>)
    \n+
    1070 else if constexpr (is_sql_array<elt_type>)
    \n
    1071 {
    \n
    1072 // Render nested array in-place. Then erase the trailing zero.
    \n-
    1073 here = elt_traits::into_buf(here, end, elt) - 1;
    \n+
    1073 here = elt_traits::into_buf(here, end, elt) - 1;
    \n
    1074 }
    \n-
    1075 else if constexpr (is_unquoted_safe<elt_type>)
    \n+
    1075 else if constexpr (is_unquoted_safe<elt_type>)
    \n
    1076 {
    \n
    1077 // No need to quote or escape. Just convert the value straight into
    \n
    1078 // its place in the array, and "backspace" the trailing zero.
    \n-
    1079 here = elt_traits::into_buf(here, end, elt) - 1;
    \n+
    1079 here = elt_traits::into_buf(here, end, elt) - 1;
    \n
    1080 }
    \n
    1081 else
    \n
    1082 {
    \n-
    1083 *here++ = '"';
    \n+
    1083 *here++ = '"';
    \n
    1084
    \n
    1085 // Use the tail end of the destination buffer as an intermediate
    \n
    1086 // buffer.
    \n-
    1087 auto const elt_budget{pqxx::size_buffer(elt)};
    \n-
    1088 assert(elt_budget < static_cast<std::size_t>(end - here));
    \n-
    1089 for (char const c : elt_traits::to_buf(end - elt_budget, end, elt))
    \n+
    1087 auto const elt_budget{pqxx::size_buffer(elt)};
    \n+
    1088 assert(elt_budget < static_cast<std::size_t>(end - here));
    \n+
    1089 for (char const c : elt_traits::to_buf(end - elt_budget, end, elt))
    \n
    1090 {
    \n
    1091 // We copy the intermediate buffer into the final buffer, char by
    \n
    1092 // char, with escaping where necessary.
    \n
    1093 // TODO: This will not work for all encodings. UTF8 & ASCII are OK.
    \n-
    1094 if (c == '\\\\' or c == '"')
    \n-
    1095 *here++ = '\\\\';
    \n-
    1096 *here++ = c;
    \n+
    1094 if (c == '\\\\' or c == '"')
    \n+
    1095 *here++ = '\\\\';
    \n+
    1096 *here++ = c;
    \n
    1097 }
    \n-
    1098 *here++ = '"';
    \n+
    1098 *here++ = '"';
    \n
    1099 }
    \n-
    1100 *here++ = array_separator<elt_type>;
    \n-
    1101 nonempty = true;
    \n+\n+
    1101 nonempty = true;
    \n
    1102 }
    \n
    1103
    \n
    1104 // Erase that last comma, if present.
    \n-
    1105 if (nonempty)
    \n-
    1106 here--;
    \n+
    1105 if (nonempty)
    \n+
    1106 here--;
    \n
    1107
    \n-
    1108 *here++ = '}';
    \n-
    1109 *here++ = '\\0';
    \n+
    1108 *here++ = '}';
    \n+
    1109 *here++ = '\\0';
    \n
    1110
    \n-
    1111 return here;
    \n+
    1111 return here;
    \n
    1112 }
    \n
    1113
    \n-
    1114 static std::size_t size_buffer(Container const &value) noexcept
    \n+
    1114 static std::size_t size_buffer(Container const &value) noexcept
    \n
    1115 {
    \n-
    1116 if constexpr (is_unquoted_safe<elt_type>)
    \n+
    1116 if constexpr (is_unquoted_safe<elt_type>)
    \n
    1117 return 3 + std::accumulate(
    \n
    1118 std::begin(value), std::end(value), std::size_t{},
    \n-
    1119 [](std::size_t acc, elt_type const &elt) {
    \n+
    1119 [](std::size_t acc, elt_type const &elt) {
    \n
    1120 // Budget for each element includes a terminating zero.
    \n
    1121 // We won't actually be wanting those, but don't subtract
    \n
    1122 // that one byte: we want room for a separator instead.
    \n-
    1123 return acc + (pqxx::is_null(elt) ?
    \n+
    1123 return acc + (pqxx::is_null(elt) ?
    \n
    1124 std::size(s_null) :
    \n-\n+\n
    1126 });
    \n
    1127 else
    \n
    1128 return 3 + std::accumulate(
    \n
    1129 std::begin(value), std::end(value), std::size_t{},
    \n-
    1130 [](std::size_t acc, elt_type const &elt) {
    \n+
    1130 [](std::size_t acc, elt_type const &elt) {
    \n
    1131 // Opening and closing quotes, plus worst-case escaping,
    \n
    1132 // and the one byte for the trailing zero becomes room
    \n
    1133 // for a separator.
    \n-
    1134 std::size_t const elt_size{
    \n-
    1135 pqxx::is_null(elt) ? std::size(s_null) :
    \n-\n-
    1137 return acc + 2 * elt_size + 2;
    \n+
    1134 std::size_t const elt_size{
    \n+
    1135 pqxx::is_null(elt) ? std::size(s_null) :
    \n+\n+
    1137 return acc + 2 * elt_size + 2;
    \n
    1138 });
    \n
    1139 }
    \n
    1140
    \n
    1141 // We don't yet support parsing of array types using from_string. Doing so
    \n
    1142 // would require a reference to the connection.
    \n
    1143};
    \n
\n@@ -1468,14 +1468,15 @@\n
void throw_null_conversion(std::string const &type)
Throw exception for attempt to convert SQL NULL to given type.
Definition strconv.cxx:248
\n
constexpr std::size_t size_esc_bin(std::size_t binary_bytes) noexcept
Compute buffer size needed to escape binary data for use as a BYTEA.
Definition util.hxx:516
\n
constexpr char number_to_digit(int i) noexcept
Convert a number in [0, 9] to its ASCII digit.
Definition conversions.hxx:27
\n
constexpr bool cmp_less(LEFT lhs, RIGHT rhs) noexcept
Same as std::cmp_less, or a workaround where that's not available.
Definition util.hxx:65
\n
constexpr int digit_to_number(char c) noexcept
Compute numeric value of given textual digit (assuming that it is a digit).
Definition conversions.hxx:34
\n
void PQXX_LIBEXPORT esc_bin(bytes_view binary_data, char buffer[]) noexcept
Hex-escape binary data into a buffer.
Definition util.cxx:134
\n
std::string to_string_float(T value)
Floating-point implementations for pqxx::to_string().
Definition strconv.cxx:661
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
constexpr bool cmp_greater(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_greater, or workaround if not available.
Definition util.hxx:87
\n
std::string state_buffer_overrun(int have_bytes, int need_bytes)
Summarize buffer overrun.
Definition strconv.cxx:260
\n
char * generic_into_buf(char *begin, char *end, T const &value)
Generic implementation for into_buf, on top of to_buf.
Definition conversions.hxx:95
\n
constexpr bool cmp_greater_equal(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_greater_equal, or workaround if not available.
Definition util.hxx:113
\n
constexpr bool cmp_less_equal(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_less_equal, or workaround if not available.
Definition util.hxx:100
\n
constexpr std::size_t size_unesc_bin(std::size_t escaped_bytes) noexcept
Compute binary size from the size of its escaped version.
Definition util.hxx:525
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -25,120 +25,120 @@\n 19\n 20/* Internal helpers for string conversion, and conversion implementations.\n 21 *\n 22 * Do not include this header directly. The libpqxx headers do it for you.\n 23 */\n 24namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 25{\n-_\b2_\b7inline constexpr char _\bn_\bu_\bm_\bb_\be_\br_\b__\bt_\bo_\b__\bd_\bi_\bg_\bi_\bt(int i) noexcept\n+_\b2_\b7inline constexpr char _\bn_\bu_\bm_\bb_\be_\br_\b__\bt_\bo_\b__\bd_\bi_\bg_\bi_\bt(int _\bi) noexcept\n 28{\n-29 return static_cast(i + '0');\n+29 return static_cast(_\bi + '0');\n 30}\n 31\n 32\n-_\b3_\b4constexpr int _\bd_\bi_\bg_\bi_\bt_\b__\bt_\bo_\b__\bn_\bu_\bm_\bb_\be_\br(char c) noexcept\n+_\b3_\b4constexpr int _\bd_\bi_\bg_\bi_\bt_\b__\bt_\bo_\b__\bn_\bu_\bm_\bb_\be_\br(char _\bc) noexcept\n 35{\n-36 return c - '0';\n+36 return _\bc - '0';\n 37}\n 38\n 39\n 41\n 44std::string PQXX_LIBEXPORT\n-45_\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn(int have_bytes, int need_bytes);\n+45_\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn(int _\bh_\ba_\bv_\be_\b__\bb_\by_\bt_\be_\bs, int _\bn_\be_\be_\bd_\b__\bb_\by_\bt_\be_\bs);\n 46\n 47\n 48template\n-49inline std::string _\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn(HAVE have_bytes, NEED need_bytes)\n+49inline std::string _\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn(_\bH_\bA_\bV_\bE _\bh_\ba_\bv_\be_\b__\bb_\by_\bt_\be_\bs, _\bN_\bE_\bE_\bD _\bn_\be_\be_\bd_\b__\bb_\by_\bt_\be_\bs)\n 50{\n 51 return _\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn(\n-52 static_cast(have_bytes), static_cast(need_bytes));\n+52 static_cast(_\bh_\ba_\bv_\be_\b__\bb_\by_\bt_\be_\bs), static_cast(_\bn_\be_\be_\bd_\b__\bb_\by_\bt_\be_\bs));\n 53}\n 54\n 55\n-57[[noreturn]] PQXX_LIBEXPORT PQXX_COLD void\n+57[[_\bn_\bo_\br_\be_\bt_\bu_\br_\bn]] PQXX_LIBEXPORT PQXX_COLD void\n 58_\bt_\bh_\br_\bo_\bw_\b__\bn_\bu_\bl_\bl_\b__\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn(std::string const &type);\n 59\n 60\n-62[[noreturn]] PQXX_LIBEXPORT PQXX_COLD void\n+62[[_\bn_\bo_\br_\be_\bt_\bu_\br_\bn]] PQXX_LIBEXPORT PQXX_COLD void\n 63_\bt_\bh_\br_\bo_\bw_\b__\bn_\bu_\bl_\bl_\b__\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn(std::string_view type);\n 64\n 65\n 67\n _\b7_\b6template struct _\bd_\bi_\bs_\ba_\bl_\bl_\bo_\bw_\be_\bd_\b__\ba_\bm_\bb_\bi_\bg_\bu_\bo_\bu_\bs_\b__\bc_\bh_\ba_\br_\b__\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn\n 77{\n 78 static constexpr bool converts_to_string{false};\n 79 static constexpr bool converts_from_string{false};\n-80 static char *into_buf(char *, char *, CHAR_TYPE) = delete;\n+80 static char *into_buf(char *, char *, _\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE) = delete;\n 81 static constexpr _\bz_\bv_\bi_\be_\bw\n-82 to_buf(char *, char *, CHAR_TYPE const &) noexcept = delete;\n+82 to_buf(char *, char *, _\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE const &) noexcept = delete;\n 83\n 84 static constexpr std::size_t\n-85 size_buffer(CHAR_TYPE const &) noexcept = delete;\n-86 static CHAR_TYPE from_string(std::string_view) = delete;\n+85 size_buffer(_\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE const &) noexcept = delete;\n+86 static _\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE from_string(std::string_view) = delete;\n 87};\n 88\n 89\n-90template PQXX_LIBEXPORT extern std::string _\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bf_\bl_\bo_\ba_\bt(T);\n+90template PQXX_LIBEXPORT extern std::string _\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bf_\bl_\bo_\ba_\bt(_\bT);\n 91\n 92\n 94template\n-_\b9_\b5inline char *_\bg_\be_\bn_\be_\br_\bi_\bc_\b__\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(char *begin, char *end, T const &value)\n+_\b9_\b5inline char *_\bg_\be_\bn_\be_\br_\bi_\bc_\b__\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(char *begin, char *end, _\bT const &value)\n 96{\n 97 _\bz_\bv_\bi_\be_\bw const text{_\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\bT_\b>_\b:_\b:_\bt_\bo_\b__\bb_\bu_\bf(begin, end, value)};\n-98 auto const space{end - begin};\n+98 auto const _\bs_\bp_\ba_\bc_\be{end - begin};\n 99 // Include the trailing zero.\n-100 auto const len = std::size(text) + 1;\n-101 if (_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br(len, space))\n+100 auto const _\bl_\be_\bn = std::size(text) + 1;\n+101 if (_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br(_\bl_\be_\bn, _\bs_\bp_\ba_\bc_\be))\n 102 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\bo_\bv_\be_\br_\br_\bu_\bn{\n-103 \"Not enough buffer space to insert \" + type_name + \". \" +\n-104 _\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn(space, len)};\n-105 std::memmove(begin, text.data(), len);\n-106 return begin + len;\n+103 \"Not enough buffer space to insert \" + _\bt_\by_\bp_\be_\b__\bn_\ba_\bm_\be_\b<_\bT_\b> + \". \" +\n+104 _\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn(_\bs_\bp_\ba_\bc_\be, _\bl_\be_\bn)};\n+105 std::memmove(begin, text.data(), _\bl_\be_\bn);\n+106 return begin + _\bl_\be_\bn;\n 107}\n 108\n 109\n 110// C++20: Guard with concept?\n _\b1_\b1_\b2template struct _\bi_\bn_\bt_\be_\bg_\br_\ba_\bl_\b__\bt_\br_\ba_\bi_\bt_\bs\n 113{\n 114 static constexpr bool converts_to_string{true};\n 115 static constexpr bool converts_from_string{true};\n-116 static PQXX_LIBEXPORT T from_string(std::string_view text);\n-117 static PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw to_buf(char *begin, char *end, T const &value);\n-118 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, T const\n+116 static PQXX_LIBEXPORT _\bT from_string(std::string_view text);\n+117 static PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw to_buf(char *begin, char *end, _\bT const &value);\n+118 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, _\bT const\n &value);\n 119\n-120 static constexpr std::size_t size_buffer(T const &) noexcept\n+120 static constexpr std::size_t size_buffer(_\bT const &) noexcept\n 121 {\n 126 return std::is_signed_v + std::numeric_limits::digits10 + 1 + 1;\n 127 }\n 128};\n 129\n 130\n 131// C++20: Guard with concept?\n _\b1_\b3_\b3template struct _\bf_\bl_\bo_\ba_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs\n 134{\n 135 static constexpr bool converts_to_string{true};\n 136 static constexpr bool converts_from_string{true};\n-137 static PQXX_LIBEXPORT T from_string(std::string_view text);\n-138 static PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw _\bt_\bo_\b__\bb_\bu_\bf(char *begin, char *end, T const &value);\n-139 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, T const\n+137 static PQXX_LIBEXPORT _\bT from_string(std::string_view text);\n+138 static PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw _\bt_\bo_\b__\bb_\bu_\bf(char *begin, char *end, _\bT const &value);\n+139 static PQXX_LIBEXPORT char *into_buf(char *begin, char *end, _\bT const\n &value);\n 140\n 141 // Return a nonnegative integral value's number of decimal digits.\n 142 static constexpr std::size_t digits10(std::size_t value) noexcept\n 143 {\n 144 if (value < 10)\n 145 return 1;\n 146 else\n 147 return 1 + digits10(value / 10);\n 148 }\n 149\n-150 static constexpr std::size_t size_buffer(T const &) noexcept\n+150 static constexpr std::size_t size_buffer(_\bT const &) noexcept\n 151 {\n-152 using lims = std::numeric_limits;\n+152 using _\bl_\bi_\bm_\bs = std::numeric_limits;\n 153 // See #328 for a detailed discussion on the maximum number of digits.\n 154 //\n 155 // In a nutshell: for the big cases, the scientific notation is always\n 156 // the shortest one, and therefore the one that to_chars will pick.\n 157 //\n 158 // So... How long can the scientific notation get? 1 (for sign) + 1 (for\n 159 // decimal point) + 1 (for 'e') + 1 (for exponent sign) + max_digits10 +\n@@ -154,27 +154,27 @@\n 169 // the smallest power of 10 which a normalised version of T can represent.\n 170 // But the smallest denormalised power of 10 that T can represent is\n 171 // another max_digits10 powers of 10 below that.\n 172 // needs a minus sign.\n 173 //\n 174 // All this stuff messes with my head a bit because it's on the order of\n 175 // log10(log10(n)). It's easy to get the number of logs wrong.\n-176 auto const max_pos_exp{digits10(lims::max_exponent10)};\n+176 auto const _\bm_\ba_\bx_\b__\bp_\bo_\bs_\b__\be_\bx_\bp{digits10(lims::max_exponent10)};\n 177 // Really want std::abs(lims::min_exponent10), but MSVC 2017 apparently has\n 178 // problems with std::abs. So we use -lims::min_exponent10 instead.\n-179 auto const max_neg_exp{\n+179 auto const _\bm_\ba_\bx_\b__\bn_\be_\bg_\b__\be_\bx_\bp{\n 180 digits10(lims::max_digits10 - lims::min_exponent10)};\n 181 return 1 + // Sign.\n 182 1 + // Decimal point.\n 183 std::numeric_limits::max_digits10 + // Mantissa digits.\n 184 1 + // Exponent \"e\".\n 185 1 + // Exponent sign.\n 186 // Spell this weirdly to stop Windows compilers from reading this as\n 187 // a call to their \"max\" macro when NOMINMAX is not defined.\n-188 (std::max)(max_pos_exp, max_neg_exp) + // Exponent digits.\n+188 (std::max)(_\bm_\ba_\bx_\b__\bp_\bo_\bs_\b__\be_\bx_\bp, _\bm_\ba_\bx_\b__\bn_\be_\bg_\b__\be_\bx_\bp) + // Exponent digits.\n 189 1; // Terminating zero.\n 190 }\n 191};\n 192} // namespace pqxx::internal\n 193\n 194\n 195namespace _\bp_\bq_\bx_\bx\n@@ -1007,106 +1007,106 @@\n 1039 using _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs = _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\be_\bl_\bt_\b__\bt_\by_\bp_\be_\b>;\n 1040 static constexpr _\bz_\bv_\bi_\be_\bw s_null{\"NULL\"};\n 1041\n 1042public:\n 1043 static constexpr bool converts_to_string{true};\n 1044 static constexpr bool converts_from_string{false};\n 1045\n-1046 static _\bz_\bv_\bi_\be_\bw to_buf(char *begin, char *end, Container const &value)\n+1046 static _\bz_\bv_\bi_\be_\bw to_buf(char *begin, char *end, _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br const &value)\n 1047 {\n 1048 return generic_to_buf(begin, end, value);\n 1049 }\n 1050\n-1051 static char *into_buf(char *begin, char *end, Container const &value)\n+1051 static char *into_buf(char *begin, char *end, _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br const &value)\n 1052 {\n-1053 assert(begin <= end);\n-1054 std::size_t const budget{size_buffer(value)};\n-1055 if (_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(end - begin, budget))\n+1053 _\ba_\bs_\bs_\be_\br_\bt(begin <= end);\n+1054 std::size_t const _\bb_\bu_\bd_\bg_\be_\bt{size_buffer(value)};\n+1055 if (_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(end - begin, _\bb_\bu_\bd_\bg_\be_\bt))\n 1056 throw _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\bo_\bv_\be_\br_\br_\bu_\bn{\n 1057 \"Not enough buffer space to convert array to string.\"};\n 1058\n-1059 char *here = begin;\n-1060 *here++ = '{';\n+1059 char *_\bh_\be_\br_\be = begin;\n+1060 *_\bh_\be_\br_\be++ = '{';\n 1061\n-1062 bool nonempty{false};\n-1063 for (auto const &elt : value)\n+1062 bool _\bn_\bo_\bn_\be_\bm_\bp_\bt_\by{false};\n+1063 for (auto const &_\be_\bl_\bt : value)\n 1064 {\n-1065 if (is_null(elt))\n+1065 if (is_null(_\be_\bl_\bt))\n 1066 {\n-1067 s_null.copy(here, std::size(s_null));\n-1068 here += std::size(s_null);\n+1067 s_null.copy(_\bh_\be_\br_\be, std::size(s_null));\n+1068 _\bh_\be_\br_\be += std::size(s_null);\n 1069 }\n-1070 else if constexpr (is_sql_array)\n+1070 else if constexpr (_\bi_\bs_\b__\bs_\bq_\bl_\b__\ba_\br_\br_\ba_\by_\b<_\be_\bl_\bt_\b__\bt_\by_\bp_\be_\b>)\n 1071 {\n 1072 // Render nested array in-place. Then erase the trailing zero.\n-1073 here = _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(here, end, elt) - 1;\n+1073 _\bh_\be_\br_\be = _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(_\bh_\be_\br_\be, end, _\be_\bl_\bt) - 1;\n 1074 }\n-1075 else if constexpr (is_unquoted_safe)\n+1075 else if constexpr (_\bi_\bs_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\ba_\bf_\be_\b<_\be_\bl_\bt_\b__\bt_\by_\bp_\be_\b>)\n 1076 {\n 1077 // No need to quote or escape. Just convert the value straight into\n 1078 // its place in the array, and \"backspace\" the trailing zero.\n-1079 here = _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(here, end, elt) - 1;\n+1079 _\bh_\be_\br_\be = _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(_\bh_\be_\br_\be, end, _\be_\bl_\bt) - 1;\n 1080 }\n 1081 else\n 1082 {\n-1083 *here++ = '\"';\n+1083 *_\bh_\be_\br_\be++ = '\"';\n 1084\n 1085 // Use the tail end of the destination buffer as an intermediate\n 1086 // buffer.\n-1087 auto const elt_budget{pqxx::size_buffer(elt)};\n-1088 assert(elt_budget < static_cast(end - here));\n-1089 for (char const c : _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\bo_\b__\bb_\bu_\bf(end - elt_budget, end, elt))\n+1087 auto const _\be_\bl_\bt_\b__\bb_\bu_\bd_\bg_\be_\bt{pqxx::size_buffer(_\be_\bl_\bt)};\n+1088 _\ba_\bs_\bs_\be_\br_\bt(_\be_\bl_\bt_\b__\bb_\bu_\bd_\bg_\be_\bt < static_cast(end - _\bh_\be_\br_\be));\n+1089 for (char const _\bc : _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\bo_\b__\bb_\bu_\bf(end - _\be_\bl_\bt_\b__\bb_\bu_\bd_\bg_\be_\bt, end, _\be_\bl_\bt))\n 1090 {\n 1091 // We copy the intermediate buffer into the final buffer, char by\n 1092 // char, with escaping where necessary.\n 1093 // TODO: This will not work for all encodings. UTF8 & ASCII are OK.\n-1094 if (c == '\\\\' or c == '\"')\n-1095 *here++ = '\\\\';\n-1096 *here++ = c;\n+1094 if (_\bc == '\\\\' _\bo_\br _\bc == '\"')\n+1095 *_\bh_\be_\br_\be++ = '\\\\';\n+1096 *_\bh_\be_\br_\be++ = _\bc;\n 1097 }\n-1098 *here++ = '\"';\n+1098 *_\bh_\be_\br_\be++ = '\"';\n 1099 }\n-1100 *here++ = array_separator;\n-1101 nonempty = true;\n+1100 *_\bh_\be_\br_\be++ = _\ba_\br_\br_\ba_\by_\b__\bs_\be_\bp_\ba_\br_\ba_\bt_\bo_\br_\b<_\be_\bl_\bt_\b__\bt_\by_\bp_\be_\b>;\n+1101 _\bn_\bo_\bn_\be_\bm_\bp_\bt_\by = true;\n 1102 }\n 1103\n 1104 // Erase that last comma, if present.\n-1105 if (nonempty)\n-1106 here--;\n+1105 if (_\bn_\bo_\bn_\be_\bm_\bp_\bt_\by)\n+1106 _\bh_\be_\br_\be--;\n 1107\n-1108 *here++ = '}';\n-1109 *here++ = '\\0';\n+1108 *_\bh_\be_\br_\be++ = '}';\n+1109 *_\bh_\be_\br_\be++ = '\\0';\n 1110\n-1111 return here;\n+1111 return _\bh_\be_\br_\be;\n 1112 }\n 1113\n-1114 static std::size_t size_buffer(Container const &value) noexcept\n+1114 static std::size_t size_buffer(_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br const &value) noexcept\n 1115 {\n-1116 if constexpr (is_unquoted_safe)\n+1116 if constexpr (_\bi_\bs_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\ba_\bf_\be_\b<_\be_\bl_\bt_\b__\bt_\by_\bp_\be_\b>)\n 1117 return 3 + std::accumulate(\n 1118 std::begin(value), std::end(value), std::size_t{},\n-1119 [](std::size_t acc, elt_type const &elt) {\n+1119 [](std::size_t _\ba_\bc_\bc, elt_type const &_\be_\bl_\bt) {\n 1120 // Budget for each element includes a terminating zero.\n 1121 // We won't actually be wanting those, but don't subtract\n 1122 // that one byte: we want room for a separator instead.\n-1123 return acc + (pqxx::is_null(elt) ?\n+1123 return _\ba_\bc_\bc + (pqxx::is_null(_\be_\bl_\bt) ?\n 1124 std::size(s_null) :\n-1125 _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be_\b__\bb_\bu_\bf_\bf_\be_\br(elt));\n+1125 _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be_\b__\bb_\bu_\bf_\bf_\be_\br(_\be_\bl_\bt));\n 1126 });\n 1127 else\n 1128 return 3 + std::accumulate(\n 1129 std::begin(value), std::end(value), std::size_t{},\n-1130 [](std::size_t acc, elt_type const &elt) {\n+1130 [](std::size_t _\ba_\bc_\bc, elt_type const &_\be_\bl_\bt) {\n 1131 // Opening and closing quotes, plus worst-case escaping,\n 1132 // and the one byte for the trailing zero becomes room\n 1133 // for a separator.\n-1134 std::size_t const elt_size{\n-1135 pqxx::is_null(elt) ? std::size(s_null) :\n-1136 _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be_\b__\bb_\bu_\bf_\bf_\be_\br(elt)};\n-1137 return acc + 2 * elt_size + 2;\n+1134 std::size_t const _\be_\bl_\bt_\b__\bs_\bi_\bz_\be{\n+1135 pqxx::is_null(_\be_\bl_\bt) ? std::size(s_null) :\n+1136 _\be_\bl_\bt_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be_\b__\bb_\bu_\bf_\bf_\be_\br(_\be_\bl_\bt)};\n+1137 return _\ba_\bc_\bc + 2 * _\be_\bl_\bt_\b__\bs_\bi_\bz_\be + 2;\n 1138 });\n 1139 }\n 1140\n 1141 // We don't yet support parsing of array types using from_string. Doing so\n 1142 // would require a reference to the connection.\n 1143};\n 1144} // namespace pqxx::internal\n@@ -1302,14 +1302,19 @@\n void PQXX_LIBEXPORT esc_bin(bytes_view binary_data, char buffer[]) noexcept\n Hex-escape binary data into a buffer.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.cxx:134\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bf_\bl_\bo_\ba_\bt\n std::string to_string_float(T value)\n Floating-point implementations for pqxx::to_string().\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn strconv.cxx:661\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br\n constexpr bool cmp_greater(LEFT lhs, RIGHT rhs) noexcept\n C++20 std::cmp_greater, or workaround if not available.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:87\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn\n std::string state_buffer_overrun(int have_bytes, int need_bytes)\n Summarize buffer overrun.\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/datatypes.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/datatypes.html", "unified_diff": "@@ -93,52 +93,52 @@\n
Supporting additional data types
\n \n
\n

Communication with the database mostly happens in a text format. When you include an integer value in a query, either you use to_string to convert it to that text format, or under the bonnet, libpqxx does it for you. When you get a query result field \"as a float,\" libpqxx converts from the text format to a floating-point type. These conversions are everywhere in libpqxx.

\n

The conversion system supports many built-in types, but it is also extensible. You can \"teach\" libpqxx (in the scope of your own application) to convert additional types of values to and from PostgreSQL's string format.

\n

This is massively useful, but it's not for the faint of heart. You'll need to specialise some templates. And, the API for doing this can change with any major libpqxx release.

\n

If that happens, your code may fail to compile with the newer libpqxx version, and you'll have to go through the NEWS file to find the API changes. Usually it'll be a small change, like an additional function you need to implement, or a constant you need to define.

\n-

\n+

\n Converting types

\n

In your application, a conversion is driven entirely by a C++ type you specify. The value's SQL type on the database side has nothing to do with it. Nor is there anything in the string that would identify its type. Your code says \"convert to this type\" and libpqxx does it.

\n

So, if you've SELECTed a 64-bit integer from the database, and you try to convert it to a C++ short, one of two things will happen: either the number is small enough to fit in your short and it just works, or else it throws a conversion exception. Similarly, if you try to read a 32-bit SQL int as a C++ 32-bit unsigned int, that'll work fine, unless the value happens to be negative. In such cases the conversion will throw a conversion_error.

\n

Or, your database table might have a text column, but a given field may contain a string that looks just like a number. You can convert that value to an integer type just fine. Or to a floating-point type. All that matters to the conversion is the actual value, and the type your code specifies.

\n

In some cases the templates for these conversions can tell the type from the arguments you pass them:

\n
auto x = to_string(99);
\n

In other cases you may need to instantiate template explicitly:

\n
auto y = from_string<int>("99");
\n-

\n+

\n Supporting a new type

\n

Let's say you have some other SQL type which you want to be able to store in, or retrieve from, the database. What would it take to support that?

\n

Sometimes you do not need complete support. You might need a conversion to a string but not from a string, for example. You write out the conversion at compile time, so don't be too afraid to be incomplete. If you leave out one of these steps, it's not going to crash at run time or mess up your data. The worst that can happen is that your code won't build.

\n

So what do you need for a complete conversion?

\n

First off, of course, you need a C++ type. It may be your own, but it doesn't have to be. It could be a type from a third-party library, or even one from the standard library that libpqxx does not yet support.

\n

First thing to do is specialise the pqxx::type_name variable to give the type a human-readable name. That allows libpqxx error messages and such to talk about the type. If you don't define a name, libpqxx will try to figure one out with some help from the compiler, but it may not always be easy to read.

\n

Then, does your type have a built-in null value? For example, a char * can be null on the C++ side. Or some types are always null, such as nullptr. You specialise the pqxx::nullness template to specify the details.

\n

Finally, you specialise the pqxx::string_traits template. This is where you define the actual conversions.

\n

Let's go through these steps one by one.

\n-

\n+

\n Your type

\n

You'll need a type for which the conversions are not yet defined, because the C++ type is what determines the right conversion. One type, one set of conversions.

\n

The type doesn't have to be one that you create. The conversion logic was designed such that you can build it around any type. So you can just as easily build a conversion for a type that's defined somewhere else. There's no need to include any special methods or other members inside the type itself. That's also why libpqxx can convert built-in types like int.

\n

By the way, if the type is an enum, you don't need to do any of this. Just invoke the preprocessor macro PQXX_DECLARE_ENUM_CONVERSION, from the global namespace near the top of your translation unit, and pass the type as an argument.

\n

The library also provides specialisations for std::optional<T>, std::shared_ptr<T>, and std::unique_ptr<T>. If you have conversions for T, you'll also automatically have conversions for those.

\n-

\n+

\n Specialise <tt>type_name</tt>

\n

When errors happen during conversion, libpqxx will compose error messages for the user. Sometimes these will include the name of the type that's being converted.

\n

To tell libpqxx the name of each type, there's a template variable called pqxx::type_name. For any given type T, it should have a specialisation that provides that T's human-readable name:

\n
// T is your type.
\n
namespace pqxx
\n
{
\n
template<> std::string const type_name<T>{"My T type's name"};
\n
}
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n

(Yes, this means that you need to define something inside the pqxx namespace. Future versions of libpqxx may move this into a separate namespace.)

\n

Define this early on in your translation unit, before any code that might cause libpqxx to need the name. That way, the libpqxx code which needs to know the type's name can see your definition.

\n-

\n+

\n Specialise <tt>nullness</tt>

\n

A struct template pqxx::nullness defines whether your type has a natural \"null value\" built in. If so, it also provides member functions for producing and recognising null values.

\n

The simplest scenario is also the most common: most types don't have a null value built in. There is no \"null `int`\" in C++. In that kind of case, just derive your nullness traits from pqxx::no_null as a shorthand:

\n
// T is your type.
\n
namespace pqxx
\n
{
\n
template<> struct nullness<T> : pqxx::no_null<T> {};
\n@@ -172,15 +172,15 @@\n
}
\n
static bool is_null(TYPE const &value)
Is value a null?
\n
static TYPE null()
Return a null value.
\n
static bool has_null
Does this type have a null value?
Definition strconv.hxx:93
\n
static bool always_null
Is this type always null?
Definition strconv.hxx:96
\n

You may be wondering why there's a function to produce a null value, but also a function to check whether a value is null. Why not just compare the value to the result of null()? Because two null values may not be equal (like in SQL, where NULL <> NULL). Or T may have multiple different null values. Or T may override the comparison operator to behave in some unusual way.

\n

As a third case, your type may be one that always represents a null value. This is the case for std::nullptr_t and std::nullopt_t. In that case, you set nullness<TYPE>::always_null to true (as well as has_null of course), and you won't need to define any actual conversions.

\n-

\n+

\n Specialise <tt>string_traits</tt>

\n

This part is the most work. You can skip it for types that are always null, but those will be rare.

\n

The APIs for doing this are designed so that you don't need to allocate memory on the free store, also known as \"the heap\": new/delete. Memory allocation can be hidden inside std::string, std::vector, etc. The conversion API allows you to use std::string for convenience, or memory buffers for speed.

\n

Start by specialising the pqxx::string_traits template. You don't absolutely have to implement all parts of this API. Generally, if it compilers, you're OK for the time being. Just bear in mind that future libpqxx versions may change the API \u2014 or how it uses the API internally.

\n
namespace pqxx
\n
{
\n
// T is your type.
\n@@ -211,22 +211,22 @@\n
static TYPE from_string(std::string_view text)
Parse a string representation of a TYPE value.
\n
static std::size_t size_buffer(TYPE const &value) noexcept
Estimate how much buffer space is needed to represent value.
\n
static zview to_buf(char *begin, char *end, TYPE const &value)
Return a string_view representing value, plus terminating zero.
\n
static constexpr bool converts_to_string
Is conversion from TYPE to strings supported?
Definition strconv.hxx:159
\n
static char * into_buf(char *begin, char *end, TYPE const &value)
Write value's string representation into buffer at begin.
\n
static constexpr bool converts_from_string
Is conversion from string_view to TYPE supported?
Definition strconv.hxx:165
\n

You'll also need to write those member functions, or as many of them as needed to get your code to build.

\n-

\n+

\n <tt>from_string</tt>

\n

We start off simple: from_string parses a string as a value of T, and returns that value.

\n

The string may or may not be zero-terminated; it's just the string_view from beginning to end (with end being exclusive). In your tests, be sure to cover cases where the string does not end in a zero byte!

\n

It's perfectly possible that the string doesn't actually represent a T value. Mistakes happen. There can be corner cases. When you run into this, throw a pqxx::conversion_error.

\n

(Of course it's also possible that you run into some other error, so it's fine to throw different exceptions as well. But when it's definitely \"this is not\n the right format for a `T`,\" throw conversion_error.)

\n-

\n+

\n <tt>to_buf</tt>

\n

In this function, you convert a value of T into a string that the postgres server will understand.

\n

The caller will provide you with a buffer where you can write the string, if you need it: from begin to end exclusive. It's a half-open interval, so don't access *end.

\n

If the buffer is insufficient for you to do the conversion, throw a pqxx::conversion_overrun. It doesn't have to be exact: you can be a little pessimistic and demand a bit more space than you need. Just be sure to throw the exception if there's any risk of overrunning the buffer.

\n

You don't have to use the buffer for this function though. For example, pqxx::string_traits<bool>::to_buf returns a compile-time constant string and completely ignores the buffer.

\n

Even if you do use the buffer, your string does not have to start at the beginning of the buffer. For example, the integer conversions may work from right to left, if that's easier: they can start by writing the least significant digit to the end of the buffer, divide the remainder by 10, and repeat for the next digit.

\n

Return a pqxx::zview. This is basically a std::string_view, but with one difference: when you create a zview you guarantee that there is a valid zero byte right after the string_view. The zero byte does not count as part of its size, but it has to be there.

\n@@ -234,36 +234,36 @@\n
void invariant(zview z)
\n
{
\n
assert(z[std::size(z)] == 0);
\n
}
\n

The trailing zero should not go inside the zview, but if you convert into the buffer, do make sure you that trailing stays inside the buffer, i.e. before the end. (If there's no room for that zero inside the buffer, throw pqxx::conversion_error).

\n

Beware of locales when converting. If you use standard library features like sprintf, they may obey whatever locale is currently set on the system where the code runs. That means that a simple integer like 1000000 may come out as \"1000000\" on your system, but as \"1,000,000\" on mine, or as \"1.000.000\" for somebody else, and on an Indian system it may be \"1,00,000\". Don't let that happen, or it will confuse things. Use only non-locale-sensitive library functions. Values coming from or going to the database should be in fixed, non-localised formats.

\n

If your conversions need to deal with fields in types that libpqxx already supports, you can use the conversion functions for those: pqxx::from_string, pqxx::to_string, pqxx::to_buf. They in turn will call the string_traits specialisations for those types. Or, you can call their string_traits directly.

\n-

\n+

\n <tt>into_buf</tt>

\n

This is a stricter version of to_buf. All the same requirements apply, but in addition you must write your string into the given buffer, starting exactly at begin.

\n

That's why this function returns just a simple pointer: the address right behind the trailing zero. If the caller wants to use the string, they can find it at begin. If they want to write another value into the rest of the buffer, they can continue writing at the location you returned.

\n-

\n+

\n <tt>size_buffer</tt>

\n

Here you estimate how much buffer space you need for converting a T to a string. Be precise if you can, but pessimistic if you must. It's usually better to waste a few bytes of space than to spend a lot of time computing the exact buffer space you need. And failing the conversion because you under-budgeted the buffer is worst of all.

\n

Include the trailing zero in the buffer size. If your to_buf takes more space than just what's needed to store the result, include that too.

\n

Make size_buffer a constexpr function if you can. It can allow the caller to allocate the buffer on the stack, with a size known at compile time.

\n-

\n+

\n Optional: Specialise <tt>is_unquoted_safe</tt>

\n

When converting arrays or composite values to strings, libpqxx may need to quote values and escape any special characters. This takes time.

\n

Some types though, such as integral or floating-point types, can never have any special characters such as quotes, commas, or backslashes in their string representations. In such cases, there's no need to quote or escape such values in SQL arrays or composite types.

\n

If your type is like that, you can tell libpqxx about this by defining:

\n
namespace pqxx
\n
{
\n
// T is your type.
\n
template<> inline constexpr bool is_unquoted_safe<T>{true};
\n
}
\n

The code that converts this type of field to strings in an array or a composite type can then use a simpler, more efficient variant of the code. It's always safe to leave this out; it's just an optimisation for when you're completely sure that it's safe.

\n

Do not do this if a string representation of your type may contain a comma; semicolon; parenthesis; brace; quote; backslash; newline; or any other character that might need escaping.

\n-

\n+

\n Optional: Specialise <tt>param_format</tt>

\n

This one you don't generally need to worry about. Read on if you're writing a type which represents raw binary data, or if you're writing a template where some specialisations may contain raw binary data.

\n

When you call parameterised statements, or prepared statements with parameters, libpqxx needs to pass your parameters on to libpq, the underlying C-level PostgreSQL client library.

\n

There are two formats for doing that: text and binary. In the first, we represent all values as strings in the PostgreSQL text format, and the server then converts them into its own internal binary representation. That's what those string conversions above are all about, and it's what we do for almost all types of parameters.

\n

But we do it differently when the parameter is a contiguous series of raw bytes and the corresponding SQL type is BYTEA. There is a text format for those, but we bypass it for efficiency. The server can use the binary data in the exact same form, without any conversion or extra processing. The binary data is also twice as compact during transport.

\n

(People sometimes ask why we can't just treat all types as binary. However the general case isn't so clear-cut. The binary formats are not documented, there are no guarantees that they will be platform-independent or that they will remain stable across postgres releases, and there's no really solid way to detect when we might get the format wrong. On top of all that, the conversions aren't necessarily as straightforward and efficient as they sound. So, for the general case, libpqxx sticks with the text formats. Raw binary data alone stands out as a clear win.)

\n

Long story short, the machinery for passing parameters needs to know: is this parameter a binary string, or not? In the normal case it can assume \"no,\" and that's what it does. The text format is always a safe choice; we just try to use the binary format where it's faster.

\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/deprecated.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/deprecated.html", "unified_diff": "@@ -93,87 +93,87 @@\n
Deprecated List
\n
\n
\n
\n
Class pqxx::array_parser
\n
Use pqxx::array instead.
\n
Class pqxx::basic_fieldstream< CHAR, TRAITS >
\n-
To convert a field's value string to some other type, e.g. to an int, use the field's as<...>() member function. To read a field efficiently just as a string, use its c_str() or its as<std::string_vview>().
\n+
To convert a field's value string to some other type, e.g. to an int, use the field's as<...>() member function. To read a field efficiently just as a string, use its c_str() or its as<std::string_vview>().
\n
Class pqxx::basic_ilostream< CHAR, TRAITS >
\n-
Access large objects directly using the blob class.
\n+
Access large objects directly using the blob class.
\n
Class pqxx::basic_lostream< CHAR, TRAITS >
\n-
Access large objects directly using the blob class.
\n+
Access large objects directly using the blob class.
\n
Class pqxx::basic_olostream< CHAR, TRAITS >
\n-
Access large objects directly using the blob class.
\n+
Access large objects directly using the blob class.
\n
Class pqxx::binarystring
\n-
Use bytes and bytes_view for binary data. In C++20 or better, any contiguous_range of std::byte will do.
\n+
Use bytes and bytes_view for binary data. In C++20 or better, any contiguous_range of std::byte will do.
\n
Member pqxx::blob::read (std::vector< std::byte, ALLOC > &buf)
\n-
As libpqxx moves to C++20 as its baseline language version, this will take and return std::span<std::byte>.
\n+
As libpqxx moves to C++20 as its baseline language version, this will take and return std::span<std::byte>.
\n
Member pqxx::connection::get_errorhandlers () const
\n-
Return pointers to the active errorhandlers.
\n+
Return pointers to the active errorhandlers.
\n
Member pqxx::connection::set_variable (std::string_view var, std::string_view value) &
\n-
To set a session variable, use set_session_var. To set a transaction-local variable, execute an SQL SET command.
\n+
To set a session variable, use set_session_var. To set a transaction-local variable, execute an SQL SET command.
\n
Member pqxx::connection_base
\n-
Old base class for connection. They are now the same class.
\n-
Member pqxx::encrypt_password (char const user[], char const password[])
\n-
Use connection::encrypt_password instead.
\n+
Old base class for connection. They are now the same class.
\n
Member pqxx::encrypt_password (zview user, zview password)
\n+
Use connection::encrypt_password instead.
\n+
Member pqxx::encrypt_password (char const user[], char const password[])
\n
Use connection::encrypt_password instead.
\n
Class pqxx::errorhandler
\n-
Base class for obsolete error-handler callbacks.
\n+
Base class for obsolete error-handler callbacks.
\n
Member pqxx::fieldstream
\n-
Read a field using field::as<...>() or field::c_str().
\n+
Read a field using field::as<...>() or field::c_str().
\n
Member pqxx::from_query
\n-
Use transaction_base::stream instead of stream_from.
\n+
Use transaction_base::stream instead of stream_from.
\n
Struct pqxx::from_query_t
\n-
Use stream_from::query() instead.
\n+
Use stream_from::query() instead.
\n
Member pqxx::from_table
\n-
Use transaction_base::stream instead of stream_from.
\n+
Use transaction_base::stream instead of stream_from.
\n
Struct pqxx::from_table_t
\n-
Use stream_from::table() instead.
\n+
Use stream_from::table() instead.
\n
Class pqxx::internal::dynamic_params< IT, ACCESSOR >
\n-
Use params instead.
\n+
Use params instead.
\n
Class pqxx::largeobject
\n-
Use the blob class instead.
\n+
Use the blob class instead.
\n
Class pqxx::largeobject_streambuf< CHAR, TRAITS >
\n-
Access large objects directly using the blob class.
\n+
Access large objects directly using the blob class.
\n
Class pqxx::largeobjectaccess
\n-
Use the blob class instead.
\n+
Use the blob class instead.
\n
Member pqxx::operator<< (std::basic_ostream< CHAR > &s, field const &value)
\n-
The C++ streams library is not great to work with. In particular, error handling is easy to get wrong. So you're probably better off doing this by hand.
\n+
The C++ streams library is not great to work with. In particular, error handling is easy to get wrong. So you're probably better off doing this by hand.
\n
Member pqxx::params::append (binarystring const &value) &
\n-
Append binarystring parameter.
\n+
Append binarystring parameter.
\n
Namespace pqxx::prepare
\n-
The new params class replaces all of this.
\n+
The new params class replaces all of this.
\n
Class pqxx::quiet_errorhandler
\n-
Use a notice handler instead.
\n+
Use a notice handler instead.
\n
Member pqxx::row::slice (size_type sbegin, size_type send) const
\n-
I haven't heard of anyone caring about row slicing at all in at least the last 15 years. Yet it adds complexity, so unless anyone files a bug explaining why they really need this feature, I'm going to remove it. Even if they do, the feature may need an update.
\n+
I haven't heard of anyone caring about row slicing at all in at least the last 15 years. Yet it adds complexity, so unless anyone files a bug explaining why they really need this feature, I'm going to remove it. Even if they do, the feature may need an update.
\n
Class pqxx::stream_from
\n-
Use transaction_base::stream.
\n+
Use transaction_base::stream.
\n
Member pqxx::stream_from::stream_from (transaction_base &tx, from_table_t, std::string_view table, Columns const &columns)
\n-
Use factory function query instead.
\n-
Member pqxx::stream_from::stream_from (transaction_base &tx, std::string_view table)
\n-
Use factories table or raw_table instead.
\n-
Member pqxx::stream_from::stream_from (transaction_base &tx, std::string_view table, Columns const &columns)
\n-
Use factories table or raw_table instead.
\n+
Use factory function query instead.
\n
Member pqxx::stream_from::stream_from (transaction_base &, std::string_view table, Iter columns_begin, Iter columns_end)
\n-
Use factories table or raw_table instead.
\n+
Use factories table or raw_table instead.
\n+
Member pqxx::stream_from::stream_from (transaction_base &tx, std::string_view table, Columns const &columns)
\n+
Use factories table or raw_table instead.
\n+
Member pqxx::stream_from::stream_from (transaction_base &tx, std::string_view table)
\n+
Use factories table or raw_table instead.
\n
Member pqxx::stream_from::stream_from (transaction_base &, from_table_t, std::string_view table, Iter columns_begin, Iter columns_end)
\n-
Use factories table or raw_table instead.
\n+
Use factories table or raw_table instead.
\n
Member pqxx::stream_from::stream_from (transaction_base &, from_table_t, std::string_view table)
\n-
Use factories table or raw_table instead.
\n+
Use factories table or raw_table instead.
\n
Member pqxx::stream_from::stream_from (transaction_base &, from_query_t, std::string_view query)
\n-
Use factory function query instead.
\n+
Use factory function query instead.
\n
Member pqxx::stream_to::stream_to (transaction_base &, std::string_view table_name, Columns const &columns)
\n-
Use table or raw_table as a factory.
\n+
Use table or raw_table as a factory.
\n
Member pqxx::stream_to::stream_to (transaction_base &tx, std::string_view table_name)
\n-
Use table or raw_table as a factory.
\n+
Use table or raw_table as a factory.
\n
Member pqxx::strip_t
\n-
In C++20 we'll replace this with std::remove_cvref.
\n+
In C++20 we'll replace this with std::remove_cvref.
\n
Member pqxx::transaction_base::set_variable (std::string_view var, std::string_view value)
\n
To set a transaction-local variable, execute an SQL SET command. To set a session variable, use the connection's set_session_var function.
\n
\n
\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -26,18 +26,18 @@\n Return pointers to the active errorhandlers.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\be_\bt_\b__\bv_\ba_\br_\bi_\ba_\bb_\bl_\be (std::string_view var, std::string_view\n value) &\n To set a session variable, use _\bs_\be_\bt_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bv_\ba_\br. To set a transaction-\n local variable, execute an SQL SET command.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be\n Old base class for connection. They are now the same class.\n- Member _\bp_\bq_\bx_\bx_\b:_\b:_\be_\bn_\bc_\br_\by_\bp_\bt_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd (char const user[], char const password[])\n- Use _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bn_\bc_\br_\by_\bp_\bt_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd instead.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\be_\bn_\bc_\br_\by_\bp_\bt_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd (zview user, zview password)\n Use _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bn_\bc_\br_\by_\bp_\bt_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd instead.\n+ Member _\bp_\bq_\bx_\bx_\b:_\b:_\be_\bn_\bc_\br_\by_\bp_\bt_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd (char const user[], char const password[])\n+ Use _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bn_\bc_\br_\by_\bp_\bt_\b__\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd instead.\n Class _\bp_\bq_\bx_\bx_\b:_\b:_\be_\br_\br_\bo_\br_\bh_\ba_\bn_\bd_\bl_\be_\br\n Base class for obsolete error-handler callbacks.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bf_\bi_\be_\bl_\bd_\bs_\bt_\br_\be_\ba_\bm\n Read a field using _\bf_\bi_\be_\bl_\bd_\b:_\b:_\ba_\bs<...>() or _\bf_\bi_\be_\bl_\bd_\b:_\b:_\bc_\b__\bs_\bt_\br_\b(_\b).\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bf_\br_\bo_\bm_\b__\bq_\bu_\be_\br_\by\n Use _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm instead of _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm.\n Struct _\bp_\bq_\bx_\bx_\b:_\b:_\bf_\br_\bo_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bt\n@@ -70,22 +70,22 @@\n explaining why they really need this feature, I'm going to remove it.\n Even if they do, the feature may need an update.\n Class _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm\n Use _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, _\bf_\br_\bo_\bm_\b__\bt_\ba_\bb_\bl_\be_\b__\bt,\n std::string_view table, Columns const &columns)\n Use factory function _\bq_\bu_\be_\br_\by instead.\n- Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, std::string_view\n- table)\n+ Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &, std::string_view\n+ table, Iter columns_begin, Iter columns_end)\n Use factories _\bt_\ba_\bb_\bl_\be or _\br_\ba_\bw_\b__\bt_\ba_\bb_\bl_\be instead.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, std::string_view\n table, Columns const &columns)\n Use factories _\bt_\ba_\bb_\bl_\be or _\br_\ba_\bw_\b__\bt_\ba_\bb_\bl_\be instead.\n- Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &, std::string_view\n- table, Iter columns_begin, Iter columns_end)\n+ Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, std::string_view\n+ table)\n Use factories _\bt_\ba_\bb_\bl_\be or _\br_\ba_\bw_\b__\bt_\ba_\bb_\bl_\be instead.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &, _\bf_\br_\bo_\bm_\b__\bt_\ba_\bb_\bl_\be_\b__\bt,\n std::string_view table, Iter columns_begin, Iter columns_end)\n Use factories _\bt_\ba_\bb_\bl_\be or _\br_\ba_\bw_\b__\bt_\ba_\bb_\bl_\be instead.\n Member _\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm (_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &, _\bf_\br_\bo_\bm_\b__\bt_\ba_\bb_\bl_\be_\b__\bt,\n std::string_view table)\n Use factories _\bt_\ba_\bb_\bl_\be or _\br_\ba_\bw_\b__\bt_\ba_\bb_\bl_\be instead.\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/encoding__group_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/encoding__group_8hxx_source.html", "unified_diff": "@@ -130,26 +130,27 @@\n
37 UTF8,
\n
38};
\n
39
\n
40
\n
41// TODO: Get rid of these. Specialise at higher level.
\n
43
\n \n-
53 std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start);
\n+
53 std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start);
\n
54
\n
55
\n
57
\n \n-
71 std::size_t(std::string_view haystack, std::size_t start);
\n+
71 std::size_t(std::string_view haystack, std::size_t start);
\n
72} // namespace pqxx::internal
\n
73
\n
74#endif
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start) glyph_scanner_func
Function type: "find the end of the current glyph.".
Definition encoding_group.hxx:53
\n
std::size_t(std::string_view haystack, std::size_t start) char_finder_func
Function type: "find first occurrence of specific any of ASCII characters.".
Definition encoding_group.hxx:71
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n \n \n \n
\n
    \n
  • include
  • pqxx
  • internal
  • encoding_group.hxx
  • \n
  • Generated by \"doxygen\"/ 1.9.8
  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -37,20 +37,20 @@\n 37 UTF8,\n 38};\n 39\n 40\n 41// TODO: Get rid of these. Specialise at higher level.\n 43\n _\b5_\b2using _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc =\n-53 std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start);\n+53 std::size_t(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt);\n 54\n 55\n 57\n _\b7_\b0using _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc =\n-71 std::size_t(std::string_view haystack, std::size_t start);\n+71 std::size_t(std::string_view _\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk, std::size_t _\bs_\bt_\ba_\br_\bt);\n 72} // namespace pqxx::internal\n 73\n 74#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc\n@@ -58,12 +58,17 @@\n glyph_scanner_func\n Function type: \"find the end of the current glyph.\".\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encoding_group.hxx:53\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc\n std::size_t(std::string_view haystack, std::size_t start) char_finder_func\n Function type: \"find first occurrence of specific any of ASCII characters.\".\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encoding_group.hxx:71\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n * _\bi_\bn_\bc_\bl_\bu_\bd_\be\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n * e\ben\bnc\bco\bod\bdi\bin\bng\bg_\b_g\bgr\bro\bou\bup\bp.\b.h\bhx\bxx\bx\n * Generated by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/encodings_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/encodings_8hxx_source.html", "unified_diff": "@@ -125,129 +125,129 @@\n
    34
    \n
    36
    \n
    40PQXX_LIBEXPORT glyph_scanner_func *get_glyph_scanner(encoding_group);
    \n
    41
    \n
    42
    \n
    43// TODO: Get rid of this one. Use compile-time-specialised version instead.
    \n
    45
    \n-
    51template<char... NEEDLE>
    \n+
    51template<char... NEEDLE>
    \n
    \n
    52inline std::size_t find_char(
    \n-
    53 glyph_scanner_func *scanner, std::string_view haystack,
    \n-
    54 std::size_t here = 0u)
    \n+
    53 glyph_scanner_func *scanner, std::string_view haystack,
    \n+
    54 std::size_t here = 0u)
    \n
    55{
    \n-
    56 auto const sz{std::size(haystack)};
    \n-
    57 auto const data{std::data(haystack)};
    \n-
    58 while (here < sz)
    \n+
    56 auto const sz{std::size(haystack)};
    \n+
    57 auto const data{std::data(haystack)};
    \n+
    58 while (here < sz)
    \n
    59 {
    \n-
    60 auto next{scanner(data, sz, here)};
    \n-
    61 PQXX_ASSUME(next > here);
    \n+
    60 auto next{scanner(data, sz, here)};
    \n+
    61 PQXX_ASSUME(next > here);
    \n
    62 // (For some reason gcc had a problem with a right-fold here. But clang
    \n
    63 // was fine.)
    \n-
    64 if ((... or (data[here] == NEEDLE)))
    \n+
    64 if ((... or (data[here] == NEEDLE)))
    \n
    65 {
    \n
    66 // Also check against a multibyte character starting with a bytes which
    \n
    67 // just happens to match one of the ASCII bytes we're looking for. It'd
    \n
    68 // be cleaner to check that first, but either works. So, let's apply the
    \n
    69 // most selective filter first and skip this check in almost all cases.
    \n-
    70 if (next == here + 1)
    \n-
    71 return here;
    \n+
    70 if (next == here + 1)
    \n+
    71 return here;
    \n
    72 }
    \n
    73
    \n
    74 // Nope, no hit. Move on.
    \n-
    75 here = next;
    \n+
    75 here = next;
    \n
    76 }
    \n-
    77 return sz;
    \n+
    77 return sz;
    \n
    78}
    \n
    \n
    79
    \n
    80
    \n
    81// TODO: Get rid of this one. Use compile-time-specialised loop instead.
    \n
    83
    \n
    86template<typename CALLABLE>
    \n
    \n
    87inline void for_glyphs(
    \n-
    88 encoding_group enc, CALLABLE callback, char const buffer[],
    \n-
    89 std::size_t buffer_len, std::size_t start = 0)
    \n+
    88 encoding_group enc, CALLABLE callback, char const buffer[],
    \n+
    89 std::size_t buffer_len, std::size_t start = 0)
    \n
    90{
    \n-
    91 auto const scan{get_glyph_scanner(enc)};
    \n-
    92 for (std::size_t here = start, next; here < buffer_len; here = next)
    \n+
    91 auto const scan{get_glyph_scanner(enc)};
    \n+
    92 for (std::size_t here = start, next; here < buffer_len; here = next)
    \n
    93 {
    \n-
    94 next = scan(buffer, buffer_len, here);
    \n-
    95 PQXX_ASSUME(next > here);
    \n-
    96 callback(buffer + here, buffer + next);
    \n+
    94 next = scan(buffer, buffer_len, here);
    \n+
    95 PQXX_ASSUME(next > here);
    \n+
    96 callback(buffer + here, buffer + next);
    \n
    97 }
    \n
    98}
    \n
    \n
    99
    \n
    100
    \n
    101namespace
    \n
    102{
    \n
    104constexpr PQXX_PURE unsigned char
    \n-
    105get_byte(char const buffer[], std::size_t offset) noexcept
    \n+
    105get_byte(char const buffer[], std::size_t offset) noexcept
    \n
    106{
    \n-
    107 return static_cast<unsigned char>(buffer[offset]);
    \n+
    107 return static_cast<unsigned char>(buffer[offset]);
    \n
    108}
    \n
    109
    \n
    110
    \n-
    111[[noreturn]] PQXX_COLD void throw_for_encoding_error(
    \n-
    112 char const *encoding_name, char const buffer[], std::size_t start,
    \n+
    111[[noreturn]] PQXX_COLD void throw_for_encoding_error(
    \n+
    112 char const *encoding_name, char const buffer[], std::size_t start,
    \n
    113 std::size_t count)
    \n
    114{
    \n-
    115 std::stringstream s;
    \n-
    116 s << "Invalid byte sequence for encoding " << encoding_name << " at byte "
    \n-
    117 << start << ": " << std::hex << std::setw(2) << std::setfill('0');
    \n-
    118 for (std::size_t i{0}; i < count; ++i)
    \n+
    115 std::stringstream s;
    \n+
    116 s << "Invalid byte sequence for encoding " << encoding_name << " at byte "
    \n+
    117 << start << ": " << std::hex << std::setw(2) << std::setfill('0');
    \n+
    118 for (std::size_t i{0}; i < count; ++i)
    \n
    119 {
    \n-
    120 s << "0x" << static_cast<unsigned int>(get_byte(buffer, start + i));
    \n-
    121 if (i + 1 < count)
    \n-
    122 s << " ";
    \n+
    120 s << "0x" << static_cast<unsigned int>(get_byte(buffer, start + i));
    \n+
    121 if (i + 1 < count)
    \n+
    122 s << " ";
    \n
    123 }
    \n-
    124 throw pqxx::argument_error{s.str()};
    \n+
    124 throw pqxx::argument_error{s.str()};
    \n
    125}
    \n
    126
    \n
    127
    \n
    129constexpr PQXX_PURE bool
    \n-
    130between_inc(unsigned char value, unsigned bottom, unsigned top)
    \n+
    130between_inc(unsigned char value, unsigned bottom, unsigned top)
    \n
    131{
    \n-
    132 return value >= bottom and value <= top;
    \n+
    132 return value >= bottom and value <= top;
    \n
    133}
    \n
    134} // namespace
    \n
    135
    \n
    136
    \n
    138
    \n
    \n
    142template<encoding_group> struct glyph_scanner
    \n
    143{
    \n
    144 // TODO: Convert to use string_view?
    \n
    146 PQXX_PURE static std::size_t
    \n-
    147 call(char const buffer[], std::size_t buffer_len, std::size_t start);
    \n+
    147 call(char const buffer[], std::size_t buffer_len, std::size_t start);
    \n
    148};
    \n
    \n
    149
    \n
    150
    \n
    151namespace
    \n
    152{
    \n
    154
    \n-
    160template<encoding_group ENC, char... NEEDLE>
    \n+
    160template<encoding_group ENC, char... NEEDLE>
    \n
    161PQXX_PURE inline std::size_t
    \n-
    162find_ascii_char(std::string_view haystack, std::size_t here)
    \n+
    162find_ascii_char(std::string_view haystack, std::size_t here)
    \n
    163{
    \n
    164 // We only know how to search for ASCII characters. It's an optimisation
    \n
    165 // assumption in the code below.
    \n-
    166 static_assert((... and ((NEEDLE & 0x80) == 0)));
    \n+
    166 static_assert((... and ((NEEDLE & 0x80) == 0)));
    \n
    167
    \n-
    168 auto const sz{std::size(haystack)};
    \n-
    169 auto const data{std::data(haystack)};
    \n-
    170 while (here < sz)
    \n+
    168 auto const sz{std::size(haystack)};
    \n+
    169 auto const data{std::data(haystack)};
    \n+
    170 while (here < sz)
    \n
    171 {
    \n
    172 // Look up the next character boundary. This can be quite costly, so we
    \n
    173 // desperately want the call inlined.
    \n-
    174 auto next{glyph_scanner<ENC>::call(data, sz, here)};
    \n-
    175 PQXX_ASSUME(next > here);
    \n+
    174 auto next{glyph_scanner<ENC>::call(data, sz, here)};
    \n+
    175 PQXX_ASSUME(next > here);
    \n
    176
    \n
    177 // (For some reason gcc had a problem with a right-fold here. But clang
    \n
    178 // was fine.)
    \n
    179 //
    \n
    180 // In all supported encodings, if a character's first byte is in the ASCII
    \n
    181 // range, that means it's a single-byte character. It follows that when we
    \n
    182 // find a match, we do not need to check that we're in a single-byte
    \n@@ -257,93 +257,93 @@\n
    186 // each character's first byte. That first byte can only match NEEDLE if
    \n
    187 // it's a single-byte character.
    \n
    188 //
    \n
    189 // In an "ASCII-safe" encoding, e.g. UTF-8 or the ISO-8859 ones, we check
    \n
    190 // for a match at each byte in the text, because it's faster than finding
    \n
    191 // character boundaries first. But in these encodings, a multichar byte
    \n
    192 // never contains any bytes in the ASCII range at all.
    \n-
    193 if ((... or (data[here] == NEEDLE)))
    \n-
    194 return here;
    \n+
    193 if ((... or (data[here] == NEEDLE)))
    \n+
    194 return here;
    \n
    195
    \n
    196 // Nope, no hit. Move on.
    \n-
    197 here = next;
    \n+
    197 here = next;
    \n
    198 }
    \n-
    199 return sz;
    \n+
    199 return sz;
    \n
    200}
    \n
    201} // namespace
    \n
    202
    \n
    203
    \n
    205
    \n-
    209template<encoding_group ENC, char... NEEDLE>
    \n+
    209template<encoding_group ENC, char... NEEDLE>
    \n
    210PQXX_PURE std::size_t
    \n
    \n-
    211find_s_ascii_char(std::string_view haystack, std::size_t here)
    \n+
    211find_s_ascii_char(std::string_view haystack, std::size_t here)
    \n
    212{
    \n
    213 // We only know how to search for ASCII characters. It's an optimisation
    \n
    214 // assumption in the code below.
    \n-
    215 static_assert((... and ((NEEDLE >> 7) == 0)));
    \n+
    215 static_assert((... and ((NEEDLE >> 7) == 0)));
    \n
    216
    \n-
    217 auto const sz{std::size(haystack)};
    \n-
    218 auto const data{std::data(haystack)};
    \n+
    217 auto const sz{std::size(haystack)};
    \n+
    218 auto const data{std::data(haystack)};
    \n
    219
    \n
    220 // No supported encoding has multibyte characters that start with an
    \n
    221 // ASCII-range byte.
    \n-
    222 while ((... and (data[here] != NEEDLE)))
    \n+
    222 while ((... and (data[here] != NEEDLE)))
    \n
    223 {
    \n-
    224 auto const next = glyph_scanner<ENC>::call(data, sz, here);
    \n-
    225 PQXX_ASSUME(next > here);
    \n-
    226 here = next;
    \n+
    224 auto const next = glyph_scanner<ENC>::call(data, sz, here);
    \n+
    225 PQXX_ASSUME(next > here);
    \n+
    226 here = next;
    \n
    227 }
    \n-
    228 return here;
    \n+
    228 return here;
    \n
    229}
    \n
    \n
    230
    \n
    231
    \n
    \n
    232template<> struct glyph_scanner<encoding_group::MONOBYTE>
    \n
    233{
    \n
    234 static PQXX_PURE constexpr std::size_t
    \n-
    235 call(char const /* buffer */[], std::size_t buffer_len, std::size_t start)
    \n+
    235 call(char const /* buffer */[], std::size_t buffer_len, std::size_t start)
    \n
    236 {
    \n
    237 // TODO: Don't bother with npos. Let the caller check.
    \n-
    238 if (start >= buffer_len)
    \n+
    238 if (start >= buffer_len)
    \n
    239 PQXX_UNLIKELY return std::string::npos;
    \n
    240 else
    \n-
    241 return start + 1;
    \n+
    241 return start + 1;
    \n
    242 }
    \n
    243};
    \n
    \n
    244
    \n
    245
    \n
    246// https://en.wikipedia.org/wiki/Big5#Organization
    \n
    \n
    247template<> struct glyph_scanner<encoding_group::BIG5>
    \n
    248{
    \n
    249 static PQXX_PURE std::size_t
    \n-
    250 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    250 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    251 {
    \n-
    252 if (start >= buffer_len)
    \n+
    252 if (start >= buffer_len)
    \n
    253 PQXX_UNLIKELY return std::string::npos;
    \n
    254
    \n-
    255 auto const byte1{get_byte(buffer, start)};
    \n-
    256 if (byte1 < 0x80)
    \n-
    257 return start + 1;
    \n+
    255 auto const byte1{get_byte(buffer, start)};
    \n+
    256 if (byte1 < 0x80)
    \n+
    257 return start + 1;
    \n
    258
    \n-
    259 if (not between_inc(byte1, 0x81, 0xfe) or (start + 2 > buffer_len))
    \n+
    259 if (not between_inc(byte1, 0x81, 0xfe) or (start + 2 > buffer_len))
    \n
    260 PQXX_UNLIKELY
    \n-
    261 throw_for_encoding_error("BIG5", buffer, start, 1);
    \n+\n
    262
    \n-
    263 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    263 auto const byte2{get_byte(buffer, start + 1)};
    \n
    264 if (
    \n-
    265 not between_inc(byte2, 0x40, 0x7e) and
    \n-
    266 not between_inc(byte2, 0xa1, 0xfe))
    \n+
    265 not between_inc(byte2, 0x40, 0x7e) and
    \n+
    266 not between_inc(byte2, 0xa1, 0xfe))
    \n
    267 PQXX_UNLIKELY
    \n-
    268 throw_for_encoding_error("BIG5", buffer, start, 2);
    \n+\n
    269
    \n-
    270 return start + 2;
    \n+
    270 return start + 2;
    \n
    271 }
    \n
    272};
    \n
    \n
    273
    \n
    274
    \n
    275/*
    \n
    276The PostgreSQL documentation claims that the EUC_* encodings are 1-3 bytes
    \n@@ -357,255 +357,255 @@\n
    284*/
    \n
    285
    \n
    286// https://en.wikipedia.org/wiki/GB_2312#EUC-CN
    \n
    \n
    287template<> struct glyph_scanner<encoding_group::EUC_CN>
    \n
    288{
    \n
    289 static PQXX_PURE std::size_t
    \n-
    290 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    290 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    291 {
    \n-
    292 if (start >= buffer_len)
    \n+
    292 if (start >= buffer_len)
    \n
    293 return std::string::npos;
    \n
    294
    \n-
    295 auto const byte1{get_byte(buffer, start)};
    \n-
    296 if (byte1 < 0x80)
    \n-
    297 return start + 1;
    \n+
    295 auto const byte1{get_byte(buffer, start)};
    \n+
    296 if (byte1 < 0x80)
    \n+
    297 return start + 1;
    \n
    298
    \n-
    299 if (not between_inc(byte1, 0xa1, 0xf7) or start + 2 > buffer_len)
    \n+
    299 if (not between_inc(byte1, 0xa1, 0xf7) or start + 2 > buffer_len)
    \n
    300 PQXX_UNLIKELY
    \n-
    301 throw_for_encoding_error("EUC_CN", buffer, start, 1);
    \n+\n
    302
    \n-
    303 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    304 if (not between_inc(byte2, 0xa1, 0xfe))
    \n+
    303 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    304 if (not between_inc(byte2, 0xa1, 0xfe))
    \n
    305 PQXX_UNLIKELY
    \n-
    306 throw_for_encoding_error("EUC_CN", buffer, start, 2);
    \n+\n
    307
    \n-
    308 return start + 2;
    \n+
    308 return start + 2;
    \n
    309 }
    \n
    310};
    \n
    \n
    311
    \n
    312
    \n
    313// EUC-JP and EUC-JIS-2004 represent slightly different code points but iterate
    \n
    314// the same:
    \n
    315//
    \n
    316// https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-JP
    \n
    317// http://x0213.org/codetable/index.en.html
    \n
    \n
    318template<> struct glyph_scanner<encoding_group::EUC_JP>
    \n
    319{
    \n
    320 static PQXX_PURE std::size_t
    \n-
    321 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    321 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    322 {
    \n-
    323 if (start >= buffer_len)
    \n+
    323 if (start >= buffer_len)
    \n
    324 return std::string::npos;
    \n
    325
    \n-
    326 auto const byte1{get_byte(buffer, start)};
    \n-
    327 if (byte1 < 0x80)
    \n-
    328 return start + 1;
    \n+
    326 auto const byte1{get_byte(buffer, start)};
    \n+
    327 if (byte1 < 0x80)
    \n+
    328 return start + 1;
    \n
    329
    \n-
    330 if (start + 2 > buffer_len)
    \n+
    330 if (start + 2 > buffer_len)
    \n
    331 PQXX_UNLIKELY
    \n-
    332 throw_for_encoding_error("EUC_JP", buffer, start, 1);
    \n+\n
    333
    \n-
    334 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    335 if (byte1 == 0x8e)
    \n+
    334 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    335 if (byte1 == 0x8e)
    \n
    336 {
    \n-
    337 if (not between_inc(byte2, 0xa1, 0xfe))
    \n+
    337 if (not between_inc(byte2, 0xa1, 0xfe))
    \n
    338 PQXX_UNLIKELY
    \n-
    339 throw_for_encoding_error("EUC_JP", buffer, start, 2);
    \n+\n
    340
    \n-
    341 return start + 2;
    \n+
    341 return start + 2;
    \n
    342 }
    \n
    343
    \n-
    344 if (between_inc(byte1, 0xa1, 0xfe))
    \n+
    344 if (between_inc(byte1, 0xa1, 0xfe))
    \n
    345 {
    \n-
    346 if (not between_inc(byte2, 0xa1, 0xfe))
    \n+
    346 if (not between_inc(byte2, 0xa1, 0xfe))
    \n
    347 PQXX_UNLIKELY
    \n-
    348 throw_for_encoding_error("EUC_JP", buffer, start, 2);
    \n+\n
    349
    \n-
    350 return start + 2;
    \n+
    350 return start + 2;
    \n
    351 }
    \n
    352
    \n-
    353 if (byte1 == 0x8f and start + 3 <= buffer_len)
    \n+
    353 if (byte1 == 0x8f and start + 3 <= buffer_len)
    \n
    354 {
    \n-
    355 auto const byte3{get_byte(buffer, start + 2)};
    \n+
    355 auto const byte3{get_byte(buffer, start + 2)};
    \n
    356 if (
    \n-
    357 not between_inc(byte2, 0xa1, 0xfe) or
    \n-
    358 not between_inc(byte3, 0xa1, 0xfe))
    \n+
    357 not between_inc(byte2, 0xa1, 0xfe) or
    \n+
    358 not between_inc(byte3, 0xa1, 0xfe))
    \n
    359 PQXX_UNLIKELY
    \n-
    360 throw_for_encoding_error("EUC_JP", buffer, start, 3);
    \n+\n
    361
    \n-
    362 return start + 3;
    \n+
    362 return start + 3;
    \n
    363 }
    \n
    364
    \n-
    365 throw_for_encoding_error("EUC_JP", buffer, start, 1);
    \n+\n
    366 }
    \n
    367};
    \n
    \n
    368
    \n
    369
    \n
    370// https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-KR
    \n
    \n
    371template<> struct glyph_scanner<encoding_group::EUC_KR>
    \n
    372{
    \n
    373 static PQXX_PURE std::size_t
    \n-
    374 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    374 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    375 {
    \n-
    376 if (start >= buffer_len)
    \n+
    376 if (start >= buffer_len)
    \n
    377 PQXX_UNLIKELY return std::string::npos;
    \n
    378
    \n-
    379 auto const byte1{get_byte(buffer, start)};
    \n-
    380 if (byte1 < 0x80)
    \n-
    381 return start + 1;
    \n+
    379 auto const byte1{get_byte(buffer, start)};
    \n+
    380 if (byte1 < 0x80)
    \n+
    381 return start + 1;
    \n
    382
    \n-
    383 if (not between_inc(byte1, 0xa1, 0xfe) or start + 2 > buffer_len)
    \n+
    383 if (not between_inc(byte1, 0xa1, 0xfe) or start + 2 > buffer_len)
    \n
    384 PQXX_UNLIKELY
    \n-
    385 throw_for_encoding_error("EUC_KR", buffer, start, 1);
    \n+\n
    386
    \n-
    387 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    388 if (not between_inc(byte2, 0xa1, 0xfe))
    \n+
    387 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    388 if (not between_inc(byte2, 0xa1, 0xfe))
    \n
    389 PQXX_UNLIKELY
    \n-
    390 throw_for_encoding_error("EUC_KR", buffer, start, 1);
    \n+\n
    391
    \n-
    392 return start + 2;
    \n+
    392 return start + 2;
    \n
    393 }
    \n
    394};
    \n
    \n
    395
    \n
    396
    \n
    397// https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-TW
    \n
    \n
    398template<> struct glyph_scanner<encoding_group::EUC_TW>
    \n
    399{
    \n
    400 static PQXX_PURE std::size_t
    \n-
    401 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    401 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    402 {
    \n-
    403 if (start >= buffer_len)
    \n+
    403 if (start >= buffer_len)
    \n
    404 PQXX_UNLIKELY
    \n
    405 return std::string::npos;
    \n
    406
    \n-
    407 auto const byte1{get_byte(buffer, start)};
    \n-
    408 if (byte1 < 0x80)
    \n-
    409 return start + 1;
    \n+
    407 auto const byte1{get_byte(buffer, start)};
    \n+
    408 if (byte1 < 0x80)
    \n+
    409 return start + 1;
    \n
    410
    \n-
    411 if (start + 2 > buffer_len)
    \n+
    411 if (start + 2 > buffer_len)
    \n
    412 PQXX_UNLIKELY
    \n-
    413 throw_for_encoding_error("EUC_KR", buffer, start, 1);
    \n+\n
    414
    \n-
    415 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    416 if (between_inc(byte1, 0xa1, 0xfe))
    \n+
    415 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    416 if (between_inc(byte1, 0xa1, 0xfe))
    \n
    417 {
    \n-
    418 if (not between_inc(byte2, 0xa1, 0xfe))
    \n+
    418 if (not between_inc(byte2, 0xa1, 0xfe))
    \n
    419 PQXX_UNLIKELY
    \n-
    420 throw_for_encoding_error("EUC_KR", buffer, start, 2);
    \n+\n
    421
    \n-
    422 return start + 2;
    \n+
    422 return start + 2;
    \n
    423 }
    \n
    424
    \n-
    425 if (byte1 != 0x8e or start + 4 > buffer_len)
    \n+
    425 if (byte1 != 0x8e or start + 4 > buffer_len)
    \n
    426 PQXX_UNLIKELY
    \n-
    427 throw_for_encoding_error("EUC_KR", buffer, start, 1);
    \n+\n
    428
    \n
    429 if (
    \n-
    430 between_inc(byte2, 0xa1, 0xb0) and
    \n-
    431 between_inc(get_byte(buffer, start + 2), 0xa1, 0xfe) and
    \n-
    432 between_inc(get_byte(buffer, start + 3), 0xa1, 0xfe))
    \n-
    433 return start + 4;
    \n+
    430 between_inc(byte2, 0xa1, 0xb0) and
    \n+
    431 between_inc(get_byte(buffer, start + 2), 0xa1, 0xfe) and
    \n+
    432 between_inc(get_byte(buffer, start + 3), 0xa1, 0xfe))
    \n+
    433 return start + 4;
    \n
    434
    \n
    435 PQXX_UNLIKELY
    \n-
    436 throw_for_encoding_error("EUC_KR", buffer, start, 4);
    \n+\n
    437 }
    \n
    438};
    \n
    \n
    439
    \n
    440
    \n
    441// https://en.wikipedia.org/wiki/GB_18030#Mapping
    \n
    \n
    442template<> struct glyph_scanner<encoding_group::GB18030>
    \n
    443{
    \n
    444 static PQXX_PURE std::size_t
    \n-
    445 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    445 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    446 {
    \n-
    447 if (start >= buffer_len)
    \n+
    447 if (start >= buffer_len)
    \n
    448 PQXX_UNLIKELY return std::string::npos;
    \n
    449
    \n-
    450 auto const byte1{get_byte(buffer, start)};
    \n-
    451 if (byte1 < 0x80)
    \n-
    452 return start + 1;
    \n-
    453 if (byte1 == 0x80)
    \n-
    454 throw_for_encoding_error("GB18030", buffer, start, buffer_len - start);
    \n+
    450 auto const byte1{get_byte(buffer, start)};
    \n+
    451 if (byte1 < 0x80)
    \n+
    452 return start + 1;
    \n+
    453 if (byte1 == 0x80)
    \n+\n
    455
    \n-
    456 if (start + 2 > buffer_len)
    \n+
    456 if (start + 2 > buffer_len)
    \n
    457 PQXX_UNLIKELY
    \n-
    458 throw_for_encoding_error("GB18030", buffer, start, buffer_len - start);
    \n+\n
    459
    \n-
    460 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    461 if (between_inc(byte2, 0x40, 0xfe))
    \n+
    460 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    461 if (between_inc(byte2, 0x40, 0xfe))
    \n
    462 {
    \n-
    463 if (byte2 == 0x7f)
    \n+
    463 if (byte2 == 0x7f)
    \n
    464 PQXX_UNLIKELY
    \n-
    465 throw_for_encoding_error("GB18030", buffer, start, 2);
    \n+
    465 throw_for_encoding_error("GB18030", buffer, start, 2);
    \n
    466
    \n-
    467 return start + 2;
    \n+
    467 return start + 2;
    \n
    468 }
    \n
    469
    \n-
    470 if (start + 4 > buffer_len)
    \n+
    470 if (start + 4 > buffer_len)
    \n
    471 PQXX_UNLIKELY
    \n-
    472 throw_for_encoding_error("GB18030", buffer, start, buffer_len - start);
    \n+\n
    473
    \n
    474 if (
    \n-
    475 between_inc(byte2, 0x30, 0x39) and
    \n-
    476 between_inc(get_byte(buffer, start + 2), 0x81, 0xfe) and
    \n-
    477 between_inc(get_byte(buffer, start + 3), 0x30, 0x39))
    \n-
    478 return start + 4;
    \n+
    475 between_inc(byte2, 0x30, 0x39) and
    \n+
    476 between_inc(get_byte(buffer, start + 2), 0x81, 0xfe) and
    \n+
    477 between_inc(get_byte(buffer, start + 3), 0x30, 0x39))
    \n+
    478 return start + 4;
    \n
    479
    \n
    480 PQXX_UNLIKELY
    \n-
    481 throw_for_encoding_error("GB18030", buffer, start, 4);
    \n+
    481 throw_for_encoding_error("GB18030", buffer, start, 4);
    \n
    482 }
    \n
    483};
    \n
    \n
    484
    \n
    485
    \n
    486// https://en.wikipedia.org/wiki/GBK_(character_encoding)#Encoding
    \n
    \n
    487template<> struct glyph_scanner<encoding_group::GBK>
    \n
    488{
    \n
    489 static PQXX_PURE std::size_t
    \n-
    490 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    490 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    491 {
    \n-
    492 if (start >= buffer_len)
    \n+
    492 if (start >= buffer_len)
    \n
    493 PQXX_UNLIKELY return std::string::npos;
    \n
    494
    \n-
    495 auto const byte1{get_byte(buffer, start)};
    \n-
    496 if (byte1 < 0x80)
    \n-
    497 return start + 1;
    \n+
    495 auto const byte1{get_byte(buffer, start)};
    \n+
    496 if (byte1 < 0x80)
    \n+
    497 return start + 1;
    \n
    498
    \n-
    499 if (start + 2 > buffer_len)
    \n+
    499 if (start + 2 > buffer_len)
    \n
    500 PQXX_UNLIKELY
    \n-
    501 throw_for_encoding_error("GBK", buffer, start, 1);
    \n+\n
    502
    \n-
    503 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    503 auto const byte2{get_byte(buffer, start + 1)};
    \n
    504 if (
    \n-
    505 (between_inc(byte1, 0xa1, 0xa9) and between_inc(byte2, 0xa1, 0xfe)) or
    \n-
    506 (between_inc(byte1, 0xb0, 0xf7) and between_inc(byte2, 0xa1, 0xfe)) or
    \n-
    507 (between_inc(byte1, 0x81, 0xa0) and between_inc(byte2, 0x40, 0xfe) and
    \n-
    508 byte2 != 0x7f) or
    \n-
    509 (between_inc(byte1, 0xaa, 0xfe) and between_inc(byte2, 0x40, 0xa0) and
    \n-
    510 byte2 != 0x7f) or
    \n-
    511 (between_inc(byte1, 0xa8, 0xa9) and between_inc(byte2, 0x40, 0xa0) and
    \n-
    512 byte2 != 0x7f) or
    \n-
    513 (between_inc(byte1, 0xaa, 0xaf) and between_inc(byte2, 0xa1, 0xfe)) or
    \n-
    514 (between_inc(byte1, 0xf8, 0xfe) and between_inc(byte2, 0xa1, 0xfe)) or
    \n-
    515 (between_inc(byte1, 0xa1, 0xa7) and between_inc(byte2, 0x40, 0xa0) and
    \n-
    516 byte2 != 0x7f))
    \n-
    517 return start + 2;
    \n+
    505 (between_inc(byte1, 0xa1, 0xa9) and between_inc(byte2, 0xa1, 0xfe)) or
    \n+
    506 (between_inc(byte1, 0xb0, 0xf7) and between_inc(byte2, 0xa1, 0xfe)) or
    \n+
    507 (between_inc(byte1, 0x81, 0xa0) and between_inc(byte2, 0x40, 0xfe) and
    \n+
    508 byte2 != 0x7f) or
    \n+
    509 (between_inc(byte1, 0xaa, 0xfe) and between_inc(byte2, 0x40, 0xa0) and
    \n+
    510 byte2 != 0x7f) or
    \n+
    511 (between_inc(byte1, 0xa8, 0xa9) and between_inc(byte2, 0x40, 0xa0) and
    \n+
    512 byte2 != 0x7f) or
    \n+
    513 (between_inc(byte1, 0xaa, 0xaf) and between_inc(byte2, 0xa1, 0xfe)) or
    \n+
    514 (between_inc(byte1, 0xf8, 0xfe) and between_inc(byte2, 0xa1, 0xfe)) or
    \n+
    515 (between_inc(byte1, 0xa1, 0xa7) and between_inc(byte2, 0x40, 0xa0) and
    \n+
    516 byte2 != 0x7f))
    \n+
    517 return start + 2;
    \n
    518
    \n
    519 PQXX_UNLIKELY
    \n-
    520 throw_for_encoding_error("GBK", buffer, start, 2);
    \n+\n
    521 }
    \n
    522};
    \n
    \n
    523
    \n
    524
    \n
    525/*
    \n
    526The PostgreSQL documentation claims that the JOHAB encoding is 1-3 bytes, but
    \n@@ -616,37 +616,37 @@\n
    531
    \n
    532 https://bit.ly/2BEOu5V
    \n
    533*/
    \n
    \n
    534template<> struct glyph_scanner<encoding_group::JOHAB>
    \n
    535{
    \n
    536 static PQXX_PURE std::size_t
    \n-
    537 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    537 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    538 {
    \n-
    539 if (start >= buffer_len)
    \n+
    539 if (start >= buffer_len)
    \n
    540 PQXX_UNLIKELY return std::string::npos;
    \n
    541
    \n-
    542 auto const byte1{get_byte(buffer, start)};
    \n-
    543 if (byte1 < 0x80)
    \n-
    544 return start + 1;
    \n+
    542 auto const byte1{get_byte(buffer, start)};
    \n+
    543 if (byte1 < 0x80)
    \n+
    544 return start + 1;
    \n
    545
    \n-
    546 if (start + 2 > buffer_len)
    \n+
    546 if (start + 2 > buffer_len)
    \n
    547 PQXX_UNLIKELY
    \n-
    548 throw_for_encoding_error("JOHAB", buffer, start, 1);
    \n+\n
    549
    \n-
    550 auto const byte2{get_byte(buffer, start)};
    \n+
    550 auto const byte2{get_byte(buffer, start)};
    \n
    551 if (
    \n-
    552 (between_inc(byte1, 0x84, 0xd3) and
    \n-
    553 (between_inc(byte2, 0x41, 0x7e) or between_inc(byte2, 0x81, 0xfe))) or
    \n-
    554 ((between_inc(byte1, 0xd8, 0xde) or between_inc(byte1, 0xe0, 0xf9)) and
    \n-
    555 (between_inc(byte2, 0x31, 0x7e) or between_inc(byte2, 0x91, 0xfe))))
    \n-
    556 return start + 2;
    \n+
    552 (between_inc(byte1, 0x84, 0xd3) and
    \n+
    553 (between_inc(byte2, 0x41, 0x7e) or between_inc(byte2, 0x81, 0xfe))) or
    \n+
    554 ((between_inc(byte1, 0xd8, 0xde) or between_inc(byte1, 0xe0, 0xf9)) and
    \n+
    555 (between_inc(byte2, 0x31, 0x7e) or between_inc(byte2, 0x91, 0xfe))))
    \n+
    556 return start + 2;
    \n
    557
    \n
    558 PQXX_UNLIKELY
    \n-
    559 throw_for_encoding_error("JOHAB", buffer, start, 2);
    \n+\n
    560 }
    \n
    561};
    \n
    \n
    562
    \n
    563
    \n
    564/*
    \n
    565PostgreSQL's MULE_INTERNAL is the emacs rather than Xemacs implementation;
    \n@@ -655,55 +655,55 @@\n
    568unable to get it to successfully iterate a MULE-encoded test CSV generated
    \n
    569using PostgreSQL 9.2.23. Use this at your own risk.
    \n
    570*/
    \n
    \n
    571template<> struct glyph_scanner<encoding_group::MULE_INTERNAL>
    \n
    572{
    \n
    573 static PQXX_PURE std::size_t
    \n-
    574 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    574 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    575 {
    \n-
    576 if (start >= buffer_len)
    \n+
    576 if (start >= buffer_len)
    \n
    577 PQXX_UNLIKELY return std::string::npos;
    \n
    578
    \n-
    579 auto const byte1{get_byte(buffer, start)};
    \n-
    580 if (byte1 < 0x80)
    \n-
    581 return start + 1;
    \n+
    579 auto const byte1{get_byte(buffer, start)};
    \n+
    580 if (byte1 < 0x80)
    \n+
    581 return start + 1;
    \n
    582
    \n-
    583 if (start + 2 > buffer_len)
    \n+
    583 if (start + 2 > buffer_len)
    \n
    584 PQXX_UNLIKELY
    \n-
    585 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 1);
    \n+
    585 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 1);
    \n
    586
    \n-
    587 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    588 if (between_inc(byte1, 0x81, 0x8d) and byte2 >= 0xa0)
    \n-
    589 return start + 2;
    \n+
    587 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    588 if (between_inc(byte1, 0x81, 0x8d) and byte2 >= 0xa0)
    \n+
    589 return start + 2;
    \n
    590
    \n-
    591 if (start + 3 > buffer_len)
    \n+
    591 if (start + 3 > buffer_len)
    \n
    592 PQXX_UNLIKELY
    \n-
    593 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 2);
    \n+
    593 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 2);
    \n
    594
    \n
    595 if (
    \n-
    596 ((byte1 == 0x9a and between_inc(byte2, 0xa0, 0xdf)) or
    \n-
    597 (byte1 == 0x9b and between_inc(byte2, 0xe0, 0xef)) or
    \n-
    598 (between_inc(byte1, 0x90, 0x99) and byte2 >= 0xa0)) and
    \n-
    599 (byte2 >= 0xa0))
    \n-
    600 return start + 3;
    \n+
    596 ((byte1 == 0x9a and between_inc(byte2, 0xa0, 0xdf)) or
    \n+
    597 (byte1 == 0x9b and between_inc(byte2, 0xe0, 0xef)) or
    \n+
    598 (between_inc(byte1, 0x90, 0x99) and byte2 >= 0xa0)) and
    \n+
    599 (byte2 >= 0xa0))
    \n+
    600 return start + 3;
    \n
    601
    \n-
    602 if (start + 4 > buffer_len)
    \n+
    602 if (start + 4 > buffer_len)
    \n
    603 PQXX_UNLIKELY
    \n-
    604 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 3);
    \n+
    604 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 3);
    \n
    605
    \n
    606 if (
    \n-
    607 ((byte1 == 0x9c and between_inc(byte2, 0xf0, 0xf4)) or
    \n-
    608 (byte1 == 0x9d and between_inc(byte2, 0xf5, 0xfe))) and
    \n-
    609 get_byte(buffer, start + 2) >= 0xa0 and
    \n-
    610 get_byte(buffer, start + 4) >= 0xa0)
    \n-
    611 return start + 4;
    \n+
    607 ((byte1 == 0x9c and between_inc(byte2, 0xf0, 0xf4)) or
    \n+
    608 (byte1 == 0x9d and between_inc(byte2, 0xf5, 0xfe))) and
    \n+
    609 get_byte(buffer, start + 2) >= 0xa0 and
    \n+
    610 get_byte(buffer, start + 4) >= 0xa0)
    \n+
    611 return start + 4;
    \n
    612
    \n
    613 PQXX_UNLIKELY
    \n-
    614 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 4);
    \n+
    614 throw_for_encoding_error("MULE_INTERNAL", buffer, start, 4);
    \n
    615 }
    \n
    616};
    \n
    \n
    617
    \n
    618
    \n
    619// As far as I can tell, for the purposes of iterating the only difference
    \n
    620// between SJIS and SJIS-2004 is increased range in the first byte of two-byte
    \n@@ -714,244 +714,244 @@\n
    625//
    \n
    626// https://en.wikipedia.org/wiki/Shift_JIS#Shift_JIS_byte_map
    \n
    627// http://x0213.org/codetable/index.en.html
    \n
    \n
    628template<> struct glyph_scanner<encoding_group::SJIS>
    \n
    629{
    \n
    630 static PQXX_PURE std::size_t
    \n-
    631 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    631 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    632 {
    \n-
    633 if (start >= buffer_len)
    \n+
    633 if (start >= buffer_len)
    \n
    634 return std::string::npos;
    \n
    635
    \n-
    636 auto const byte1{get_byte(buffer, start)};
    \n-
    637 if (byte1 < 0x80 or between_inc(byte1, 0xa1, 0xdf))
    \n-
    638 return start + 1;
    \n+
    636 auto const byte1{get_byte(buffer, start)};
    \n+
    637 if (byte1 < 0x80 or between_inc(byte1, 0xa1, 0xdf))
    \n+
    638 return start + 1;
    \n
    639
    \n
    640 if (
    \n-
    641 not between_inc(byte1, 0x81, 0x9f) and
    \n-
    642 not between_inc(byte1, 0xe0, 0xfc))
    \n+
    641 not between_inc(byte1, 0x81, 0x9f) and
    \n+
    642 not between_inc(byte1, 0xe0, 0xfc))
    \n
    643 PQXX_UNLIKELY
    \n-
    644 throw_for_encoding_error("SJIS", buffer, start, 1);
    \n+\n
    645
    \n-
    646 if (start + 2 > buffer_len)
    \n+
    646 if (start + 2 > buffer_len)
    \n
    647 PQXX_UNLIKELY
    \n-
    648 throw_for_encoding_error("SJIS", buffer, start, buffer_len - start);
    \n+\n
    649
    \n-
    650 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    651 if (byte2 == 0x7f)
    \n+
    650 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    651 if (byte2 == 0x7f)
    \n
    652 PQXX_UNLIKELY
    \n-
    653 throw_for_encoding_error("SJIS", buffer, start, 2);
    \n+\n
    654
    \n-
    655 if (between_inc(byte2, 0x40, 0x9e) or between_inc(byte2, 0x9f, 0xfc))
    \n-
    656 return start + 2;
    \n+
    655 if (between_inc(byte2, 0x40, 0x9e) or between_inc(byte2, 0x9f, 0xfc))
    \n+
    656 return start + 2;
    \n
    657
    \n
    658 PQXX_UNLIKELY
    \n-
    659 throw_for_encoding_error("SJIS", buffer, start, 2);
    \n+\n
    660 }
    \n
    661};
    \n
    \n
    662
    \n
    663
    \n
    664// https://en.wikipedia.org/wiki/Unified_Hangul_Code
    \n
    \n
    665template<> struct glyph_scanner<encoding_group::UHC>
    \n
    666{
    \n
    667 static PQXX_PURE std::size_t
    \n-
    668 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    668 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    669 {
    \n-
    670 if (start >= buffer_len)
    \n+
    670 if (start >= buffer_len)
    \n
    671 PQXX_UNLIKELY return std::string::npos;
    \n
    672
    \n-
    673 auto const byte1{get_byte(buffer, start)};
    \n-
    674 if (byte1 < 0x80)
    \n-
    675 return start + 1;
    \n+
    673 auto const byte1{get_byte(buffer, start)};
    \n+
    674 if (byte1 < 0x80)
    \n+
    675 return start + 1;
    \n
    676
    \n-
    677 if (start + 2 > buffer_len)
    \n+
    677 if (start + 2 > buffer_len)
    \n
    678 PQXX_UNLIKELY
    \n-
    679 throw_for_encoding_error("UHC", buffer, start, buffer_len - start);
    \n+\n
    680
    \n-
    681 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    682 if (between_inc(byte1, 0x80, 0xc6))
    \n+
    681 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    682 if (between_inc(byte1, 0x80, 0xc6))
    \n
    683 {
    \n
    684 if (
    \n-
    685 between_inc(byte2, 0x41, 0x5a) or between_inc(byte2, 0x61, 0x7a) or
    \n-
    686 between_inc(byte2, 0x80, 0xfe))
    \n-
    687 return start + 2;
    \n+
    685 between_inc(byte2, 0x41, 0x5a) or between_inc(byte2, 0x61, 0x7a) or
    \n+
    686 between_inc(byte2, 0x80, 0xfe))
    \n+
    687 return start + 2;
    \n
    688
    \n
    689 PQXX_UNLIKELY
    \n-
    690 throw_for_encoding_error("UHC", buffer, start, 2);
    \n+\n
    691 }
    \n
    692
    \n-
    693 if (between_inc(byte1, 0xa1, 0xfe))
    \n+
    693 if (between_inc(byte1, 0xa1, 0xfe))
    \n
    694 {
    \n-
    695 if (not between_inc(byte2, 0xa1, 0xfe))
    \n+
    695 if (not between_inc(byte2, 0xa1, 0xfe))
    \n
    696 PQXX_UNLIKELY
    \n-
    697 throw_for_encoding_error("UHC", buffer, start, 2);
    \n+\n
    698
    \n-
    699 return start + 2;
    \n+
    699 return start + 2;
    \n
    700 }
    \n
    701
    \n-
    702 throw_for_encoding_error("UHC", buffer, start, 1);
    \n+\n
    703 }
    \n
    704};
    \n
    \n
    705
    \n
    706
    \n
    707// https://en.wikipedia.org/wiki/UTF-8#Description
    \n
    \n
    708template<> struct glyph_scanner<encoding_group::UTF8>
    \n
    709{
    \n
    710 static PQXX_PURE std::size_t
    \n-
    711 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n+
    711 call(char const buffer[], std::size_t buffer_len, std::size_t start)
    \n
    712 {
    \n-
    713 if (start >= buffer_len)
    \n+
    713 if (start >= buffer_len)
    \n
    714 PQXX_UNLIKELY return std::string::npos;
    \n
    715
    \n-
    716 auto const byte1{get_byte(buffer, start)};
    \n-
    717 if (byte1 < 0x80)
    \n-
    718 return start + 1;
    \n+
    716 auto const byte1{get_byte(buffer, start)};
    \n+
    717 if (byte1 < 0x80)
    \n+
    718 return start + 1;
    \n
    719
    \n-
    720 if (start + 2 > buffer_len)
    \n+
    720 if (start + 2 > buffer_len)
    \n
    721 PQXX_UNLIKELY
    \n-
    722 throw_for_encoding_error("UTF8", buffer, start, buffer_len - start);
    \n+\n
    723
    \n-
    724 auto const byte2{get_byte(buffer, start + 1)};
    \n-
    725 if (between_inc(byte1, 0xc0, 0xdf))
    \n+
    724 auto const byte2{get_byte(buffer, start + 1)};
    \n+
    725 if (between_inc(byte1, 0xc0, 0xdf))
    \n
    726 {
    \n-
    727 if (not between_inc(byte2, 0x80, 0xbf))
    \n+
    727 if (not between_inc(byte2, 0x80, 0xbf))
    \n
    728 PQXX_UNLIKELY
    \n-
    729 throw_for_encoding_error("UTF8", buffer, start, 2);
    \n+\n
    730
    \n-
    731 return start + 2;
    \n+
    731 return start + 2;
    \n
    732 }
    \n
    733
    \n-
    734 if (start + 3 > buffer_len)
    \n+
    734 if (start + 3 > buffer_len)
    \n
    735 PQXX_UNLIKELY
    \n-
    736 throw_for_encoding_error("UTF8", buffer, start, buffer_len - start);
    \n+\n
    737
    \n-
    738 auto const byte3{get_byte(buffer, start + 2)};
    \n-
    739 if (between_inc(byte1, 0xe0, 0xef))
    \n+
    738 auto const byte3{get_byte(buffer, start + 2)};
    \n+
    739 if (between_inc(byte1, 0xe0, 0xef))
    \n
    740 {
    \n-
    741 if (between_inc(byte2, 0x80, 0xbf) and between_inc(byte3, 0x80, 0xbf))
    \n-
    742 return start + 3;
    \n+
    741 if (between_inc(byte2, 0x80, 0xbf) and between_inc(byte3, 0x80, 0xbf))
    \n+
    742 return start + 3;
    \n
    743
    \n
    744 PQXX_UNLIKELY
    \n-
    745 throw_for_encoding_error("UTF8", buffer, start, 3);
    \n+\n
    746 }
    \n
    747
    \n-
    748 if (start + 4 > buffer_len)
    \n+
    748 if (start + 4 > buffer_len)
    \n
    749 PQXX_UNLIKELY
    \n-
    750 throw_for_encoding_error("UTF8", buffer, start, buffer_len - start);
    \n+\n
    751
    \n-
    752 if (between_inc(byte1, 0xf0, 0xf7))
    \n+
    752 if (between_inc(byte1, 0xf0, 0xf7))
    \n
    753 {
    \n
    754 if (
    \n-
    755 between_inc(byte2, 0x80, 0xbf) and between_inc(byte3, 0x80, 0xbf) and
    \n-
    756 between_inc(get_byte(buffer, start + 3), 0x80, 0xbf))
    \n-
    757 return start + 4;
    \n+
    755 between_inc(byte2, 0x80, 0xbf) and between_inc(byte3, 0x80, 0xbf) and
    \n+
    756 between_inc(get_byte(buffer, start + 3), 0x80, 0xbf))
    \n+
    757 return start + 4;
    \n
    758
    \n
    759 PQXX_UNLIKELY
    \n-
    760 throw_for_encoding_error("UTF8", buffer, start, 4);
    \n+\n
    761 }
    \n
    762
    \n
    763 PQXX_UNLIKELY
    \n-
    764 throw_for_encoding_error("UTF8", buffer, start, 1);
    \n+\n
    765 }
    \n
    766};
    \n
    \n
    767
    \n
    768
    \n
    770
    \n
    784constexpr inline encoding_group
    \n
    \n-
    785map_ascii_search_group(encoding_group enc) noexcept
    \n+
    785map_ascii_search_group(encoding_group enc) noexcept
    \n
    786{
    \n-
    787 switch (enc)
    \n+
    787 switch (enc)
    \n
    788 {
    \n
    789 case encoding_group::MONOBYTE:
    \n
    790 case encoding_group::EUC_CN:
    \n
    791 case encoding_group::EUC_JP:
    \n
    792 case encoding_group::EUC_KR:
    \n
    793 case encoding_group::EUC_TW:
    \n
    794 case encoding_group::MULE_INTERNAL:
    \n
    795 case encoding_group::UTF8:
    \n
    796 // All these encodings are "ASCII-safe," meaning that if we're looking
    \n
    797 // for a particular ASCII character, we can safely just go through the
    \n
    798 // string byte for byte. Multibyte characters have the high bit set.
    \n
    799 return encoding_group::MONOBYTE;
    \n
    800
    \n-
    801 default: PQXX_UNLIKELY return enc;
    \n+
    801 default: PQXX_UNLIKELY return enc;
    \n
    802 }
    \n
    803}
    \n
    \n
    804
    \n
    805
    \n
    807
    \n-
    813template<char... NEEDLE>
    \n+
    813template<char... NEEDLE>
    \n
    814PQXX_PURE constexpr inline char_finder_func *
    \n
    \n-
    815get_char_finder(encoding_group enc)
    \n+
    815get_char_finder(encoding_group enc)
    \n
    816{
    \n-
    817 auto const as_if{map_ascii_search_group(enc)};
    \n-
    818 switch (as_if)
    \n+
    817 auto const as_if{map_ascii_search_group(enc)};
    \n+
    818 switch (as_if)
    \n
    819 {
    \n
    820 case encoding_group::MONOBYTE:
    \n-
    821 return pqxx::internal::find_ascii_char<
    \n-
    822 encoding_group::MONOBYTE, NEEDLE...>;
    \n+\n+
    822 encoding_group::MONOBYTE, NEEDLE...>;
    \n
    823 case encoding_group::BIG5:
    \n-
    824 return pqxx::internal::find_ascii_char<encoding_group::BIG5, NEEDLE...>;
    \n+
    824 return pqxx::internal::find_ascii_char<encoding_group::BIG5, NEEDLE...>;
    \n
    825 case encoding_group::GB18030:
    \n-
    826 return pqxx::internal::find_ascii_char<encoding_group::GB18030, NEEDLE...>;
    \n+
    826 return pqxx::internal::find_ascii_char<encoding_group::GB18030, NEEDLE...>;
    \n
    827 case encoding_group::GBK:
    \n-
    828 return pqxx::internal::find_ascii_char<encoding_group::GBK, NEEDLE...>;
    \n+
    828 return pqxx::internal::find_ascii_char<encoding_group::GBK, NEEDLE...>;
    \n
    829 case encoding_group::JOHAB:
    \n-
    830 return pqxx::internal::find_ascii_char<encoding_group::JOHAB, NEEDLE...>;
    \n+
    830 return pqxx::internal::find_ascii_char<encoding_group::JOHAB, NEEDLE...>;
    \n
    831 case encoding_group::SJIS:
    \n-
    832 return pqxx::internal::find_ascii_char<encoding_group::SJIS, NEEDLE...>;
    \n+
    832 return pqxx::internal::find_ascii_char<encoding_group::SJIS, NEEDLE...>;
    \n
    833 case encoding_group::UHC:
    \n-
    834 return pqxx::internal::find_ascii_char<encoding_group::UHC, NEEDLE...>;
    \n+
    834 return pqxx::internal::find_ascii_char<encoding_group::UHC, NEEDLE...>;
    \n
    835
    \n
    836 default:
    \n \n-
    838 "Unexpected encoding group: ", as_if, " (mapped from ", enc, ").")};
    \n+
    838 "Unexpected encoding group: ", as_if, " (mapped from ", enc, ").")};
    \n
    839 }
    \n
    840}
    \n
    \n
    841
    \n
    842
    \n
    844
    \n-
    847template<char... NEEDLE>
    \n+
    847template<char... NEEDLE>
    \n
    848PQXX_PURE constexpr inline char_finder_func *
    \n
    \n-
    849get_s_char_finder(encoding_group enc)
    \n+
    849get_s_char_finder(encoding_group enc)
    \n
    850{
    \n-
    851 auto const as_if{map_ascii_search_group(enc)};
    \n-
    852 switch (as_if)
    \n+
    851 auto const as_if{map_ascii_search_group(enc)};
    \n+
    852 switch (as_if)
    \n
    853 {
    \n
    854 case encoding_group::MONOBYTE:
    \n \n-
    856 encoding_group::MONOBYTE, NEEDLE...>;
    \n+
    856 encoding_group::MONOBYTE, NEEDLE...>;
    \n
    857 case encoding_group::BIG5:
    \n-
    858 return pqxx::internal::find_s_ascii_char<encoding_group::BIG5, NEEDLE...>;
    \n+
    858 return pqxx::internal::find_s_ascii_char<encoding_group::BIG5, NEEDLE...>;
    \n
    859 case encoding_group::GB18030:
    \n \n-
    861 encoding_group::GB18030, NEEDLE...>;
    \n+
    861 encoding_group::GB18030, NEEDLE...>;
    \n
    862 case encoding_group::GBK:
    \n-
    863 return pqxx::internal::find_s_ascii_char<encoding_group::GBK, NEEDLE...>;
    \n+
    863 return pqxx::internal::find_s_ascii_char<encoding_group::GBK, NEEDLE...>;
    \n
    864 case encoding_group::JOHAB:
    \n-
    865 return pqxx::internal::find_s_ascii_char<encoding_group::JOHAB, NEEDLE...>;
    \n+
    865 return pqxx::internal::find_s_ascii_char<encoding_group::JOHAB, NEEDLE...>;
    \n
    866 case encoding_group::SJIS:
    \n-
    867 return pqxx::internal::find_s_ascii_char<encoding_group::SJIS, NEEDLE...>;
    \n+
    867 return pqxx::internal::find_s_ascii_char<encoding_group::SJIS, NEEDLE...>;
    \n
    868 case encoding_group::UHC:
    \n-
    869 return pqxx::internal::find_s_ascii_char<encoding_group::UHC, NEEDLE...>;
    \n+
    869 return pqxx::internal::find_s_ascii_char<encoding_group::UHC, NEEDLE...>;
    \n
    870
    \n
    871 default:
    \n \n-
    873 "Unexpected encoding group: ", as_if, " (mapped from ", enc, ").")};
    \n+
    873 "Unexpected encoding group: ", as_if, " (mapped from ", enc, ").")};
    \n
    874 }
    \n
    875}
    \n
    \n
    876} // namespace pqxx::internal
    \n
    877#endif
    \n
    Invalid argument passed to libpqxx, similar to std::invalid_argument.
    Definition except.hxx:266
    \n
    Internal error in libpqxx library.
    Definition except.hxx:242
    \n@@ -962,14 +962,15 @@\n
    PQXX_PURE char const * name_encoding(int encoding_id)
    Return PostgreSQL's name for encoding enum value.
    \n
    std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start) glyph_scanner_func
    Function type: "find the end of the current glyph.".
    Definition encoding_group.hxx:53
    \n
    PQXX_PURE constexpr char_finder_func * get_s_char_finder(encoding_group enc)
    Look up a "sentry" character search function for an encoding group.
    Definition encodings.hxx:849
    \n
    pqxx::internal::encoding_group enc_group(std::string_view encoding_name)
    Convert libpq encoding name to its libpqxx encoding group.
    Definition encodings.cxx:35
    \n
    void for_glyphs(encoding_group enc, CALLABLE callback, char const buffer[], std::size_t buffer_len, std::size_t start=0)
    Iterate over the glyphs in a buffer.
    Definition encodings.hxx:87
    \n
    PQXX_LIBEXPORT glyph_scanner_func * get_glyph_scanner(encoding_group)
    Look up the glyph scanner function for a given encoding group.
    \n
    std::size_t(std::string_view haystack, std::size_t start) char_finder_func
    Function type: "find first occurrence of specific any of ASCII characters.".
    Definition encoding_group.hxx:71
    \n+
    composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
    Look up implementation of parse_composite_field for ENC.
    Definition array-composite.hxx:274
    \n
    std::size_t find_char(glyph_scanner_func *scanner, std::string_view haystack, std::size_t here=0u)
    Find any of the ASCII characters NEEDLE in haystack.
    Definition encodings.hxx:52
    \n
    constexpr encoding_group map_ascii_search_group(encoding_group enc) noexcept
    Just for searching an ASCII character, what encoding can we use here?
    Definition encodings.hxx:785
    \n
    The home of all libpqxx classes, functions, templates, etc.
    Definition array.cxx:27
    \n
    Wrapper struct template for "find next glyph" functions.
    Definition encodings.hxx:143
    \n
    static PQXX_PURE std::size_t call(char const buffer[], std::size_t buffer_len, std::size_t start)
    Find the next glyph in buffer after position start.
    \n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -31,123 +31,123 @@\n 34\n 36\n _\b4_\b0PQXX_LIBEXPORT _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc *_\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br(encoding_group);\n 41\n 42\n 43// TODO: Get rid of this one. Use compile-time-specialised version instead.\n 45\n-51template\n+51template\n _\b5_\b2inline std::size_t _\bf_\bi_\bn_\bd_\b__\bc_\bh_\ba_\br(\n-53 _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc *scanner, std::string_view haystack,\n-54 std::size_t here = 0u)\n+53 _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc *_\bs_\bc_\ba_\bn_\bn_\be_\br, std::string_view _\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk,\n+54 std::size_t _\bh_\be_\br_\be = 0_\bu)\n 55{\n-56 auto const sz{std::size(haystack)};\n-57 auto const data{std::data(haystack)};\n-58 while (here < sz)\n+56 auto const _\bs_\bz{std::size(_\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk)};\n+57 auto const data{std::data(_\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk)};\n+58 while (_\bh_\be_\br_\be < _\bs_\bz)\n 59 {\n-60 auto next{scanner(data, sz, here)};\n-61 PQXX_ASSUME(next > here);\n+60 auto next{_\bs_\bc_\ba_\bn_\bn_\be_\br(data, _\bs_\bz, _\bh_\be_\br_\be)};\n+61 PQXX_ASSUME(next > _\bh_\be_\br_\be);\n 62 // (For some reason gcc had a problem with a right-fold here. But clang\n 63 // was fine.)\n-64 if ((... or (data[here] == NEEDLE)))\n+64 if ((... _\bo_\br (data[_\bh_\be_\br_\be] == _\bN_\bE_\bE_\bD_\bL_\bE)))\n 65 {\n 66 // Also check against a multibyte character starting with a bytes which\n 67 // just happens to match one of the ASCII bytes we're looking for. It'd\n 68 // be cleaner to check that first, but either works. So, let's apply the\n 69 // most selective filter first and skip this check in almost all cases.\n-70 if (next == here + 1)\n-71 return here;\n+70 if (next == _\bh_\be_\br_\be + 1)\n+71 return _\bh_\be_\br_\be;\n 72 }\n 73\n 74 // Nope, no hit. Move on.\n-75 here = next;\n+75 _\bh_\be_\br_\be = next;\n 76 }\n-77 return sz;\n+77 return _\bs_\bz;\n 78}\n 79\n 80\n 81// TODO: Get rid of this one. Use compile-time-specialised loop instead.\n 83\n 86template\n _\b8_\b7inline void _\bf_\bo_\br_\b__\bg_\bl_\by_\bp_\bh_\bs(\n-88 encoding_group enc, CALLABLE callback, char const buffer[],\n-89 std::size_t buffer_len, std::size_t start = 0)\n+88 encoding_group _\be_\bn_\bc, _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk, char const _\bb_\bu_\bf_\bf_\be_\br[],\n+89 std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt = 0)\n 90{\n-91 auto const scan{_\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br(enc)};\n-92 for (std::size_t here = start, next; here < buffer_len; here = next)\n+91 auto const _\bs_\bc_\ba_\bn{_\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br(_\be_\bn_\bc)};\n+92 for (std::size_t _\bh_\be_\br_\be = _\bs_\bt_\ba_\br_\bt, next; _\bh_\be_\br_\be < _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn; _\bh_\be_\br_\be = next)\n 93 {\n-94 next = scan(buffer, buffer_len, here);\n-95 PQXX_ASSUME(next > here);\n-96 callback(buffer + here, buffer + next);\n+94 next = _\bs_\bc_\ba_\bn(_\bb_\bu_\bf_\bf_\be_\br, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, _\bh_\be_\br_\be);\n+95 PQXX_ASSUME(next > _\bh_\be_\br_\be);\n+96 _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk(_\bb_\bu_\bf_\bf_\be_\br + _\bh_\be_\br_\be, _\bb_\bu_\bf_\bf_\be_\br + next);\n 97 }\n 98}\n 99\n 100\n 101namespace\n 102{\n 104constexpr PQXX_PURE unsigned char\n-105get_byte(char const buffer[], std::size_t offset) noexcept\n+105_\bg_\be_\bt_\b__\bb_\by_\bt_\be(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bo_\bf_\bf_\bs_\be_\bt) noexcept\n 106{\n-107 return static_cast(buffer[offset]);\n+107 return static_cast(_\bb_\bu_\bf_\bf_\be_\br[_\bo_\bf_\bf_\bs_\be_\bt]);\n 108}\n 109\n 110\n-111[[noreturn]] PQXX_COLD void throw_for_encoding_error(\n-112 char const *encoding_name, char const buffer[], std::size_t start,\n+111[[_\bn_\bo_\br_\be_\bt_\bu_\br_\bn]] PQXX_COLD void _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\n+112 char const *_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bn_\ba_\bm_\be, char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bs_\bt_\ba_\br_\bt,\n 113 std::size_t count)\n 114{\n-115 std::stringstream s;\n-116 s << \"Invalid byte sequence for encoding \" << encoding_name << \" at byte \"\n-117 << start << \": \" << std::hex << std::setw(2) << std::setfill('0');\n-118 for (std::size_t i{0}; i < count; ++i)\n+115 std::stringstream _\bs;\n+116 _\bs << \"Invalid byte sequence for encoding \" << _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bn_\ba_\bm_\be << \" at byte \"\n+117 << _\bs_\bt_\ba_\br_\bt << \": \" << std::hex << std::setw(2) << std::setfill('0');\n+118 for (std::size_t _\bi{0}; _\bi < count; ++_\bi)\n 119 {\n-120 s << \"0x\" << static_cast(get_byte(buffer, start + i));\n-121 if (i + 1 < count)\n-122 s << \" \";\n+120 _\bs << \"0x\" << static_cast(_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + _\bi));\n+121 if (_\bi + 1 < count)\n+122 _\bs << \" \";\n 123 }\n-124 throw _\bp_\bq_\bx_\bx_\b:_\b:_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\b__\be_\br_\br_\bo_\br{s.str()};\n+124 throw _\bp_\bq_\bx_\bx_\b:_\b:_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\b__\be_\br_\br_\bo_\br{_\bs.str()};\n 125}\n 126\n 127\n 129constexpr PQXX_PURE bool\n-130between_inc(unsigned char value, unsigned bottom, unsigned top)\n+130_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(unsigned char value, unsigned _\bb_\bo_\bt_\bt_\bo_\bm, unsigned _\bt_\bo_\bp)\n 131{\n-132 return value >= bottom and value <= top;\n+132 return value >= _\bb_\bo_\bt_\bt_\bo_\bm _\ba_\bn_\bd value <= _\bt_\bo_\bp;\n 133}\n 134} // namespace\n 135\n 136\n 138\n _\b1_\b4_\b2template struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 143{\n 144 // TODO: Convert to use string_view?\n 146 PQXX_PURE static std::size_t\n-_\b1_\b4_\b7 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start);\n+_\b1_\b4_\b7 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt);\n 148};\n 149\n 150\n 151namespace\n 152{\n 154\n-160template\n+160template\n 161PQXX_PURE inline std::size_t\n-162find_ascii_char(std::string_view haystack, std::size_t here)\n+162_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br(std::string_view _\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk, std::size_t _\bh_\be_\br_\be)\n 163{\n 164 // We only know how to search for ASCII characters. It's an optimisation\n 165 // assumption in the code below.\n-166 static_assert((... and ((NEEDLE & 0x80) == 0)));\n+166 static_assert((... _\ba_\bn_\bd ((_\bN_\bE_\bE_\bD_\bL_\bE & 0x80) == 0)));\n 167\n-168 auto const sz{std::size(haystack)};\n-169 auto const data{std::data(haystack)};\n-170 while (here < sz)\n+168 auto const _\bs_\bz{std::size(_\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk)};\n+169 auto const data{std::data(_\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk)};\n+170 while (_\bh_\be_\br_\be < _\bs_\bz)\n 171 {\n 172 // Look up the next character boundary. This can be quite costly, so we\n 173 // desperately want the call inlined.\n-174 auto next{_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(data, sz, here)};\n-175 PQXX_ASSUME(next > here);\n+174 auto next{_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(data, _\bs_\bz, _\bh_\be_\br_\be)};\n+175 PQXX_ASSUME(next > _\bh_\be_\br_\be);\n 176\n 177 // (For some reason gcc had a problem with a right-fold here. But clang\n 178 // was fine.)\n 179 //\n 180 // In all supported encodings, if a character's first byte is in the ASCII\n 181 // range, that means it's a single-byte character. It follows that when we\n 182 // find a match, we do not need to check that we're in a single-byte\n@@ -157,88 +157,88 @@\n 186 // each character's first byte. That first byte can only match NEEDLE if\n 187 // it's a single-byte character.\n 188 //\n 189 // In an \"ASCII-safe\" encoding, e.g. UTF-8 or the ISO-8859 ones, we check\n 190 // for a match at each byte in the text, because it's faster than finding\n 191 // character boundaries first. But in these encodings, a multichar byte\n 192 // never contains any bytes in the ASCII range at all.\n-193 if ((... or (data[here] == NEEDLE)))\n-194 return here;\n+193 if ((... _\bo_\br (data[_\bh_\be_\br_\be] == _\bN_\bE_\bE_\bD_\bL_\bE)))\n+194 return _\bh_\be_\br_\be;\n 195\n 196 // Nope, no hit. Move on.\n-197 here = next;\n+197 _\bh_\be_\br_\be = next;\n 198 }\n-199 return sz;\n+199 return _\bs_\bz;\n 200}\n 201} // namespace\n 202\n 203\n 205\n-209template\n+209template\n 210PQXX_PURE std::size_t\n-_\b2_\b1_\b1_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br(std::string_view haystack, std::size_t here)\n+_\b2_\b1_\b1_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br(std::string_view _\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk, std::size_t _\bh_\be_\br_\be)\n 212{\n 213 // We only know how to search for ASCII characters. It's an optimisation\n 214 // assumption in the code below.\n-215 static_assert((... and ((NEEDLE >> 7) == 0)));\n+215 static_assert((... _\ba_\bn_\bd ((_\bN_\bE_\bE_\bD_\bL_\bE >> 7) == 0)));\n 216\n-217 auto const sz{std::size(haystack)};\n-218 auto const data{std::data(haystack)};\n+217 auto const _\bs_\bz{std::size(_\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk)};\n+218 auto const data{std::data(_\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk)};\n 219\n 220 // No supported encoding has multibyte characters that start with an\n 221 // ASCII-range byte.\n-222 while ((... and (data[here] != NEEDLE)))\n+222 while ((... _\ba_\bn_\bd (data[_\bh_\be_\br_\be] != _\bN_\bE_\bE_\bD_\bL_\bE)))\n 223 {\n-224 auto const next = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(data, sz, here);\n-225 PQXX_ASSUME(next > here);\n-226 here = next;\n+224 auto const next = _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b<_\bE_\bN_\bC_\b>_\b:_\b:_\bc_\ba_\bl_\bl(data, _\bs_\bz, _\bh_\be_\br_\be);\n+225 PQXX_ASSUME(next > _\bh_\be_\br_\be);\n+226 _\bh_\be_\br_\be = next;\n 227 }\n-228 return here;\n+228 return _\bh_\be_\br_\be;\n 229}\n 230\n 231\n _\b2_\b3_\b2template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 233{\n 234 static PQXX_PURE constexpr std::size_t\n-235 _\bc_\ba_\bl_\bl(char const /* buffer */[], std::size_t buffer_len, std::size_t start)\n+235 _\bc_\ba_\bl_\bl(char const /* buffer */[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 236 {\n 237 // TODO: Don't bother with npos. Let the caller check.\n-238 if (start >= buffer_len)\n+238 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 239 PQXX_UNLIKELY return std::string::npos;\n 240 else\n-241 return start + 1;\n+241 return _\bs_\bt_\ba_\br_\bt + 1;\n 242 }\n 243};\n 244\n 245\n 246// https://en.wikipedia.org/wiki/Big5#Organization\n _\b2_\b4_\b7template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 248{\n 249 static PQXX_PURE std::size_t\n-250 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+250 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 251 {\n-252 if (start >= buffer_len)\n+252 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 253 PQXX_UNLIKELY return std::string::npos;\n 254\n-255 auto const byte1{get_byte(buffer, start)};\n-256 if (byte1 < 0x80)\n-257 return start + 1;\n+255 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+256 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+257 return _\bs_\bt_\ba_\br_\bt + 1;\n 258\n-259 if (not between_inc(byte1, 0x81, 0xfe) or (start + 2 > buffer_len))\n+259 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0x81, 0xfe) _\bo_\br (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn))\n 260 PQXX_UNLIKELY\n-261 throw_for_encoding_error(\"BIG5\", buffer, start, 1);\n+261 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"BIG5\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 262\n-263 auto const byte2{get_byte(buffer, start + 1)};\n+263 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n 264 if (\n-265 not between_inc(byte2, 0x40, 0x7e) and\n-266 not between_inc(byte2, 0xa1, 0xfe))\n+265 _\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x40, 0x7e) _\ba_\bn_\bd\n+266 _\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe))\n 267 PQXX_UNLIKELY\n-268 throw_for_encoding_error(\"BIG5\", buffer, start, 2);\n+268 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"BIG5\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 269\n-270 return start + 2;\n+270 return _\bs_\bt_\ba_\br_\bt + 2;\n 271 }\n 272};\n 273\n 274\n 275/*\n 276The PostgreSQL documentation claims that the EUC_* encodings are 1-3 bytes\n 277each, but other documents explain that the EUC sets can contain 1-(2,3,4)\n@@ -251,246 +251,246 @@\n 283 EUC_TW : 1-4\n 284*/\n 285\n 286// https://en.wikipedia.org/wiki/GB_2312#EUC-CN\n _\b2_\b8_\b7template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 288{\n 289 static PQXX_PURE std::size_t\n-290 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+290 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 291 {\n-292 if (start >= buffer_len)\n+292 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 293 return std::string::npos;\n 294\n-295 auto const byte1{get_byte(buffer, start)};\n-296 if (byte1 < 0x80)\n-297 return start + 1;\n+295 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+296 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+297 return _\bs_\bt_\ba_\br_\bt + 1;\n 298\n-299 if (not between_inc(byte1, 0xa1, 0xf7) or start + 2 > buffer_len)\n+299 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xf7) _\bo_\br _\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 300 PQXX_UNLIKELY\n-301 throw_for_encoding_error(\"EUC_CN\", buffer, start, 1);\n+301 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_CN\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 302\n-303 auto const byte2{get_byte(buffer, start + 1)};\n-304 if (not between_inc(byte2, 0xa1, 0xfe))\n+303 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+304 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe))\n 305 PQXX_UNLIKELY\n-306 throw_for_encoding_error(\"EUC_CN\", buffer, start, 2);\n+306 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_CN\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 307\n-308 return start + 2;\n+308 return _\bs_\bt_\ba_\br_\bt + 2;\n 309 }\n 310};\n 311\n 312\n 313// EUC-JP and EUC-JIS-2004 represent slightly different code points but\n iterate\n 314// the same:\n 315//\n 316// https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-JP\n 317// http://x0213.org/codetable/index.en.html\n _\b3_\b1_\b8template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 319{\n 320 static PQXX_PURE std::size_t\n-321 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+321 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 322 {\n-323 if (start >= buffer_len)\n+323 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 324 return std::string::npos;\n 325\n-326 auto const byte1{get_byte(buffer, start)};\n-327 if (byte1 < 0x80)\n-328 return start + 1;\n+326 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+327 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+328 return _\bs_\bt_\ba_\br_\bt + 1;\n 329\n-330 if (start + 2 > buffer_len)\n+330 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 331 PQXX_UNLIKELY\n-332 throw_for_encoding_error(\"EUC_JP\", buffer, start, 1);\n+332 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_JP\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 333\n-334 auto const byte2{get_byte(buffer, start + 1)};\n-335 if (byte1 == 0x8e)\n+334 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+335 if (_\bb_\by_\bt_\be_\b1 == 0x8e)\n 336 {\n-337 if (not between_inc(byte2, 0xa1, 0xfe))\n+337 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe))\n 338 PQXX_UNLIKELY\n-339 throw_for_encoding_error(\"EUC_JP\", buffer, start, 2);\n+339 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_JP\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 340\n-341 return start + 2;\n+341 return _\bs_\bt_\ba_\br_\bt + 2;\n 342 }\n 343\n-344 if (between_inc(byte1, 0xa1, 0xfe))\n+344 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xfe))\n 345 {\n-346 if (not between_inc(byte2, 0xa1, 0xfe))\n+346 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe))\n 347 PQXX_UNLIKELY\n-348 throw_for_encoding_error(\"EUC_JP\", buffer, start, 2);\n+348 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_JP\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 349\n-350 return start + 2;\n+350 return _\bs_\bt_\ba_\br_\bt + 2;\n 351 }\n 352\n-353 if (byte1 == 0x8f and start + 3 <= buffer_len)\n+353 if (_\bb_\by_\bt_\be_\b1 == 0x8f _\ba_\bn_\bd _\bs_\bt_\ba_\br_\bt + 3 <= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 354 {\n-355 auto const byte3{get_byte(buffer, start + 2)};\n+355 auto const _\bb_\by_\bt_\be_\b3{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 2)};\n 356 if (\n-357 not between_inc(byte2, 0xa1, 0xfe) or\n-358 not between_inc(byte3, 0xa1, 0xfe))\n+357 _\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe) _\bo_\br\n+358 _\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b3, 0xa1, 0xfe))\n 359 PQXX_UNLIKELY\n-360 throw_for_encoding_error(\"EUC_JP\", buffer, start, 3);\n+360 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_JP\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 3);\n 361\n-362 return start + 3;\n+362 return _\bs_\bt_\ba_\br_\bt + 3;\n 363 }\n 364\n-365 throw_for_encoding_error(\"EUC_JP\", buffer, start, 1);\n+365 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_JP\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 366 }\n 367};\n 368\n 369\n 370// https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-KR\n _\b3_\b7_\b1template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 372{\n 373 static PQXX_PURE std::size_t\n-374 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+374 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 375 {\n-376 if (start >= buffer_len)\n+376 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 377 PQXX_UNLIKELY return std::string::npos;\n 378\n-379 auto const byte1{get_byte(buffer, start)};\n-380 if (byte1 < 0x80)\n-381 return start + 1;\n+379 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+380 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+381 return _\bs_\bt_\ba_\br_\bt + 1;\n 382\n-383 if (not between_inc(byte1, 0xa1, 0xfe) or start + 2 > buffer_len)\n+383 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xfe) _\bo_\br _\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 384 PQXX_UNLIKELY\n-385 throw_for_encoding_error(\"EUC_KR\", buffer, start, 1);\n+385 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_KR\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 386\n-387 auto const byte2{get_byte(buffer, start + 1)};\n-388 if (not between_inc(byte2, 0xa1, 0xfe))\n+387 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+388 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe))\n 389 PQXX_UNLIKELY\n-390 throw_for_encoding_error(\"EUC_KR\", buffer, start, 1);\n+390 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_KR\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 391\n-392 return start + 2;\n+392 return _\bs_\bt_\ba_\br_\bt + 2;\n 393 }\n 394};\n 395\n 396\n 397// https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-TW\n _\b3_\b9_\b8template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 399{\n 400 static PQXX_PURE std::size_t\n-401 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+401 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 402 {\n-403 if (start >= buffer_len)\n+403 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 404 PQXX_UNLIKELY\n 405 return std::string::npos;\n 406\n-407 auto const byte1{get_byte(buffer, start)};\n-408 if (byte1 < 0x80)\n-409 return start + 1;\n+407 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+408 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+409 return _\bs_\bt_\ba_\br_\bt + 1;\n 410\n-411 if (start + 2 > buffer_len)\n+411 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 412 PQXX_UNLIKELY\n-413 throw_for_encoding_error(\"EUC_KR\", buffer, start, 1);\n+413 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_KR\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 414\n-415 auto const byte2{get_byte(buffer, start + 1)};\n-416 if (between_inc(byte1, 0xa1, 0xfe))\n+415 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+416 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xfe))\n 417 {\n-418 if (not between_inc(byte2, 0xa1, 0xfe))\n+418 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe))\n 419 PQXX_UNLIKELY\n-420 throw_for_encoding_error(\"EUC_KR\", buffer, start, 2);\n+420 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_KR\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 421\n-422 return start + 2;\n+422 return _\bs_\bt_\ba_\br_\bt + 2;\n 423 }\n 424\n-425 if (byte1 != 0x8e or start + 4 > buffer_len)\n+425 if (_\bb_\by_\bt_\be_\b1 != 0x8e _\bo_\br _\bs_\bt_\ba_\br_\bt + 4 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 426 PQXX_UNLIKELY\n-427 throw_for_encoding_error(\"EUC_KR\", buffer, start, 1);\n+427 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_KR\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 428\n 429 if (\n-430 between_inc(byte2, 0xa1, 0xb0) and\n-431 between_inc(get_byte(buffer, start + 2), 0xa1, 0xfe) and\n-432 between_inc(get_byte(buffer, start + 3), 0xa1, 0xfe))\n-433 return start + 4;\n+430 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xb0) _\ba_\bn_\bd\n+431 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 2), 0xa1, 0xfe) _\ba_\bn_\bd\n+432 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 3), 0xa1, 0xfe))\n+433 return _\bs_\bt_\ba_\br_\bt + 4;\n 434\n 435 PQXX_UNLIKELY\n-436 throw_for_encoding_error(\"EUC_KR\", buffer, start, 4);\n+436 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"EUC_KR\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 4);\n 437 }\n 438};\n 439\n 440\n 441// https://en.wikipedia.org/wiki/GB_18030#Mapping\n _\b4_\b4_\b2template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 443{\n 444 static PQXX_PURE std::size_t\n-445 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+445 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 446 {\n-447 if (start >= buffer_len)\n+447 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 448 PQXX_UNLIKELY return std::string::npos;\n 449\n-450 auto const byte1{get_byte(buffer, start)};\n-451 if (byte1 < 0x80)\n-452 return start + 1;\n-453 if (byte1 == 0x80)\n-454 throw_for_encoding_error(\"GB18030\", buffer, start, buffer_len - start);\n+450 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+451 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+452 return _\bs_\bt_\ba_\br_\bt + 1;\n+453 if (_\bb_\by_\bt_\be_\b1 == 0x80)\n+454 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"GB18030\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 455\n-456 if (start + 2 > buffer_len)\n+456 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 457 PQXX_UNLIKELY\n-458 throw_for_encoding_error(\"GB18030\", buffer, start, buffer_len - start);\n+458 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"GB18030\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 459\n-460 auto const byte2{get_byte(buffer, start + 1)};\n-461 if (between_inc(byte2, 0x40, 0xfe))\n+460 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+461 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x40, 0xfe))\n 462 {\n-463 if (byte2 == 0x7f)\n+463 if (_\bb_\by_\bt_\be_\b2 == 0x7f)\n 464 PQXX_UNLIKELY\n-465 throw_for_encoding_error(\"GB18030\", buffer, start, 2);\n+465 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"GB18030\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 466\n-467 return start + 2;\n+467 return _\bs_\bt_\ba_\br_\bt + 2;\n 468 }\n 469\n-470 if (start + 4 > buffer_len)\n+470 if (_\bs_\bt_\ba_\br_\bt + 4 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 471 PQXX_UNLIKELY\n-472 throw_for_encoding_error(\"GB18030\", buffer, start, buffer_len - start);\n+472 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"GB18030\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 473\n 474 if (\n-475 between_inc(byte2, 0x30, 0x39) and\n-476 between_inc(get_byte(buffer, start + 2), 0x81, 0xfe) and\n-477 between_inc(get_byte(buffer, start + 3), 0x30, 0x39))\n-478 return start + 4;\n+475 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x30, 0x39) _\ba_\bn_\bd\n+476 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 2), 0x81, 0xfe) _\ba_\bn_\bd\n+477 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 3), 0x30, 0x39))\n+478 return _\bs_\bt_\ba_\br_\bt + 4;\n 479\n 480 PQXX_UNLIKELY\n-481 throw_for_encoding_error(\"GB18030\", buffer, start, 4);\n+481 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"GB18030\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 4);\n 482 }\n 483};\n 484\n 485\n 486// https://en.wikipedia.org/wiki/GBK_(character_encoding)#Encoding\n _\b4_\b8_\b7template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 488{\n 489 static PQXX_PURE std::size_t\n-490 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+490 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 491 {\n-492 if (start >= buffer_len)\n+492 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 493 PQXX_UNLIKELY return std::string::npos;\n 494\n-495 auto const byte1{get_byte(buffer, start)};\n-496 if (byte1 < 0x80)\n-497 return start + 1;\n+495 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+496 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+497 return _\bs_\bt_\ba_\br_\bt + 1;\n 498\n-499 if (start + 2 > buffer_len)\n+499 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 500 PQXX_UNLIKELY\n-501 throw_for_encoding_error(\"GBK\", buffer, start, 1);\n+501 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"GBK\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 502\n-503 auto const byte2{get_byte(buffer, start + 1)};\n+503 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n 504 if (\n-505 (between_inc(byte1, 0xa1, 0xa9) and between_inc(byte2, 0xa1, 0xfe)) or\n-506 (between_inc(byte1, 0xb0, 0xf7) and between_inc(byte2, 0xa1, 0xfe)) or\n-507 (between_inc(byte1, 0x81, 0xa0) and between_inc(byte2, 0x40, 0xfe) and\n-508 byte2 != 0x7f) or\n-509 (between_inc(byte1, 0xaa, 0xfe) and between_inc(byte2, 0x40, 0xa0) and\n-510 byte2 != 0x7f) or\n-511 (between_inc(byte1, 0xa8, 0xa9) and between_inc(byte2, 0x40, 0xa0) and\n-512 byte2 != 0x7f) or\n-513 (between_inc(byte1, 0xaa, 0xaf) and between_inc(byte2, 0xa1, 0xfe)) or\n-514 (between_inc(byte1, 0xf8, 0xfe) and between_inc(byte2, 0xa1, 0xfe)) or\n-515 (between_inc(byte1, 0xa1, 0xa7) and between_inc(byte2, 0x40, 0xa0) and\n-516 byte2 != 0x7f))\n-517 return start + 2;\n+505 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xa9) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe)) _\bo_\br\n+506 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xb0, 0xf7) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe)) _\bo_\br\n+507 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0x81, 0xa0) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x40, 0xfe) _\ba_\bn_\bd\n+508 _\bb_\by_\bt_\be_\b2 != 0x7f) _\bo_\br\n+509 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xaa, 0xfe) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x40, 0xa0) _\ba_\bn_\bd\n+510 _\bb_\by_\bt_\be_\b2 != 0x7f) _\bo_\br\n+511 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa8, 0xa9) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x40, 0xa0) _\ba_\bn_\bd\n+512 _\bb_\by_\bt_\be_\b2 != 0x7f) _\bo_\br\n+513 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xaa, 0xaf) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe)) _\bo_\br\n+514 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xf8, 0xfe) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe)) _\bo_\br\n+515 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xa7) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x40, 0xa0) _\ba_\bn_\bd\n+516 _\bb_\by_\bt_\be_\b2 != 0x7f))\n+517 return _\bs_\bt_\ba_\br_\bt + 2;\n 518\n 519 PQXX_UNLIKELY\n-520 throw_for_encoding_error(\"GBK\", buffer, start, 2);\n+520 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"GBK\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 521 }\n 522};\n 523\n 524\n 525/*\n 526The PostgreSQL documentation claims that the JOHAB encoding is 1-3 bytes,\n but\n@@ -501,37 +501,37 @@\n 530CJKV Information Processing by Ken Lunde, pg. 269:\n 531\n 532 https://bit.ly/2BEOu5V\n 533*/\n _\b5_\b3_\b4template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 535{\n 536 static PQXX_PURE std::size_t\n-537 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+537 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 538 {\n-539 if (start >= buffer_len)\n+539 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 540 PQXX_UNLIKELY return std::string::npos;\n 541\n-542 auto const byte1{get_byte(buffer, start)};\n-543 if (byte1 < 0x80)\n-544 return start + 1;\n+542 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+543 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+544 return _\bs_\bt_\ba_\br_\bt + 1;\n 545\n-546 if (start + 2 > buffer_len)\n+546 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 547 PQXX_UNLIKELY\n-548 throw_for_encoding_error(\"JOHAB\", buffer, start, 1);\n+548 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"JOHAB\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 549\n-550 auto const byte2{get_byte(buffer, start)};\n+550 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n 551 if (\n-552 (between_inc(byte1, 0x84, 0xd3) and\n-553 (between_inc(byte2, 0x41, 0x7e) or between_inc(byte2, 0x81, 0xfe))) or\n-554 ((between_inc(byte1, 0xd8, 0xde) or between_inc(byte1, 0xe0, 0xf9)) and\n-555 (between_inc(byte2, 0x31, 0x7e) or between_inc(byte2, 0x91, 0xfe))))\n-556 return start + 2;\n+552 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0x84, 0xd3) _\ba_\bn_\bd\n+553 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x41, 0x7e) _\bo_\br _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x81, 0xfe))) _\bo_\br\n+554 ((_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xd8, 0xde) _\bo_\br _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xe0, 0xf9)) _\ba_\bn_\bd\n+555 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x31, 0x7e) _\bo_\br _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x91, 0xfe))))\n+556 return _\bs_\bt_\ba_\br_\bt + 2;\n 557\n 558 PQXX_UNLIKELY\n-559 throw_for_encoding_error(\"JOHAB\", buffer, start, 2);\n+559 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"JOHAB\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 560 }\n 561};\n 562\n 563\n 564/*\n 565PostgreSQL's MULE_INTERNAL is the emacs rather than Xemacs implementation;\n 566see the server/mb/pg_wchar.h PostgreSQL header file.\n@@ -539,55 +539,55 @@\n was\n 568unable to get it to successfully iterate a MULE-encoded test CSV generated\n 569using PostgreSQL 9.2.23. Use this at your own risk.\n 570*/\n _\b5_\b7_\b1template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 572{\n 573 static PQXX_PURE std::size_t\n-574 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+574 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 575 {\n-576 if (start >= buffer_len)\n+576 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 577 PQXX_UNLIKELY return std::string::npos;\n 578\n-579 auto const byte1{get_byte(buffer, start)};\n-580 if (byte1 < 0x80)\n-581 return start + 1;\n+579 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+580 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+581 return _\bs_\bt_\ba_\br_\bt + 1;\n 582\n-583 if (start + 2 > buffer_len)\n+583 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 584 PQXX_UNLIKELY\n-585 throw_for_encoding_error(\"MULE_INTERNAL\", buffer, start, 1);\n+585 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"MULE_INTERNAL\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 586\n-587 auto const byte2{get_byte(buffer, start + 1)};\n-588 if (between_inc(byte1, 0x81, 0x8d) and byte2 >= 0xa0)\n-589 return start + 2;\n+587 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+588 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0x81, 0x8d) _\ba_\bn_\bd _\bb_\by_\bt_\be_\b2 >= 0xa0)\n+589 return _\bs_\bt_\ba_\br_\bt + 2;\n 590\n-591 if (start + 3 > buffer_len)\n+591 if (_\bs_\bt_\ba_\br_\bt + 3 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 592 PQXX_UNLIKELY\n-593 throw_for_encoding_error(\"MULE_INTERNAL\", buffer, start, 2);\n+593 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"MULE_INTERNAL\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 594\n 595 if (\n-596 ((byte1 == 0x9a and between_inc(byte2, 0xa0, 0xdf)) or\n-597 (byte1 == 0x9b and between_inc(byte2, 0xe0, 0xef)) or\n-598 (between_inc(byte1, 0x90, 0x99) and byte2 >= 0xa0)) and\n-599 (byte2 >= 0xa0))\n-600 return start + 3;\n+596 ((_\bb_\by_\bt_\be_\b1 == 0x9a _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa0, 0xdf)) _\bo_\br\n+597 (_\bb_\by_\bt_\be_\b1 == 0x9b _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xe0, 0xef)) _\bo_\br\n+598 (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0x90, 0x99) _\ba_\bn_\bd _\bb_\by_\bt_\be_\b2 >= 0xa0)) _\ba_\bn_\bd\n+599 (_\bb_\by_\bt_\be_\b2 >= 0xa0))\n+600 return _\bs_\bt_\ba_\br_\bt + 3;\n 601\n-602 if (start + 4 > buffer_len)\n+602 if (_\bs_\bt_\ba_\br_\bt + 4 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 603 PQXX_UNLIKELY\n-604 throw_for_encoding_error(\"MULE_INTERNAL\", buffer, start, 3);\n+604 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"MULE_INTERNAL\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 3);\n 605\n 606 if (\n-607 ((byte1 == 0x9c and between_inc(byte2, 0xf0, 0xf4)) or\n-608 (byte1 == 0x9d and between_inc(byte2, 0xf5, 0xfe))) and\n-609 get_byte(buffer, start + 2) >= 0xa0 and\n-610 get_byte(buffer, start + 4) >= 0xa0)\n-611 return start + 4;\n+607 ((_\bb_\by_\bt_\be_\b1 == 0x9c _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xf0, 0xf4)) _\bo_\br\n+608 (_\bb_\by_\bt_\be_\b1 == 0x9d _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xf5, 0xfe))) _\ba_\bn_\bd\n+609 _\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 2) >= 0xa0 _\ba_\bn_\bd\n+610 _\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 4) >= 0xa0)\n+611 return _\bs_\bt_\ba_\br_\bt + 4;\n 612\n 613 PQXX_UNLIKELY\n-614 throw_for_encoding_error(\"MULE_INTERNAL\", buffer, start, 4);\n+614 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"MULE_INTERNAL\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 4);\n 615 }\n 616};\n 617\n 618\n 619// As far as I can tell, for the purposes of iterating the only difference\n 620// between SJIS and SJIS-2004 is increased range in the first byte of two-\n byte\n@@ -599,234 +599,234 @@\n 624// restriction for the first byte in 2-byte sequences.\n 625//\n 626// https://en.wikipedia.org/wiki/Shift_JIS#Shift_JIS_byte_map\n 627// http://x0213.org/codetable/index.en.html\n _\b6_\b2_\b8template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 629{\n 630 static PQXX_PURE std::size_t\n-631 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+631 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 632 {\n-633 if (start >= buffer_len)\n+633 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 634 return std::string::npos;\n 635\n-636 auto const byte1{get_byte(buffer, start)};\n-637 if (byte1 < 0x80 or between_inc(byte1, 0xa1, 0xdf))\n-638 return start + 1;\n+636 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+637 if (_\bb_\by_\bt_\be_\b1 < 0x80 _\bo_\br _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xdf))\n+638 return _\bs_\bt_\ba_\br_\bt + 1;\n 639\n 640 if (\n-641 not between_inc(byte1, 0x81, 0x9f) and\n-642 not between_inc(byte1, 0xe0, 0xfc))\n+641 _\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0x81, 0x9f) _\ba_\bn_\bd\n+642 _\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xe0, 0xfc))\n 643 PQXX_UNLIKELY\n-644 throw_for_encoding_error(\"SJIS\", buffer, start, 1);\n+644 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"SJIS\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 645\n-646 if (start + 2 > buffer_len)\n+646 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 647 PQXX_UNLIKELY\n-648 throw_for_encoding_error(\"SJIS\", buffer, start, buffer_len - start);\n+648 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"SJIS\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 649\n-650 auto const byte2{get_byte(buffer, start + 1)};\n-651 if (byte2 == 0x7f)\n+650 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+651 if (_\bb_\by_\bt_\be_\b2 == 0x7f)\n 652 PQXX_UNLIKELY\n-653 throw_for_encoding_error(\"SJIS\", buffer, start, 2);\n+653 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"SJIS\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 654\n-655 if (between_inc(byte2, 0x40, 0x9e) or between_inc(byte2, 0x9f, 0xfc))\n-656 return start + 2;\n+655 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x40, 0x9e) _\bo_\br _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x9f, 0xfc))\n+656 return _\bs_\bt_\ba_\br_\bt + 2;\n 657\n 658 PQXX_UNLIKELY\n-659 throw_for_encoding_error(\"SJIS\", buffer, start, 2);\n+659 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"SJIS\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 660 }\n 661};\n 662\n 663\n 664// https://en.wikipedia.org/wiki/Unified_Hangul_Code\n _\b6_\b6_\b5template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 666{\n 667 static PQXX_PURE std::size_t\n-668 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+668 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 669 {\n-670 if (start >= buffer_len)\n+670 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 671 PQXX_UNLIKELY return std::string::npos;\n 672\n-673 auto const byte1{get_byte(buffer, start)};\n-674 if (byte1 < 0x80)\n-675 return start + 1;\n+673 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+674 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+675 return _\bs_\bt_\ba_\br_\bt + 1;\n 676\n-677 if (start + 2 > buffer_len)\n+677 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 678 PQXX_UNLIKELY\n-679 throw_for_encoding_error(\"UHC\", buffer, start, buffer_len - start);\n+679 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UHC\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 680\n-681 auto const byte2{get_byte(buffer, start + 1)};\n-682 if (between_inc(byte1, 0x80, 0xc6))\n+681 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+682 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0x80, 0xc6))\n 683 {\n 684 if (\n-685 between_inc(byte2, 0x41, 0x5a) or between_inc(byte2, 0x61, 0x7a) or\n-686 between_inc(byte2, 0x80, 0xfe))\n-687 return start + 2;\n+685 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x41, 0x5a) _\bo_\br _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x61, 0x7a) _\bo_\br\n+686 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x80, 0xfe))\n+687 return _\bs_\bt_\ba_\br_\bt + 2;\n 688\n 689 PQXX_UNLIKELY\n-690 throw_for_encoding_error(\"UHC\", buffer, start, 2);\n+690 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UHC\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 691 }\n 692\n-693 if (between_inc(byte1, 0xa1, 0xfe))\n+693 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xa1, 0xfe))\n 694 {\n-695 if (not between_inc(byte2, 0xa1, 0xfe))\n+695 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0xa1, 0xfe))\n 696 PQXX_UNLIKELY\n-697 throw_for_encoding_error(\"UHC\", buffer, start, 2);\n+697 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UHC\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 698\n-699 return start + 2;\n+699 return _\bs_\bt_\ba_\br_\bt + 2;\n 700 }\n 701\n-702 throw_for_encoding_error(\"UHC\", buffer, start, 1);\n+702 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UHC\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 703 }\n 704};\n 705\n 706\n 707// https://en.wikipedia.org/wiki/UTF-8#Description\n _\b7_\b0_\b8template<> struct _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n 709{\n 710 static PQXX_PURE std::size_t\n-711 _\bc_\ba_\bl_\bl(char const buffer[], std::size_t buffer_len, std::size_t start)\n+711 _\bc_\ba_\bl_\bl(char const _\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n 712 {\n-713 if (start >= buffer_len)\n+713 if (_\bs_\bt_\ba_\br_\bt >= _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 714 PQXX_UNLIKELY return std::string::npos;\n 715\n-716 auto const byte1{get_byte(buffer, start)};\n-717 if (byte1 < 0x80)\n-718 return start + 1;\n+716 auto const _\bb_\by_\bt_\be_\b1{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt)};\n+717 if (_\bb_\by_\bt_\be_\b1 < 0x80)\n+718 return _\bs_\bt_\ba_\br_\bt + 1;\n 719\n-720 if (start + 2 > buffer_len)\n+720 if (_\bs_\bt_\ba_\br_\bt + 2 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 721 PQXX_UNLIKELY\n-722 throw_for_encoding_error(\"UTF8\", buffer, start, buffer_len - start);\n+722 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UTF8\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 723\n-724 auto const byte2{get_byte(buffer, start + 1)};\n-725 if (between_inc(byte1, 0xc0, 0xdf))\n+724 auto const _\bb_\by_\bt_\be_\b2{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 1)};\n+725 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xc0, 0xdf))\n 726 {\n-727 if (not between_inc(byte2, 0x80, 0xbf))\n+727 if (_\bn_\bo_\bt _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x80, 0xbf))\n 728 PQXX_UNLIKELY\n-729 throw_for_encoding_error(\"UTF8\", buffer, start, 2);\n+729 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UTF8\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 2);\n 730\n-731 return start + 2;\n+731 return _\bs_\bt_\ba_\br_\bt + 2;\n 732 }\n 733\n-734 if (start + 3 > buffer_len)\n+734 if (_\bs_\bt_\ba_\br_\bt + 3 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 735 PQXX_UNLIKELY\n-736 throw_for_encoding_error(\"UTF8\", buffer, start, buffer_len - start);\n+736 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UTF8\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 737\n-738 auto const byte3{get_byte(buffer, start + 2)};\n-739 if (between_inc(byte1, 0xe0, 0xef))\n+738 auto const _\bb_\by_\bt_\be_\b3{_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 2)};\n+739 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xe0, 0xef))\n 740 {\n-741 if (between_inc(byte2, 0x80, 0xbf) and between_inc(byte3, 0x80, 0xbf))\n-742 return start + 3;\n+741 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x80, 0xbf) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b3, 0x80, 0xbf))\n+742 return _\bs_\bt_\ba_\br_\bt + 3;\n 743\n 744 PQXX_UNLIKELY\n-745 throw_for_encoding_error(\"UTF8\", buffer, start, 3);\n+745 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UTF8\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 3);\n 746 }\n 747\n-748 if (start + 4 > buffer_len)\n+748 if (_\bs_\bt_\ba_\br_\bt + 4 > _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn)\n 749 PQXX_UNLIKELY\n-750 throw_for_encoding_error(\"UTF8\", buffer, start, buffer_len - start);\n+750 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UTF8\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn - _\bs_\bt_\ba_\br_\bt);\n 751\n-752 if (between_inc(byte1, 0xf0, 0xf7))\n+752 if (_\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b1, 0xf0, 0xf7))\n 753 {\n 754 if (\n-755 between_inc(byte2, 0x80, 0xbf) and between_inc(byte3, 0x80, 0xbf) and\n-756 between_inc(get_byte(buffer, start + 3), 0x80, 0xbf))\n-757 return start + 4;\n+755 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b2, 0x80, 0xbf) _\ba_\bn_\bd _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bb_\by_\bt_\be_\b3, 0x80, 0xbf) _\ba_\bn_\bd\n+756 _\bb_\be_\bt_\bw_\be_\be_\bn_\b__\bi_\bn_\bc(_\bg_\be_\bt_\b__\bb_\by_\bt_\be(_\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt + 3), 0x80, 0xbf))\n+757 return _\bs_\bt_\ba_\br_\bt + 4;\n 758\n 759 PQXX_UNLIKELY\n-760 throw_for_encoding_error(\"UTF8\", buffer, start, 4);\n+760 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UTF8\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 4);\n 761 }\n 762\n 763 PQXX_UNLIKELY\n-764 throw_for_encoding_error(\"UTF8\", buffer, start, 1);\n+764 _\bt_\bh_\br_\bo_\bw_\b__\bf_\bo_\br_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\be_\br_\br_\bo_\br(\"UTF8\", _\bb_\bu_\bf_\bf_\be_\br, _\bs_\bt_\ba_\br_\bt, 1);\n 765 }\n 766};\n 767\n 768\n 770\n 784constexpr inline encoding_group\n-_\b7_\b8_\b5_\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp(encoding_group enc) noexcept\n+_\b7_\b8_\b5_\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp(encoding_group _\be_\bn_\bc) noexcept\n 786{\n-787 switch (enc)\n+787 switch (_\be_\bn_\bc)\n 788 {\n 789 case encoding_group::MONOBYTE:\n 790 case encoding_group::EUC_CN:\n 791 case encoding_group::EUC_JP:\n 792 case encoding_group::EUC_KR:\n 793 case encoding_group::EUC_TW:\n 794 case encoding_group::MULE_INTERNAL:\n 795 case encoding_group::UTF8:\n 796 // All these encodings are \"ASCII-safe,\" meaning that if we're looking\n 797 // for a particular ASCII character, we can safely just go through the\n 798 // string byte for byte. Multibyte characters have the high bit set.\n 799 return encoding_group::MONOBYTE;\n 800\n-801 default: PQXX_UNLIKELY return enc;\n+801 default: PQXX_UNLIKELY return _\be_\bn_\bc;\n 802 }\n 803}\n 804\n 805\n 807\n-813template\n+813template\n 814PQXX_PURE constexpr inline _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *\n-_\b8_\b1_\b5_\bg_\be_\bt_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br(encoding_group enc)\n+_\b8_\b1_\b5_\bg_\be_\bt_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br(encoding_group _\be_\bn_\bc)\n 816{\n-817 auto const as_if{_\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp(enc)};\n-818 switch (as_if)\n+817 auto const _\ba_\bs_\b__\bi_\bf{_\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp(_\be_\bn_\bc)};\n+818 switch (_\ba_\bs_\b__\bi_\bf)\n 819 {\n 820 case encoding_group::MONOBYTE:\n-821 return pqxx::internal::find_ascii_char<\n-822 encoding_group::MONOBYTE, NEEDLE...>;\n+821 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br<\n+822 encoding_group::MONOBYTE, _\bN_\bE_\bE_\bD_\bL_\bE...>;\n 823 case encoding_group::BIG5:\n-824 return pqxx::internal::find_ascii_char;\n+824 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 825 case encoding_group::GB18030:\n-826 return pqxx::internal::find_ascii_char;\n+826 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 827 case encoding_group::GBK:\n-828 return pqxx::internal::find_ascii_char;\n+828 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 829 case encoding_group::JOHAB:\n-830 return pqxx::internal::find_ascii_char;\n+830 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 831 case encoding_group::SJIS:\n-832 return pqxx::internal::find_ascii_char;\n+832 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 833 case encoding_group::UHC:\n-834 return pqxx::internal::find_ascii_char;\n+834 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 835\n 836 default:\n 837 throw _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b__\be_\br_\br_\bo_\br{_\bc_\bo_\bn_\bc_\ba_\bt(\n-838 \"Unexpected encoding group: \", as_if, \" (mapped from \", enc, \").\")};\n+838 \"Unexpected encoding group: \", _\ba_\bs_\b__\bi_\bf, \" (mapped from \", _\be_\bn_\bc, \").\")};\n 839 }\n 840}\n 841\n 842\n 844\n-847template\n+847template\n 848PQXX_PURE constexpr inline _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *\n-_\b8_\b4_\b9_\bg_\be_\bt_\b__\bs_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br(encoding_group enc)\n+_\b8_\b4_\b9_\bg_\be_\bt_\b__\bs_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br(encoding_group _\be_\bn_\bc)\n 850{\n-851 auto const as_if{_\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp(enc)};\n-852 switch (as_if)\n+851 auto const _\ba_\bs_\b__\bi_\bf{_\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp(_\be_\bn_\bc)};\n+852 switch (_\ba_\bs_\b__\bi_\bf)\n 853 {\n 854 case encoding_group::MONOBYTE:\n 855 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br<\n-856 encoding_group::MONOBYTE, NEEDLE...>;\n+856 encoding_group::MONOBYTE, _\bN_\bE_\bE_\bD_\bL_\bE...>;\n 857 case encoding_group::BIG5:\n-858 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n+858 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 859 case encoding_group::GB18030:\n 860 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br<\n-861 encoding_group::GB18030, NEEDLE...>;\n+861 encoding_group::GB18030, _\bN_\bE_\bE_\bD_\bL_\bE...>;\n 862 case encoding_group::GBK:\n-863 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n+863 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 864 case encoding_group::JOHAB:\n-865 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n+865 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 866 case encoding_group::SJIS:\n-867 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n+867 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 868 case encoding_group::UHC:\n-869 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n+869 return _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br;\n 870\n 871 default:\n 872 throw _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b__\be_\br_\br_\bo_\br{_\bc_\bo_\bn_\bc_\ba_\bt(\n-873 \"Unexpected encoding group: \", as_if, \" (mapped from \", enc, \").\")};\n+873 \"Unexpected encoding group: \", _\ba_\bs_\b__\bi_\bf, \" (mapped from \", _\be_\bn_\bc, \").\")};\n 874 }\n 875}\n 876} // namespace pqxx::internal\n 877#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\b__\be_\br_\br_\bo_\br\n Invalid argument passed to libpqxx, similar to std::invalid_argument.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn except.hxx:266\n@@ -873,14 +873,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br\n PQXX_LIBEXPORT glyph_scanner_func * get_glyph_scanner(encoding_group)\n Look up the glyph scanner function for a given encoding group.\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc\n std::size_t(std::string_view haystack, std::size_t start) char_finder_func\n Function type: \"find first occurrence of specific any of ASCII characters.\".\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encoding_group.hxx:71\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\bd_\b__\bc_\bh_\ba_\br\n std::size_t find_char(glyph_scanner_func *scanner, std::string_view haystack,\n std::size_t here=0u)\n Find any of the ASCII characters NEEDLE in haystack.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.hxx:52\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp\n constexpr encoding_group map_ascii_search_group(encoding_group enc) noexcept\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/escaping.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/escaping.html", "unified_diff": "@@ -95,30 +95,30 @@\n
\n

Writing queries as strings is easy. But sometimes you need a variable in there: ‘\"SELECT id FROM user WHERE name = &rsquo;\" + name + \"'\"`.

\n

This is dangerous. See the bug? If name can contain quotes, you may have an SQL injection vulnerability there, where users can enter nasty stuff like \"`.'; DROP TABLE user`\". Or if you're lucky, it's just a nasty bug that you discover when name happens to be \"d'Arcy\". Or... Well, I was born in a place called _'s-Gravenhage..._

\n

There are two ways of dealing with this. One is statement Statement parameters \u2014 many SQL execution functions in libpqxx let you write placeholders for variable values in your SQL, like $1, $2, etc. When you then pass your variables as the parameter values, they get substituted into the query, but in a safe form.

\n

The other is to escape the values yourself, before inserting them into your SQL. This isn't as safe as using parameters, since you need to be really conscientious about it. Use Statement parameters if you can... and libpqxx will do the escaping for you.

\n

In escaping, quotes and other problematic characters are marked as \"this is\n just a character inside the string, not the end of the string.\" There are several functions in libpqxx to do this for you.

\n-

\n+

\n SQL injection

\n

To understand what SQL injection vulnerabilities are and why they should be prevented, imagine you use the following SQL statement somewhere in your program:

\n
tx.exec(
\n
"SELECT number, amount "
\n
"FROM account "
\n
"WHERE allowed_to_see('" + userid + "','" + password + "')");
\n

This shows a logged-in user important information on all accounts he is authorized to view. The userid and password strings are variables entered by the user himself.

\n

Now, if the user is actually an attacker who knows (or can guess) the general shape of this SQL statement, imagine getting the following password:

\n
x') OR ('x' = 'x
\n

Does that make sense to you? Probably not. But if this is inserted into the SQL string by the C++ code above, the query becomes:

\n
SELECT number, amount
\n
FROM account
\n
WHERE allowed_to_see('user','x') OR ('x' = 'x')
\n

Is this what you wanted to happen? Probably not! The neat allowed_to_see() clause is completely circumvented by the \"`OR ('x' = 'x')`\" clause, which is always true. Therefore, the attacker will get to see all accounts in the database!

\n-

\n+

\n Using the esc functions

\n

Here's how you can fix the problem in the example above:

\n
tx.exec(
\n
"SELECT number, amount "
\n
"FROM account "
\n
"WHERE allowed_to_see('" + tx.esc(userid) + "', "
\n
"'" + tx.esc(password) + "')");
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/group__escaping-functions.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/group__escaping-functions.html", "unified_diff": "@@ -120,15 +120,15 @@\n \n \n \n \n
class pqxx::binarystring
\n
\n

Binary data corresponding to PostgreSQL's \"BYTEA\" binary-string type.

\n-
Deprecated:
Use bytes and bytes_view for binary data. In C++20 or better, any contiguous_range of std::byte will do.
\n+
Deprecated:
Use bytes and bytes_view for binary data. In C++20 or better, any contiguous_range of std::byte will do.
\n

This class represents a binary string as stored in a field of type bytea.

\n

Internally a binarystring is zero-terminated, but it may also contain null bytes, they're just like any other byte value. So don't assume that it's safe to treat the contents as a C-style string.

\n

The binarystring retains its value even if the result it was obtained from is destroyed, but it cannot be copied or assigned.

\n

To include a binarystring value in an SQL query, escape and quote it using the transaction's quote_raw function.

\n
Warning
This class is implemented as a reference-counting smart pointer. Copying, swapping, and destroying binarystring objects that refer to the same underlying data block is not thread-safe. If you wish to pass binarystrings around between threads, make sure that each of these operations is protected against concurrency with similar operations on the same object, or other objects pointing to the same data block.
\n
\n \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/libpq-forward_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/libpq-forward_8hxx_source.html", "unified_diff": "@@ -107,26 +107,27 @@\n
16 struct pg_conn;
\n
17 struct pg_result;
\n
18 struct pgNotify;
\n
19}
\n
20
\n
22namespace pqxx::internal::pq
\n
23{
\n-
24using PGconn = pg_conn;
\n-
25using PGresult = pg_result;
\n-
26using PGnotify = pgNotify;
\n-
27using PQnoticeProcessor = void (*)(void *, char const *);
\n+
24using PGconn = pg_conn;
\n+
25using PGresult = pg_result;
\n+
26using PGnotify = pgNotify;
\n+
27using PQnoticeProcessor = void (*)(void *, char const *);
\n
28} // namespace pqxx::internal::pq
\n
29
\n
30namespace pqxx
\n
31{
\n
33using oid = unsigned int;
\n
34} // namespace pqxx
\n
35#endif
\n
Forward declarations of libpq types as needed in libpqxx headers.
Definition util.cxx:205
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
unsigned int oid
PostgreSQL database row identifier.
Definition libpq-forward.hxx:33
\n \n \n \n
\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -13,28 +13,33 @@\n 16 struct pg_conn;\n 17 struct pg_result;\n 18 struct pgNotify;\n 19}\n 20\n 22namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bp_\bq\n 23{\n-24using PGconn = pg_conn;\n-25using PGresult = pg_result;\n-26using PGnotify = pgNotify;\n-27using PQnoticeProcessor = void (*)(void *, char const *);\n+24using PGconn = _\bp_\bg_\b__\bc_\bo_\bn_\bn;\n+25using PGresult = _\bp_\bg_\b__\br_\be_\bs_\bu_\bl_\bt;\n+26using PGnotify = _\bp_\bg_\bN_\bo_\bt_\bi_\bf_\by;\n+27using PQnoticeProcessor = _\bv_\bo_\bi_\bd (*)(void *, char const *);\n 28} // namespace pqxx::internal::pq\n 29\n 30namespace _\bp_\bq_\bx_\bx\n 31{\n _\b3_\b3using _\bo_\bi_\bd = unsigned int;\n 34} // namespace pqxx\n 35#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bp_\bq\n Forward declarations of libpq types as needed in libpqxx headers.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.cxx:205\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n _\bp_\bq_\bx_\bx_\b:_\b:_\bo_\bi_\bd\n unsigned int oid\n PostgreSQL database row identifier.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn libpq-forward.hxx:33\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx.html", "unified_diff": "@@ -920,15 +920,15 @@\n

Public Types

\n \n \n \n
struct pqxx::from_query_t
\n
\n

Marker for stream_from constructors: \"stream from query.\".

\n-
Deprecated:
Use stream_from::query() instead.
\n+
Deprecated:
Use stream_from::query() instead.
\n
\n
\n
\n \n

◆ pqxx::from_table_t

\n \n
\n@@ -936,15 +936,15 @@\n \n \n \n \n
struct pqxx::from_table_t
\n
\n

Marker for stream_from constructors: \"stream from table.\".

\n-
Deprecated:
Use stream_from::table() instead.
\n+
Deprecated:
Use stream_from::table() instead.
\n
\n
\n
\n \n

◆ pqxx::notification

\n \n
\n@@ -1073,30 +1073,30 @@\n
\n \n \n \n \n
using pqxx::connection_base = typedef connection
\n
\n-
Deprecated:
Old base class for connection. They are now the same class.
\n+
Deprecated:
Old base class for connection. They are now the same class.
\n \n
\n
\n \n

◆ fieldstream

\n \n
\n
\n \n \n \n \n
using pqxx::fieldstream = typedef basic_fieldstream<char>
\n
\n-
Deprecated:
Read a field using field::as<...>() or field::c_str().
\n+
Deprecated:
Read a field using field::as<...>() or field::c_str().
\n \n
\n
\n \n

◆ strip_t

\n \n
\n@@ -1107,15 +1107,15 @@\n \n using pqxx::strip_t = typedef std::remove_cv_t<std::remove_reference_t<TYPE> >\n \n \n
\n \n

Remove any constness, volatile, and reference-ness from a type.

\n-
Deprecated:
In C++20 we'll replace this with std::remove_cvref.
\n+
Deprecated:
In C++20 we'll replace this with std::remove_cvref.
\n \n
\n \n \n

◆ table_path

\n \n
\n@@ -1486,15 +1486,15 @@\n )\n \n \n \n
\n \n

Encrypt a password.

\n-
Deprecated:
Use connection::encrypt_password instead.
\n+
Deprecated:
Use connection::encrypt_password instead.
\n \n
\n \n \n

◆ encrypt_password() [2/2]

\n \n
\n@@ -1525,15 +1525,15 @@\n \n inline \n \n \n
\n \n

Encrypt password.

\n-
Deprecated:
Use connection::encrypt_password instead.
\n+
Deprecated:
Use connection::encrypt_password instead.
\n \n
\n \n \n

◆ from_string()

\n \n
\n@@ -1701,15 +1701,15 @@\n \n inline \n \n \n
\n \n

Write a result field to any type of stream.

\n-
Deprecated:
The C++ streams library is not great to work with. In particular, error handling is easy to get wrong. So you're probably better off doing this by hand.
\n+
Deprecated:
The C++ streams library is not great to work with. In particular, error handling is easy to get wrong. So you're probably better off doing this by hand.
\n

This can be convenient when writing a field to an output stream. More importantly, it lets you write a field to e.g. a stringstream which you can then use to read, format and convert the field in ways that to() does not support.

\n

Example: parse a field into a variable of the nonstandard long long type.

\n
extern result R;
\n
long long L;
\n
stringstream S;
\n
\n
// Write field's string into S
\n@@ -1985,15 +1985,15 @@\n \n constexpr \n \n \n
\n \n

Pass this to a stream_from constructor to stream query results.

\n-
Deprecated:
Use transaction_base::stream instead of stream_from.
\n+
Deprecated:
Use transaction_base::stream instead of stream_from.
\n \n
\n
\n \n

◆ from_table

\n \n
\n@@ -2010,15 +2010,15 @@\n \n constexpr \n \n \n
\n \n

Pass this to a stream_from constructor to stream table contents.

\n-
Deprecated:
Use transaction_base::stream instead of stream_from.
\n+
Deprecated:
Use transaction_base::stream instead of stream_from.
\n \n
\n \n \n

◆ has_generic_bytes_char_traits

\n \n
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal.html", "unified_diff": "@@ -196,32 +196,32 @@\n class  stream_query_input_iterator\n  Input iterator for stream_query. More...
\n  \n \n \n \n-\n+template<typenameT > \n+\n \n \n-\n+\n \n \n-\n+\n \n \n \n-\n+template<typenameCALLABLE > \n+\n \n \n \n-\n+\n \n \n

\n Typedefs

\n-template<typename T >
using composite_field_parser = void(*)(std::size_t &index, std::string_view input, std::size_t &pos, T &field, std::size_t last_field)
using composite_field_parser = void(*)(std::size_t &index, std::string_view input, std::size_t &pos, T &field, std::size_t last_field)
 Pointer to an encoding-specific specialisation of parse_composite_field.
 
using glyph_scanner_func = std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start)
using glyph_scanner_func = std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start)
 Function type: \"find the end of the current glyph.\".
 
using char_finder_func = std::size_t(std::string_view haystack, std::size_t start)
using char_finder_func = std::size_t(std::string_view haystack, std::size_t start)
 Function type: \"find first occurrence of specific any of ASCII characters.\".
 
\n-template<typename CALLABLE >
using args_t = decltype(args_f(std::declval< CALLABLE >()))
using args_t = decltype(args_f(std::declval< CALLABLE >()))
 A callable's parameter types, as a tuple.
 
\n template<typename... TYPES>
using strip_types_t = decltype(strip_types(std::declval< TYPES... >()))
using strip_types_t = decltype(strip_types(std::declval< TYPES... >()))
 Take a tuple type and apply strip_t to its component types.
 
\n \n \n \n

\n Enumerations

enum class  encoding_group {
\n   MONOBYTE\n@@ -243,299 +243,299 @@\n
\n }
 
\n \n \n+pqxx::internal::encoding_group \n \n \n \n+ \n \n \n+encoding_group \n \n \n \n+std::string \n \n \n \n+void \n \n \n \n+void \n \n \n-\n+\n \n \n \n-\n+template<typenameT > \n+\n \n \n \n+template std::string \n \n \n+template std::string \n \n \n+template std::string \n \n \n+ \n \n-\n+\n \n \n \n-\n+\n \n \n-\n+\n \n \n \n-\n+\n \n \n \n-\n+\n \n \n-\n-\n+\n+\n \n \n \n \n \n \n \n-\n+template<typenameT > \n+\n \n \n \n-\n+template<typenameT > \n+\n \n \n-\n+template<typenameTYPE > \n+\n \n \n \n-\n+\n \n \n \n+constexprchar \n \n \n \n+constexprint \n \n \n \n-\n+template<typenameHAVE , typenameNEED > \n+\n \n \n-\n+template<typenameT > \n+\n \n \n \n-\n+template<typenameT > \n+\n \n \n \n+PQXX_PURE charconst * \n \n \n \n \n \n \n-\n+\n \n \n-\n-\n+\n+\n \n \n \n-\n+\n \n \n-\n+\n \n \n \n-\n+\n \n \n \n-\n+\n \n \n \n \n \n+PQXX_LIBEXPORT result \n \n \n-\n+\n \n \n-\n+\n \n-\n+\n \n \n \n+PQXX_LIBEXPORT void \n \n \n \n+PQXX_LIBEXPORT void \n \n \n \n-\n+template<typenameLEFT , typenameRIGHT > \n+\n \n \n \n-\n+template<typenameLEFT , typenameRIGHT > \n+\n \n \n \n-\n+template<typenameLEFT , typenameRIGHT > \n+\n \n \n \n-\n+template<typenameLEFT , typenameRIGHT > \n+\n \n \n-\n+\n \n \n-\n-\n+\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n-\n+\n \n \n \n+std::string PQXX_LIBEXPORT \n \n \n \n+void PQXX_LIBEXPORT \n \n \n \n+bytes PQXX_LIBEXPORT \n \n \n \n-\n+template<typenameT > \n+\n \n \n-\n-\n+\n+\n \n \n-\n-\n+\n+\n \n \n-\n-\n+\n+\n \n \n-\n-\n+\n+\n \n \n \n-\n+\n \n \n \n+constexprchar \n \n \n \n-\n+\n \n \n-\n+\n \n \n \n+constexprcharconst * \n \n \n \n-\n+\n \n \n \n+constexprcharconst * \n \n \n \n+charconst * \n \n \n

\n Functions

\n-pqxx::internal::encoding_group enc_group (std::string_view encoding_name)
enc_group (std::string_view encoding_name)
 Convert libpq encoding name to its libpqxx encoding group.
 
\n- __attribute__ ((pure)) char const *name_encoding(int encoding_id)
__attribute__ ((pure)) char const *name_encoding(int encoding_id)
 
\n-encoding_group enc_group (int)
enc_group (int)
 Convert libpq encoding enum value to its libpqxx group.
 
\n-std::string demangle_type_name (char const [])
demangle_type_name (char const [])
 Attempt to demangle std::type_info::name() to something human-readable.
 
\n-void throw_null_conversion (std::string const &type)
throw_null_conversion (std::string const &type)
 Throw exception for attempt to convert SQL NULL to given type.
 
\n-void throw_null_conversion (std::string_view type)
throw_null_conversion (std::string_view type)
 Throw exception for attempt to convert SQL NULL to given type.
 
std::string state_buffer_overrun (int have_bytes, int need_bytes)
std::string state_buffer_overrun (int have_bytes, int need_bytes)
 Summarize buffer overrun.
 
\n-template<typename T >
std::string to_string_float (T value)
std::string to_string_float (T value)
 Floating-point implementations for pqxx::to_string().
 
\n-template std::string to_string_float (float)
to_string_float (float)
 
\n-template std::string to_string_float (double)
to_string_float (double)
 
\n-template std::string to_string_float (long double)
to_string_float (long double)
 
\n- __attribute__ ((visibility("default"))) int check_pqxx_version_7_10() noexcept
__attribute__ ((visibility("default"))) int check_pqxx_version_7_10() noexcept
 
void PQXX_COLD PQXX_LIBEXPORT skip_init_ssl (int skips) noexcept
void PQXX_COLD PQXX_LIBEXPORT skip_init_ssl (int skips) noexcept
 Control OpenSSL/crypto library initialisation.
 
template<encoding_group ENC>
std::size_t scan_double_quoted_string (char const input[], std::size_t size, std::size_t pos)
std::size_t scan_double_quoted_string (char const input[], std::size_t size, std::size_t pos)
 
\n template<encoding_group ENC>
std::string parse_double_quoted_string (char const input[], std::size_t end, std::size_t pos)
std::string parse_double_quoted_string (char const input[], std::size_t end, std::size_t pos)
 Un-quote and un-escape a double-quoted SQL string.
 
template<pqxx::internal::encoding_group ENC, char... STOP>
std::size_t scan_unquoted_string (char const input[], std::size_t size, std::size_t pos)
std::size_t scan_unquoted_string (char const input[], std::size_t size, std::size_t pos)
 Find the end of an unquoted string in an array or composite-type value.
 
\n template<pqxx::internal::encoding_group ENC>
std::string_view parse_unquoted_string (char const input[], std::size_t end, std::size_t pos)
std::string_view parse_unquoted_string (char const input[], std::size_t end, std::size_t pos)
 Parse an unquoted array entry or cfield of a composite-type field.
 
template<encoding_group ENC, typename T >
void parse_composite_field (std::size_t &index, std::string_view input, std::size_t &pos, T &field, std::size_t last_field)
template<encoding_group ENC, typename T >
void parse_composite_field (std::size_t &index, std::string_view input, std::size_t &pos, T &field, std::size_t last_field)
 Parse a field of a composite-type value.
 
\n template<typename T >
composite_field_parser< T > specialize_parse_composite_field (encoding_group enc)
 Look up implementation of parse_composite_field for ENC.
 
\n-template<typename T >
std::size_t size_composite_field_buffer (T const &field)
std::size_t size_composite_field_buffer (T const &field)
 Conservatively estimate buffer size needed for a composite field.
 
\n-template<typename T >
void write_composite_field (char *&pos, char *end, T const &field)
void write_composite_field (char *&pos, char *end, T const &field)
 
\n-template<typename TYPE >
void render_item (TYPE const &item, char *&here, char *end)
void render_item (TYPE const &item, char *&here, char *end)
 Convert item to a string, write it into [here, end).
 
template<typename... TYPE>
std::string concat (TYPE... item)
std::string concat (TYPE... item)
 Efficiently combine a bunch of items into one big string.
 
\n-constexpr char number_to_digit (int i) noexcept
number_to_digit (int i) noexcept
 Convert a number in [0, 9] to its ASCII digit.
 
\n-constexpr int digit_to_number (char c) noexcept
digit_to_number (char c) noexcept
 Compute numeric value of given textual digit (assuming that it is a digit).
 
\n-template<typename HAVE , typename NEED >
std::string state_buffer_overrun (HAVE have_bytes, NEED need_bytes)
std::string state_buffer_overrun (HAVE have_bytes, NEED need_bytes)
 
\n-template<typename T >
PQXX_LIBEXPORT std::string to_string_float (T)
PQXX_LIBEXPORT std::string to_string_float (T)
 Floating-point implementations for pqxx::to_string().
 
\n-template<typename T >
char * generic_into_buf (char *begin, char *end, T const &value)
chargeneric_into_buf (char *begin, char *end, T const &value)
 Generic implementation for into_buf, on top of to_buf.
 
\n-PQXX_PURE char const * name_encoding (int encoding_id)
name_encoding (int encoding_id)
 Return PostgreSQL's name for encoding enum value.
 
PQXX_LIBEXPORT glyph_scanner_funcget_glyph_scanner (encoding_group)
 Look up the glyph scanner function for a given encoding group.
 
template<char... NEEDLE>
std::size_t find_char (glyph_scanner_func *scanner, std::string_view haystack, std::size_t here=0u)
std::size_t find_char (glyph_scanner_func *scanner, std::string_view haystack, std::size_t here=0u)
 Find any of the ASCII characters NEEDLE in haystack.
 
template<typename CALLABLE >
void for_glyphs (encoding_group enc, CALLABLE callback, char const buffer[], std::size_t buffer_len, std::size_t start=0)
template<typename CALLABLE >
void for_glyphs (encoding_group enc, CALLABLE callback, char const buffer[], std::size_t buffer_len, std::size_t start=0)
 Iterate over the glyphs in a buffer.
 
template<encoding_group ENC, char... NEEDLE>
PQXX_PURE std::size_t find_s_ascii_char (std::string_view haystack, std::size_t here)
PQXX_PURE std::size_t find_s_ascii_char (std::string_view haystack, std::size_t here)
 Find first of NEEDLE ASCII chars in haystack.
 
constexpr encoding_group map_ascii_search_group (encoding_group enc) noexcept
constexpr encoding_group map_ascii_search_group (encoding_group enc) noexcept
 Just for searching an ASCII character, what encoding can we use here?
 
template<char... NEEDLE>
PQXX_PURE constexpr char_finder_funcget_char_finder (encoding_group enc)
PQXX_PURE constexpr char_finder_funcget_char_finder (encoding_group enc)
 Look up a character search function for an encoding group.
 
template<char... NEEDLE>
PQXX_PURE constexpr char_finder_funcget_s_char_finder (encoding_group enc)
PQXX_PURE constexpr char_finder_funcget_s_char_finder (encoding_group enc)
 Look up a \"sentry\" character search function for an encoding group.
 
\n PQXX_LIBEXPORT result_size_type obtain_stateless_cursor_size (sql_cursor &)
 
\n-PQXX_LIBEXPORT result stateless_cursor_retrieve (sql_cursor &, result::difference_type size, result::difference_type begin_pos, result::difference_type end_pos)
stateless_cursor_retrieve (sql_cursor &, result::difference_type size, result::difference_type begin_pos, result::difference_type end_pos)
 
\n template<typename... TYPE>
bool operator== (stream_query_end_iterator, stream_query_input_iterator< TYPE... > const &i)
bool operator== (stream_query_end_iterator, stream_query_input_iterator< TYPE... > const &i)
 
\n template<typename... TYPE>
bool operator!= (stream_query_end_iterator, stream_query_input_iterator< TYPE... > const &i)
bool operator!= (stream_query_end_iterator, stream_query_input_iterator< TYPE... > const &i)
 
void PQXX_LIBEXPORT wait_for (unsigned int microseconds)
void PQXX_LIBEXPORT wait_for (unsigned int microseconds)
 Wait.
 
\n-PQXX_LIBEXPORT void wait_fd (int fd, bool for_read, bool for_write, unsigned seconds=1, unsigned microseconds=0)
wait_fd (int fd, bool for_read, bool for_write, unsigned seconds=1, unsigned microseconds=0)
 Wait for a socket to be ready for reading/writing, or timeout.
 
\n-PQXX_LIBEXPORT void clear_result (pq::PGresult const *) noexcept
clear_result (pq::PGresult const *) noexcept
 C++ wrapper for libpq's PQclear.
 
\n-template<typename LEFT , typename RIGHT >
constexpr bool cmp_less (LEFT lhs, RIGHT rhs) noexcept
constexpr bool cmp_less (LEFT lhs, RIGHT rhs) noexcept
 Same as std::cmp_less, or a workaround where that's not available.
 
\n-template<typename LEFT , typename RIGHT >
constexpr bool cmp_greater (LEFT lhs, RIGHT rhs) noexcept
constexpr bool cmp_greater (LEFT lhs, RIGHT rhs) noexcept
 C++20 std::cmp_greater, or workaround if not available.
 
\n-template<typename LEFT , typename RIGHT >
constexpr bool cmp_less_equal (LEFT lhs, RIGHT rhs) noexcept
constexpr bool cmp_less_equal (LEFT lhs, RIGHT rhs) noexcept
 C++20 std::cmp_less_equal, or workaround if not available.
 
\n-template<typename LEFT , typename RIGHT >
constexpr bool cmp_greater_equal (LEFT lhs, RIGHT rhs) noexcept
constexpr bool cmp_greater_equal (LEFT lhs, RIGHT rhs) noexcept
 C++20 std::cmp_greater_equal, or workaround if not available.
 
std::string cat2 (std::string_view x, std::string_view y)
std::string cat2 (std::string_view x, std::string_view y)
 Efficiently concatenate two strings.
 
template<typename CHAR >
constexpr bool is_digit (CHAR c) noexcept
template<typename CHAR >
constexpr bool is_digit (CHAR c) noexcept
 A safer and more generic replacement for std::isdigit.
 
std::string describe_object (std::string_view class_name, std::string_view name)
std::string describe_object (std::string_view class_name, std::string_view name)
 Describe an object for humans, based on class name and optional name.
 
void check_unique_register (void const *old_guest, std::string_view old_class, std::string_view old_name, void const *new_guest, std::string_view new_class, std::string_view new_name)
void check_unique_register (void const *old_guest, std::string_view old_class, std::string_view old_name, void const *new_guest, std::string_view new_class, std::string_view new_name)
 Check validity of registering a new \"guest\" in a \"host.\".
 
void check_unique_unregister (void const *old_guest, std::string_view old_class, std::string_view old_name, void const *new_guest, std::string_view new_class, std::string_view new_name)
void check_unique_unregister (void const *old_guest, std::string_view old_class, std::string_view old_name, void const *new_guest, std::string_view new_class, std::string_view new_name)
 Like check_unique_register, but for un-registering a guest.
 
constexpr std::size_t size_esc_bin (std::size_t binary_bytes) noexcept
constexpr std::size_t size_esc_bin (std::size_t binary_bytes) noexcept
 Compute buffer size needed to escape binary data for use as a BYTEA.
 
constexpr std::size_t size_unesc_bin (std::size_t escaped_bytes) noexcept
constexpr std::size_t size_unesc_bin (std::size_t escaped_bytes) noexcept
 Compute binary size from the size of its escaped version.
 
void PQXX_LIBEXPORT esc_bin (bytes_view binary_data, char buffer[]) noexcept
void PQXX_LIBEXPORT esc_bin (bytes_view binary_data, char buffer[]) noexcept
 Hex-escape binary data into a buffer.
 
\n-std::string PQXX_LIBEXPORT esc_bin (bytes_view binary_data)
esc_bin (bytes_view binary_data)
 Hex-escape binary data into a std::string.
 
\n-void PQXX_LIBEXPORT unesc_bin (std::string_view escaped_data, std::byte buffer[])
unesc_bin (std::string_view escaped_data, std::byte buffer[])
 Reconstitute binary data from its escaped version.
 
\n-bytes PQXX_LIBEXPORT unesc_bin (std::string_view escaped_data)
unesc_bin (std::string_view escaped_data)
 Reconstitute binary data from its escaped version.
 
\n-template<typename T >
auto ssize (T const &c)
auto ssize (T const &c)
 Transitional: std::ssize(), or custom implementation if not available.
 
template<typename RETURN , typename... ARGS>
std::tuple< ARGS... > args_f (RETURN(&func)(ARGS...))
template<typename RETURN , typename... ARGS>
std::tuple< ARGS... > args_f (RETURN(&func)(ARGS...))
 Helper for determining a function's parameter types.
 
template<typename RETURN , typename... ARGS>
std::tuple< ARGS... > args_f (std::function< RETURN(ARGS...)> const &)
template<typename RETURN , typename... ARGS>
std::tuple< ARGS... > args_f (std::function< RETURN(ARGS...)> const &)
 Helper for determining a std::function's parameter types.
 
template<typename CLASS , typename RETURN , typename... ARGS>
std::tuple< ARGS... > member_args_f (RETURN(CLASS::*)(ARGS...))
template<typename CLASS , typename RETURN , typename... ARGS>
std::tuple< ARGS... > member_args_f (RETURN(CLASS::*)(ARGS...))
 Helper for determining a member function's parameter types.
 
template<typename CALLABLE >
auto args_f (CALLABLE const &f) -> decltype(member_args_f(&CALLABLE::operator()))
template<typename CALLABLE >
auto args_f (CALLABLE const &f) -> decltype(member_args_f(&CALLABLE::operator()))
 Helper for determining a callable type's parameter types.
 
template<typename... TYPES>
std::tuple< strip_t< TYPES >... > strip_types (std::tuple< TYPES... > const &)
std::tuple< strip_t< TYPES >... > strip_types (std::tuple< TYPES... > const &)
 Helper: Apply strip_t to each of a tuple type's component types.
 
\n-constexpr char unescape_char (char escaped) noexcept
unescape_char (char escaped) noexcept
 Return original byte for escaped character.
 
\n template<std::size_t BYTES>
char const *PQXX_COLD error_string (int err_num, std::array< char, BYTES > &buffer)
char const *PQXX_COLD error_string (int err_num, std::array< char, BYTES > &buffer)
 Get error string for a given errno value.
 
PQXX_LIBEXPORT int check_pqxx_version_7_10 () noexcept
PQXX_LIBEXPORT int check_pqxx_version_7_10 () noexcept
 Library version check stub.
 
\n-constexpr char const * as_c_string (char const str[]) noexcept
as_c_string (char const str[]) noexcept
 Get a raw C string pointer.
 
\n template<std::size_t N>
constexpr char const * as_c_string (char(&str)[N]) noexcept
constexpr char constas_c_string (char(&str)[N]) noexcept
 Get a raw C string pointer.
 
\n-constexpr char const * as_c_string (pqxx::zview str) noexcept
as_c_string (pqxx::zview str) noexcept
 Get a raw C string pointer.
 
\n-char const * as_c_string (std::string const &str) noexcept
as_c_string (std::string const &str) noexcept
 Get a raw C string pointer.
 
\n \n \n+constexprchar \n \n-\n-\n+\n+\n \n

\n Variables

\n-constexpr char empty_composite_str [] {"()"}
empty_composite_str [] {"()"}
 
template<typename ITERATOR >
constexpr auto const iterator_identity
template<typename ITERATOR >
constexpr auto const iterator_identity
 
\n

Detailed Description

\n

Internal items for libpqxx' own use. Do not use these yourself.

\n

Private namespace for libpqxx's internal use; do not access.

\n

Version check.

\n

Copyright (c) 2000-2024, Jeroen T. Vermeulen.

\n@@ -575,15 +575,15 @@\n \n

◆ char_finder_func

\n \n
\n
\n \n \n- \n+ \n \n
using pqxx::internal::char_finder_func = typedef std::size_t(std::string_view haystack, std::size_t start)using pqxx::internal::char_finder_func = typedef std::size_t(std::string_view haystack, std::size_t start)
\n
\n \n

Function type: \"find first occurrence of specific any of ASCII characters.\".

\n

This type of function takes a text buffer, and a location in that buffer, and returns the location of the first occurrence within that string of any of a specific set of ASCII characters.

\n

For efficiency, it's up to the function to know which those special ASCII characters are.

\n@@ -595,15 +595,15 @@\n \n

◆ glyph_scanner_func

\n \n
\n
\n \n \n- \n+ \n \n
using pqxx::internal::glyph_scanner_func = typedef std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start)using pqxx::internal::glyph_scanner_func = typedef std::size_t(char const buffer[], std::size_t buffer_len, std::size_t start)
\n
\n \n

Function type: \"find the end of the current glyph.\".

\n

This type of function takes a text buffer, and a location in that buffer, and returns the location one byte past the end of the current glyph.

\n

The start offset marks the beginning of the current glyph. It must fall within the buffer.

\n@@ -614,22 +614,22 @@\n

Function Documentation

\n \n

◆ args_f() [1/3]

\n \n
\n
\n
\n-template<typename CALLABLE >
\n+template<typename CALLABLE >
\n \n \n- \n+ \n \n- \n+ \n \n- \n+ \n \n
auto pqxx::internal::args_f auto pqxx::internal::args_f (CALLABLE const & CALLABLE constf) -> decltype(member_args_f(&CALLABLE::operator())) -> decltype(member_args_f(&CALLABLE::operator()))
\n
\n \n

Helper for determining a callable type's parameter types.

\n

This specialisation should work for lambdas.

\n

This function has no definition. It's not meant to be actually called. It's just there for pattern-matching in the compiler, so we can use its hypothetical return value.

\n@@ -638,20 +638,20 @@\n
\n \n

◆ args_f() [2/3]

\n \n
\n
\n
\n-template<typename RETURN , typename... ARGS>
\n+template<typename RETURN , typename... ARGS>
\n \n \n \n \n- \n+ \n \n \n \n
std::tuple< ARGS... > pqxx::internal::args_f (RETURN(&)(ARGS...) RETURN(&)(ARGS...) func)
\n
\n \n

Helper for determining a function's parameter types.

\n@@ -661,20 +661,20 @@\n
\n \n

◆ args_f() [3/3]

\n \n
\n
\n
\n-template<typename RETURN , typename... ARGS>
\n+template<typename RETURN , typename... ARGS>
\n \n \n \n \n- \n+ \n \n \n \n
std::tuple< ARGS... > pqxx::internal::args_f (std::function< RETURN(ARGS...)> const & std::function< RETURN(ARGS...)> const)
\n
\n \n

Helper for determining a std::function's parameter types.

\n@@ -713,29 +713,29 @@\n \n inline \n \n \n
\n \n

Efficiently concatenate two strings.

\n-

This is a special case of concatenate(), needed because dependency management does not let us use that function here.

\n+

This is a special case of concatenate(), needed because dependency management does not let us use that function here.

\n \n
\n
\n \n

◆ check_pqxx_version_7_10()

\n \n
\n
\n \n \n \n
\n \n \n- \n+ \n \n \n \n \n
PQXX_LIBEXPORT int pqxx::internal::check_pqxx_version_7_10 PQXX_LIBEXPORT int pqxx::internal::check_pqxx_version_7_10 ()
\n
\n@@ -755,17 +755,17 @@\n \n

◆ check_unique_register()

\n \n
\n
\n \n \n- \n+ \n \n- \n+ \n \n \n \n \n \n \n \n@@ -775,15 +775,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -812,17 +812,17 @@\n \n

◆ check_unique_unregister()

\n \n
\n
\n
void pqxx::internal::check_unique_register void pqxx::internal::check_unique_register (void const * void constold_guest,
std::string_view old_class, std::string_view old_name,
void const * void constnew_guest,
std::string_view new_class,
\n \n- \n+ \n \n- \n+ \n \n \n \n \n \n \n \n@@ -832,15 +832,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -933,23 +933,23 @@\n
\n
\n
void pqxx::internal::check_unique_unregister void pqxx::internal::check_unique_unregister (void const * void constold_guest,
std::string_view old_class, std::string_view old_name,
void const * void constnew_guest,
std::string_view new_class,
\n \n
\n \n \n- \n+ \n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1049,35 +1049,35 @@\n \n \n

◆ for_glyphs()

\n \n
\n
\n
\n-template<typename CALLABLE >
\n+template<typename CALLABLE >
\n
void pqxx::internal::esc_bin void pqxx::internal::esc_bin (bytes_view binary_data,
char char buffer[] 
)
\n \n
\n \n \n- \n+ \n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1114,15 +1114,15 @@\n
\n template<char... NEEDLE>
\n
void pqxx::internal::for_glyphs void pqxx::internal::for_glyphs (encoding_group enc,
CALLABLE CALLABLE callback,
char const char const buffer[],
std::size_t buffer_len,
\n \n \n@@ -1167,15 +1167,15 @@\n
\n template<char... NEEDLE>
\n
\n \n \n- \n+ \n \n \n \n \n \n
PQXX_PURE constexpr char_finder_func * pqxx::internal::get_char_finder PQXX_PURE constexpr char_finder_func * pqxx::internal::get_char_finder (encoding_group enc)
\n
\n \n \n@@ -1192,23 +1192,23 @@\n \n \n

◆ is_digit()

\n \n
\n
\n
\n-template<typename CHAR >
\n+template<typename CHAR >
\n
\n \n \n- \n+ \n \n \n \n \n \n
PQXX_PURE constexpr char_finder_func * pqxx::internal::get_s_char_finder PQXX_PURE constexpr char_finder_func * pqxx::internal::get_s_char_finder (encoding_group enc)
\n
\n \n \n \n@@ -1227,15 +1227,15 @@\n
\n
\n
\n \n \n- \n+ \n \n- \n+ \n \n \n \n
constexpr bool pqxx::internal::is_digit constexpr bool pqxx::internal::is_digit (CHAR CHAR c)
\n
\n inlineconstexprnoexcept
\n \n \n@@ -1254,20 +1254,20 @@\n \n \n

◆ member_args_f()

\n \n
\n
\n
\n-template<typename CLASS , typename RETURN , typename... ARGS>
\n+template<typename CLASS , typename RETURN , typename... ARGS>
\n
\n \n \n- \n+ \n \n \n \n \n \n
constexpr encoding_group pqxx::internal::map_ascii_search_group constexpr encoding_group pqxx::internal::map_ascii_search_group (encoding_group enc)
\n
\n \n \n \n- \n+ \n \n \n \n
std::tuple< ARGS... > pqxx::internal::member_args_f (RETURN(CLASS::*)(ARGS...) RETURN(CLASS::*)(ARGS...) )
\n
\n \n

Helper for determining a member function's parameter types.

\n@@ -1278,21 +1278,21 @@\n
\n \n

◆ parse_composite_field()

\n \n
\n
\n
\n-template<encoding_group ENC, typename T >
\n+template<encoding_group ENC, typename T >
\n \n \n
\n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1304,15 +1304,15 @@\n \n \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1359,15 +1359,15 @@\n
void pqxx::internal::parse_composite_field void pqxx::internal::parse_composite_field (std::size_t & index,
std::size_t & pos,
T & Tfield,
std::size_t last_field 
\n \n
\n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1406,15 +1406,15 @@\n
std::size_t pqxx::internal::scan_double_quoted_string (char const char const input[],
std::size_t size,
\n \n
\n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1450,15 +1450,15 @@\n
\n
\n
std::size_t pqxx::internal::scan_unquoted_string (char const char const input[],
std::size_t size,
\n \n \n@@ -1479,15 +1479,15 @@\n
\n
\n
\n \n \n- \n+ \n \n \n \n \n \n
constexpr std::size_t pqxx::internal::size_esc_bin constexpr std::size_t pqxx::internal::size_esc_bin (std::size_t binary_bytes)
\n
\n \n \n@@ -1508,17 +1508,17 @@\n
\n
\n
\n \n \n- \n+ \n \n \n \n \n \n
constexpr std::size_t pqxx::internal::size_unesc_bin constexpr std::size_t pqxx::internal::size_unesc_bin (std::size_t escaped_bytes)
\n
\n \n \n \n@@ -1543,21 +1543,21 @@\n \n
\n
\n
\n \n \n- \n+ \n \n- \n+ \n \n \n \n
void PQXX_COLD PQXX_LIBEXPORT pqxx::internal::skip_init_ssl void PQXX_COLD PQXX_LIBEXPORT pqxx::internal::skip_init_ssl (int int skips)
\n
\n noexcept
\n \n \n \n- \n+ \n \n \n \n \n \n- \n+ \n \n \n \n \n \n \n \n@@ -1574,17 +1574,17 @@\n \n
\n
\n
\n template<typename... TYPES>
\n
std::string PQXX_LIBEXPORT pqxx::internal::state_buffer_overrun (int int have_bytes,
int int need_bytes 
)
\n \n- \n+ \n \n- \n+ \n \n \n \n
std::tuple< strip_t< TYPES >... > pqxx::internal::strip_types std::tuple< strip_t< TYPES >... > pqxx::internal::strip_types (std::tuple< TYPES... > const & std::tuple< TYPES... > const)
\n
\n \n

Helper: Apply strip_t to each of a tuple type's component types.

\n@@ -1595,17 +1595,17 @@\n \n

◆ wait_for()

\n \n
\n
\n \n \n- \n+ \n \n- \n+ \n \n \n \n
void pqxx::internal::wait_for void pqxx::internal::wait_for (unsigned int unsigned int microseconds)
\n
\n \n

Wait.

\n@@ -1616,21 +1616,21 @@\n

Variable Documentation

\n \n

◆ iterator_identity

\n \n
\n
\n
\n-template<typename ITERATOR >
\n+template<typename ITERATOR >
\n \n \n \n \n \n
\n \n \n- \n+ \n \n
constexpr auto const pqxx::internal::iterator_identityconstexpr auto const pqxx::internal::iterator_identity
\n
\n inlineconstexpr
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -93,396 +93,396 @@\n class \u00a0 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n \u00a0 The end() iterator for a _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n class \u00a0 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n \u00a0 Input iterator for _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd_\b_p\bpa\bar\brs\bse\ber\br = void(*)(std::size_t &index, std::string_view\n- input, std::size_t &pos, T &_\bf_\bi_\be_\bl_\bd, std::size_t last_field)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd_\b_p\bpa\bar\brs\bse\ber\br = _\bv_\bo_\bi_\bd(*)(std::size_t &index, std::string_view\n+ _\bi_\bn_\bp_\bu_\bt, std::size_t &pos, _\bT &_\bf_\bi_\be_\bl_\bd, std::size_t _\bl_\ba_\bs_\bt_\b__\bf_\bi_\be_\bl_\bd)\n \u00a0 Pointer to an encoding-specific specialisation of parse_composite_field.\n \u00a0\n-using\u00a0 _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc = std::size_t(char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bu_\bs_\bi_\bn_\bg\u00a0 _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc = std::size_t(_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0 Function type: \"find the end of the current glyph.\".\n \u00a0\n-using\u00a0 _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc = std::size_t(std::string_view haystack, std::size_t\n- start)\n+_\bu_\bs_\bi_\bn_\bg\u00a0 _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc = std::size_t(std::string_view _\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk, std::size_t\n+ _\bs_\bt_\ba_\br_\bt)\n \u00a0 Function type: \"find first occurrence of specific any of ASCII\n characters.\".\n \u00a0\n-template\n-using\u00a0 a\bar\brg\bgs\bs_\b_t\bt = decltype(_\ba_\br_\bg_\bs_\b__\bf(std::declval< CALLABLE >()))\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 a\bar\brg\bgs\bs_\b_t\bt = _\bd_\be_\bc_\bl_\bt_\by_\bp_\be(_\ba_\br_\bg_\bs_\b__\bf(std::declval< _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE >()))\n \u00a0 A callable's parameter types, as a tuple.\n \u00a0\n template\n-using\u00a0 s\bst\btr\bri\bip\bp_\b_t\bty\byp\bpe\bes\bs_\b_t\bt = decltype(_\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs(std::declval< TYPES... >()))\n+_\bu_\bs_\bi_\bn_\bg\u00a0 s\bst\btr\bri\bip\bp_\b_t\bty\byp\bpe\bes\bs_\b_t\bt = _\bd_\be_\bc_\bl_\bt_\by_\bp_\be(_\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs(std::declval< TYPES... >()))\n \u00a0 Take a tuple type and apply _\bs_\bt_\br_\bi_\bp_\b__\bt to its component types.\n \u00a0\n E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n enum class \u00a0 e\ben\bnc\bco\bod\bdi\bin\bng\bg_\b_g\bgr\bro\bou\bup\bp {\n \u00a0\u00a0M\bMO\bON\bNO\bOB\bBY\bYT\bTE\bE , B\bBI\bIG\bG5\b5 , E\bEU\bUC\bC_\b_C\bCN\bN , E\bEU\bUC\bC_\b_J\bJP\bP ,\n \u00a0\u00a0E\bEU\bUC\bC_\b_K\bKR\bR , E\bEU\bUC\bC_\b_T\bTW\bW , G\bGB\bB1\b18\b80\b03\b30\b0 , G\bGB\bBK\bK ,\n \u00a0\u00a0J\bJO\bOH\bHA\bAB\bB , M\bMU\bUL\bLE\bE_\b_I\bIN\bNT\bTE\bER\bRN\bNA\bAL\bL , S\bSJ\bJI\bIS\bS , U\bUH\bHC\bC ,\n \u00a0\u00a0U\bUT\bTF\bF8\b8\n }\n \u00a0\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n pqxx::internal::encoding_group\u00a0 e\ben\bnc\bc_\b_g\bgr\bro\bou\bup\bp (std::string_view\n- encoding_name)\n+ _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bn_\ba_\bm_\be)\n \u00a0 Convert libpq encoding name to its\n libpqxx encoding group.\n \u00a0\n- \u00a0 _\b__\b_a\bat\btt\btr\bri\bib\bbu\but\bte\be_\b__\b_ ((pure)) char const\n- *_\bn_\ba_\bm_\be_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg(int encoding_id)\n+ \u00a0 _\b__\b_a\bat\btt\btr\bri\bib\bbu\but\bte\be_\b__\b_ ((_\bp_\bu_\br_\be)) _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt\n+ *_\bn_\ba_\bm_\be_\b__\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg(_\bi_\bn_\bt encoding_id)\n \u00a0\n- encoding_group\u00a0 e\ben\bnc\bc_\b_g\bgr\bro\bou\bup\bp (int)\n+ encoding_group\u00a0 e\ben\bnc\bc_\b_g\bgr\bro\bou\bup\bp (_\bi_\bn_\bt)\n \u00a0 Convert libpq encoding enum value to\n its libpqxx group.\n \u00a0\n- std::string\u00a0 d\bde\bem\bma\ban\bng\bgl\ble\be_\b_t\bty\byp\bpe\be_\b_n\bna\bam\bme\be (char const [])\n+ std::string\u00a0 d\bde\bem\bma\ban\bng\bgl\ble\be_\b_t\bty\byp\bpe\be_\b_n\bna\bam\bme\be (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt [])\n \u00a0 Attempt to demangle std::type_info::\n name() to something human-readable.\n \u00a0\n- void\u00a0 t\bth\bhr\bro\bow\bw_\b_n\bnu\bul\bll\bl_\b_c\bco\bon\bnv\bve\ber\brs\bsi\bio\bon\bn (std::string\n- const &type)\n+ _\bv_\bo_\bi_\bd\u00a0 t\bth\bhr\bro\bow\bw_\b_n\bnu\bul\bll\bl_\b_c\bco\bon\bnv\bve\ber\brs\bsi\bio\bon\bn (std::string\n+ _\bc_\bo_\bn_\bs_\bt &type)\n \u00a0 Throw exception for attempt to convert\n SQL NULL to given type.\n \u00a0\n- void\u00a0 t\bth\bhr\bro\bow\bw_\b_n\bnu\bul\bll\bl_\b_c\bco\bon\bnv\bve\ber\brs\bsi\bio\bon\bn (std::string_view\n+ _\bv_\bo_\bi_\bd\u00a0 t\bth\bhr\bro\bow\bw_\b_n\bnu\bul\bll\bl_\b_c\bco\bon\bnv\bve\ber\brs\bsi\bio\bon\bn (std::string_view\n type)\n \u00a0 Throw exception for attempt to convert\n SQL NULL to given type.\n \u00a0\n- std::string\u00a0 _\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn (int have_bytes,\n- int need_bytes)\n+ std::string\u00a0 _\bs_\bt_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bo_\bv_\be_\br_\br_\bu_\bn (_\bi_\bn_\bt _\bh_\ba_\bv_\be_\b__\bb_\by_\bt_\be_\bs,\n+ _\bi_\bn_\bt _\bn_\be_\be_\bd_\b__\bb_\by_\bt_\be_\bs)\n \u00a0 Summarize buffer overrun.\n \u00a0\n-template\n- std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (T value)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT >\n+ std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (_\bT value)\n \u00a0 Floating-point implementations for\n _\bp_\bq_\bx_\bx_\b:_\b:_\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg_\b(_\b).\n \u00a0\n- template std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (float)\n+ _\bt_\be_\bm_\bp_\bl_\ba_\bt_\be std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (_\bf_\bl_\bo_\ba_\bt)\n \u00a0\n- template std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (double)\n+ _\bt_\be_\bm_\bp_\bl_\ba_\bt_\be std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (_\bd_\bo_\bu_\bb_\bl_\be)\n \u00a0\n- template std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (long double)\n+ _\bt_\be_\bm_\bp_\bl_\ba_\bt_\be std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (_\bl_\bo_\bn_\bg _\bd_\bo_\bu_\bb_\bl_\be)\n \u00a0\n- \u00a0 _\b__\b_a\bat\btt\btr\bri\bib\bbu\but\bte\be_\b__\b_ ((visibility(\"default\")))\n- int _\bc_\bh_\be_\bc_\bk_\b__\bp_\bq_\bx_\bx_\b__\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\b7_\b__\b1_\b0() noexcept\n+ \u00a0 _\b__\b_a\bat\btt\btr\bri\bib\bbu\but\bte\be_\b__\b_ ((_\bv_\bi_\bs_\bi_\bb_\bi_\bl_\bi_\bt_\by(\"default\")))\n+ _\bi_\bn_\bt _\bc_\bh_\be_\bc_\bk_\b__\bp_\bq_\bx_\bx_\b__\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\b7_\b__\b1_\b0() _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n- void PQXX_COLD PQXX_LIBEXPORT\u00a0 _\bs_\bk_\bi_\bp_\b__\bi_\bn_\bi_\bt_\b__\bs_\bs_\bl (int skips) noexcept\n+ _\bv_\bo_\bi_\bd PQXX_COLD PQXX_LIBEXPORT\u00a0 _\bs_\bk_\bi_\bp_\b__\bi_\bn_\bi_\bt_\b__\bs_\bs_\bl (_\bi_\bn_\bt _\bs_\bk_\bi_\bp_\bs) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Control OpenSSL/crypto library\n initialisation.\n \u00a0\n template\n- std::size_t\u00a0 _\bs_\bc_\ba_\bn_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg (char const\n- input[], std::size_t size, std::size_t\n+ std::size_t\u00a0 _\bs_\bc_\ba_\bn_\b__\bd_\bo_\bu_\bb_\bl_\be_\b__\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt\n+ _\bi_\bn_\bp_\bu_\bt[], std::size_t size, std::size_t\n pos)\n \u00a0\n template\n- std::string\u00a0 p\bpa\bar\brs\bse\be_\b_d\bdo\bou\bub\bbl\ble\be_\b_q\bqu\buo\bot\bte\bed\bd_\b_s\bst\btr\bri\bin\bng\bg (char const\n- input[], std::size_t end, std::size_t\n+ std::string\u00a0 p\bpa\bar\brs\bse\be_\b_d\bdo\bou\bub\bbl\ble\be_\b_q\bqu\buo\bot\bte\bed\bd_\b_s\bst\btr\bri\bin\bng\bg (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt\n+ _\bi_\bn_\bp_\bu_\bt[], std::size_t end, std::size_t\n pos)\n \u00a0 Un-quote and un-escape a double-quoted\n SQL string.\n \u00a0\n template\n- std::size_t\u00a0 _\bs_\bc_\ba_\bn_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg (char const input\n+ std::size_t\u00a0 _\bs_\bc_\ba_\bn_\b__\bu_\bn_\bq_\bu_\bo_\bt_\be_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bi_\bn_\bp_\bu_\bt\n [], std::size_t size, std::size_t pos)\n \u00a0 Find the end of an unquoted string in\n an array or composite-type value.\n \u00a0\n template\n- std::string_view\u00a0 p\bpa\bar\brs\bse\be_\b_u\bun\bnq\bqu\buo\bot\bte\bed\bd_\b_s\bst\btr\bri\bin\bng\bg (char const input\n+ std::string_view\u00a0 p\bpa\bar\brs\bse\be_\b_u\bun\bnq\bqu\buo\bot\bte\bed\bd_\b_s\bst\btr\bri\bin\bng\bg (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bi_\bn_\bp_\bu_\bt\n [], std::size_t end, std::size_t pos)\n \u00a0 Parse an unquoted array entry or cfield\n of a composite-type field.\n \u00a0\n-template\n- void\u00a0 _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd (std::size_t\n- &index, std::string_view input, std::\n- size_t &pos, T &_\bf_\bi_\be_\bl_\bd, std::size_t\n- last_field)\n+template\n+ _\bv_\bo_\bi_\bd\u00a0 _\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd (std::size_t\n+ &index, std::string_view _\bi_\bn_\bp_\bu_\bt, std::\n+ size_t &pos, _\bT &_\bf_\bi_\be_\bl_\bd, std::size_t\n+ _\bl_\ba_\bs_\bt_\b__\bf_\bi_\be_\bl_\bd)\n \u00a0 Parse a field of a composite-type\n value.\n \u00a0\n template\n _\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b__\bp_\ba_\br_\bs_\be_\br< T >\u00a0 s\bsp\bpe\bec\bci\bia\bal\bli\biz\bze\be_\b_p\bpa\bar\brs\bse\be_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd\n (encoding_group enc)\n \u00a0 Look up implementation of\n parse_composite_field for ENC.\n \u00a0\n-template\n- std::size_t\u00a0 s\bsi\biz\bze\be_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd_\b_b\bbu\buf\bff\bfe\ber\br (T const\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT >\n+ std::size_t\u00a0 s\bsi\biz\bze\be_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd_\b_b\bbu\buf\bff\bfe\ber\br (_\bT _\bc_\bo_\bn_\bs_\bt\n &_\bf_\bi_\be_\bl_\bd)\n \u00a0 Conservatively estimate buffer size\n needed for a composite field.\n \u00a0\n-template\n- void\u00a0 w\bwr\bri\bit\bte\be_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd (char *&pos, char\n- *end, T const &_\bf_\bi_\be_\bl_\bd)\n-\u00a0\n-template\n- void\u00a0 r\bre\ben\bnd\bde\ber\br_\b_i\bit\bte\bem\bm (TYPE const &item, char\n- *&here, char *end)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT >\n+ _\bv_\bo_\bi_\bd\u00a0 w\bwr\bri\bit\bte\be_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd (_\bc_\bh_\ba_\br *&pos, _\bc_\bh_\ba_\br\n+ *end, _\bT _\bc_\bo_\bn_\bs_\bt &_\bf_\bi_\be_\bl_\bd)\n+\u00a0\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT_\bY_\bP_\bE >\n+ _\bv_\bo_\bi_\bd\u00a0 r\bre\ben\bnd\bde\ber\br_\b_i\bit\bte\bem\bm (_\bT_\bY_\bP_\bE _\bc_\bo_\bn_\bs_\bt &_\bi_\bt_\be_\bm, _\bc_\bh_\ba_\br\n+ *&_\bh_\be_\br_\be, _\bc_\bh_\ba_\br *end)\n \u00a0 Convert item to a string, write it into\n [here, end).\n \u00a0\n template\n- std::string\u00a0 _\bc_\bo_\bn_\bc_\ba_\bt (TYPE... item)\n+ std::string\u00a0 _\bc_\bo_\bn_\bc_\ba_\bt (TYPE... _\bi_\bt_\be_\bm)\n \u00a0 Efficiently combine a bunch of items\n into one big string.\n \u00a0\n- constexpr char\u00a0 n\bnu\bum\bmb\bbe\ber\br_\b_t\bto\bo_\b_d\bdi\big\bgi\bit\bt (int i) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br\u00a0 n\bnu\bum\bmb\bbe\ber\br_\b_t\bto\bo_\b_d\bdi\big\bgi\bit\bt (_\bi_\bn_\bt _\bi) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Convert a number in [0, 9] to its ASCII\n digit.\n \u00a0\n- constexpr int\u00a0 d\bdi\big\bgi\bit\bt_\b_t\bto\bo_\b_n\bnu\bum\bmb\bbe\ber\br (char c) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bi_\bn_\bt\u00a0 d\bdi\big\bgi\bit\bt_\b_t\bto\bo_\b_n\bnu\bum\bmb\bbe\ber\br (_\bc_\bh_\ba_\br _\bc) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Compute numeric value of given textual\n digit (assuming that it is a digit).\n \u00a0\n-template\n- std::string\u00a0 s\bst\bta\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br_\b_o\bov\bve\ber\brr\bru\bun\bn (HAVE have_bytes,\n- NEED need_bytes)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bH_\bA_\bV_\bE , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bN_\bE_\bE_\bD >\n+ std::string\u00a0 s\bst\bta\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br_\b_o\bov\bve\ber\brr\bru\bun\bn (_\bH_\bA_\bV_\bE _\bh_\ba_\bv_\be_\b__\bb_\by_\bt_\be_\bs,\n+ _\bN_\bE_\bE_\bD _\bn_\be_\be_\bd_\b__\bb_\by_\bt_\be_\bs)\n \u00a0\n-template\n- PQXX_LIBEXPORT std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (T)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT >\n+ PQXX_LIBEXPORT std::string\u00a0 t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg_\b_f\bfl\blo\boa\bat\bt (_\bT)\n \u00a0 Floating-point implementations for\n _\bp_\bq_\bx_\bx_\b:_\b:_\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg_\b(_\b).\n \u00a0\n-template\n- char *\u00a0 g\bge\ben\bne\ber\bri\bic\bc_\b_i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (char *begin, char\n- *end, T const &value)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT >\n+ _\bc_\bh_\ba_\br *\u00a0 g\bge\ben\bne\ber\bri\bic\bc_\b_i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br\n+ *end, _\bT _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0 Generic implementation for into_buf, on\n top of to_buf.\n \u00a0\n- PQXX_PURE char const *\u00a0 n\bna\bam\bme\be_\b_e\ben\bnc\bco\bod\bdi\bin\bng\bg (int encoding_id)\n+ PQXX_PURE _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt *\u00a0 n\bna\bam\bme\be_\b_e\ben\bnc\bco\bod\bdi\bin\bng\bg (_\bi_\bn_\bt encoding_id)\n \u00a0 Return PostgreSQL's name for encoding\n enum value.\n \u00a0\n PQXX_LIBEXPORT _\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc *\u00a0 _\bg_\be_\bt_\b__\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br (encoding_group)\n \u00a0 Look up the glyph scanner function for\n a given encoding group.\n \u00a0\n template\n- std::size_t\u00a0 _\bf_\bi_\bn_\bd_\b__\bc_\bh_\ba_\br (_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc *scanner,\n- std::string_view haystack, std::size_t\n- here=0u)\n+ std::size_t\u00a0 _\bf_\bi_\bn_\bd_\b__\bc_\bh_\ba_\br (_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc *_\bs_\bc_\ba_\bn_\bn_\be_\br,\n+ std::string_view _\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk, std::size_t\n+ _\bh_\be_\br_\be=0u)\n \u00a0 Find any of the ASCII characters NEEDLE\n in haystack.\n \u00a0\n-template\n- void\u00a0 _\bf_\bo_\br_\b__\bg_\bl_\by_\bp_\bh_\bs (encoding_group enc,\n- CALLABLE callback, char const buffer[],\n- std::size_t buffer_len, std::size_t\n- start=0)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE >\n+ _\bv_\bo_\bi_\bd\u00a0 _\bf_\bo_\br_\b__\bg_\bl_\by_\bp_\bh_\bs (encoding_group _\be_\bn_\bc,\n+ _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk, _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[],\n+ std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t\n+ _\bs_\bt_\ba_\br_\bt=0)\n \u00a0 Iterate over the glyphs in a buffer.\n \u00a0\n template\n PQXX_PURE std::size_t\u00a0 _\bf_\bi_\bn_\bd_\b__\bs_\b__\ba_\bs_\bc_\bi_\bi_\b__\bc_\bh_\ba_\br (std::string_view\n- haystack, std::size_t here)\n+ _\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk, std::size_t _\bh_\be_\br_\be)\n \u00a0 Find first of NEEDLE ASCII chars in\n haystack.\n \u00a0\n- constexpr encoding_group\u00a0 _\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp (encoding_group\n- enc) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br encoding_group\u00a0 _\bm_\ba_\bp_\b__\ba_\bs_\bc_\bi_\bi_\b__\bs_\be_\ba_\br_\bc_\bh_\b__\bg_\br_\bo_\bu_\bp (encoding_group\n+ _\be_\bn_\bc) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Just for searching an ASCII character,\n what encoding can we use here?\n \u00a0\n template\n-PQXX_PURE constexpr _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *\u00a0 _\bg_\be_\bt_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br (encoding_group enc)\n+PQXX_PURE _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *\u00a0 _\bg_\be_\bt_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br (encoding_group _\be_\bn_\bc)\n \u00a0 Look up a character search function for\n an encoding group.\n \u00a0\n template\n-PQXX_PURE constexpr _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *\u00a0 _\bg_\be_\bt_\b__\bs_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br (encoding_group enc)\n+PQXX_PURE _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *\u00a0 _\bg_\be_\bt_\b__\bs_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br (encoding_group _\be_\bn_\bc)\n \u00a0 Look up a \"sentry\" character search\n function for an encoding group.\n \u00a0\n PQXX_LIBEXPORT _\br_\be_\bs_\bu_\bl_\bt_\b__\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\u00a0 o\bob\bbt\bta\bai\bin\bn_\b_s\bst\bta\bat\bte\bel\ble\bes\bss\bs_\b_c\bcu\bur\brs\bso\bor\br_\b_s\bsi\biz\bze\be\n (_\bs_\bq_\bl_\b__\bc_\bu_\br_\bs_\bo_\br &)\n \u00a0\n PQXX_LIBEXPORT _\br_\be_\bs_\bu_\bl_\bt\u00a0 s\bst\bta\bat\bte\bel\ble\bes\bss\bs_\b_c\bcu\bur\brs\bso\bor\br_\b_r\bre\bet\btr\bri\bie\bev\bve\be (_\bs_\bq_\bl_\b__\bc_\bu_\br_\bs_\bo_\br\n &, result::difference_type size,\n- result::difference_type begin_pos,\n- result::difference_type end_pos)\n+ result::difference_type _\bb_\be_\bg_\bi_\bn_\b__\bp_\bo_\bs,\n+ result::difference_type _\be_\bn_\bd_\b__\bp_\bo_\bs)\n \u00a0\n template\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br,\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br,\n _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br< TYPE... >\n- const &i)\n+ _\bc_\bo_\bn_\bs_\bt &_\bi)\n \u00a0\n template\n- bool\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br,\n+ _\bb_\bo_\bo_\bl\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br,\n _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br< TYPE... >\n- const &i)\n+ _\bc_\bo_\bn_\bs_\bt &_\bi)\n \u00a0\n- void PQXX_LIBEXPORT\u00a0 _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br (unsigned int microseconds)\n+ _\bv_\bo_\bi_\bd PQXX_LIBEXPORT\u00a0 _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br (_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\bi_\bn_\bt _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs)\n \u00a0 Wait.\n \u00a0\n- PQXX_LIBEXPORT void\u00a0 w\bwa\bai\bit\bt_\b_f\bfd\bd (int fd, bool for_read, bool\n- for_write, unsigned seconds=1, unsigned\n- microseconds=0)\n+ PQXX_LIBEXPORT _\bv_\bo_\bi_\bd\u00a0 w\bwa\bai\bit\bt_\b_f\bfd\bd (_\bi_\bn_\bt _\bf_\bd, _\bb_\bo_\bo_\bl _\bf_\bo_\br_\b__\br_\be_\ba_\bd, _\bb_\bo_\bo_\bl\n+ _\bf_\bo_\br_\b__\bw_\br_\bi_\bt_\be, _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\bs_\be_\bc_\bo_\bn_\bd_\bs=1, _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd\n+ _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs=0)\n \u00a0 Wait for a socket to be ready for\n reading/writing, or timeout.\n \u00a0\n- PQXX_LIBEXPORT void\u00a0 c\bcl\ble\bea\bar\br_\b_r\bre\bes\bsu\bul\blt\bt (pq::PGresult const *)\n- noexcept\n+ PQXX_LIBEXPORT _\bv_\bo_\bi_\bd\u00a0 c\bcl\ble\bea\bar\br_\b_r\bre\bes\bsu\bul\blt\bt (pq::PGresult _\bc_\bo_\bn_\bs_\bt *)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 C++ wrapper for libpq's PQclear.\n \u00a0\n-template\n- constexpr bool\u00a0 c\bcm\bmp\bp_\b_l\ble\bes\bss\bs (LEFT lhs, RIGHT rhs) noexcept\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bL_\bE_\bF_\bT , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bI_\bG_\bH_\bT >\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bcm\bmp\bp_\b_l\ble\bes\bss\bs (_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Same as std::cmp_less, or a workaround\n where that's not available.\n \u00a0\n-template\n- constexpr bool\u00a0 c\bcm\bmp\bp_\b_g\bgr\bre\bea\bat\bte\ber\br (LEFT lhs, RIGHT rhs)\n- noexcept\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bL_\bE_\bF_\bT , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bI_\bG_\bH_\bT >\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bcm\bmp\bp_\b_g\bgr\bre\bea\bat\bte\ber\br (_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 C++20 std::cmp_greater, or workaround\n if not available.\n \u00a0\n-template\n- constexpr bool\u00a0 c\bcm\bmp\bp_\b_l\ble\bes\bss\bs_\b_e\beq\bqu\bua\bal\bl (LEFT lhs, RIGHT rhs)\n- noexcept\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bL_\bE_\bF_\bT , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bI_\bG_\bH_\bT >\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bcm\bmp\bp_\b_l\ble\bes\bss\bs_\b_e\beq\bqu\bua\bal\bl (_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 C++20 std::cmp_less_equal, or\n workaround if not available.\n \u00a0\n-template\n- constexpr bool\u00a0 c\bcm\bmp\bp_\b_g\bgr\bre\bea\bat\bte\ber\br_\b_e\beq\bqu\bua\bal\bl (LEFT lhs, RIGHT rhs)\n- noexcept\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bL_\bE_\bF_\bT , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bI_\bG_\bH_\bT >\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bcm\bmp\bp_\b_g\bgr\bre\bea\bat\bte\ber\br_\b_e\beq\bqu\bua\bal\bl (_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 C++20 std::cmp_greater_equal, or\n workaround if not available.\n \u00a0\n- std::string\u00a0 _\bc_\ba_\bt_\b2 (std::string_view x, std::\n- string_view y)\n+ std::string\u00a0 _\bc_\ba_\bt_\b2 (std::string_view _\bx, std::\n+ string_view _\by)\n \u00a0 Efficiently concatenate two strings.\n \u00a0\n-template\n- constexpr bool\u00a0 _\bi_\bs_\b__\bd_\bi_\bg_\bi_\bt (CHAR c) noexcept\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bH_\bA_\bR >\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 _\bi_\bs_\b__\bd_\bi_\bg_\bi_\bt (_\bC_\bH_\bA_\bR _\bc) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 A safer and more generic replacement\n for std::isdigit.\n \u00a0\n std::string\u00a0 _\bd_\be_\bs_\bc_\br_\bi_\bb_\be_\b__\bo_\bb_\bj_\be_\bc_\bt (std::string_view\n- class_name, std::string_view name)\n+ _\bc_\bl_\ba_\bs_\bs_\b__\bn_\ba_\bm_\be, std::string_view name)\n \u00a0 Describe an object for humans, based on\n class name and optional name.\n \u00a0\n- void\u00a0 _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br (void const\n- *old_guest, std::string_view old_class,\n- std::string_view old_name, void const\n- *new_guest, std::string_view new_class,\n- std::string_view new_name)\n+ _\bv_\bo_\bi_\bd\u00a0 _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br (_\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt\n+ *_\bo_\bl_\bd_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bo_\bl_\bd_\b__\bc_\bl_\ba_\bs_\bs,\n+ std::string_view _\bo_\bl_\bd_\b__\bn_\ba_\bm_\be, _\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt\n+ *_\bn_\be_\bw_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bn_\be_\bw_\b__\bc_\bl_\ba_\bs_\bs,\n+ std::string_view _\bn_\be_\bw_\b__\bn_\ba_\bm_\be)\n \u00a0 Check validity of registering a new\n \"guest\" in a \"host.\".\n \u00a0\n- void\u00a0 _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\bu_\bn_\br_\be_\bg_\bi_\bs_\bt_\be_\br (void const\n- *old_guest, std::string_view old_class,\n- std::string_view old_name, void const\n- *new_guest, std::string_view new_class,\n- std::string_view new_name)\n+ _\bv_\bo_\bi_\bd\u00a0 _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\bu_\bn_\br_\be_\bg_\bi_\bs_\bt_\be_\br (_\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt\n+ *_\bo_\bl_\bd_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bo_\bl_\bd_\b__\bc_\bl_\ba_\bs_\bs,\n+ std::string_view _\bo_\bl_\bd_\b__\bn_\ba_\bm_\be, _\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt\n+ *_\bn_\be_\bw_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bn_\be_\bw_\b__\bc_\bl_\ba_\bs_\bs,\n+ std::string_view _\bn_\be_\bw_\b__\bn_\ba_\bm_\be)\n \u00a0 Like _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br, but for un-\n registering a guest.\n \u00a0\n- constexpr std::size_t\u00a0 _\bs_\bi_\bz_\be_\b__\be_\bs_\bc_\b__\bb_\bi_\bn (std::size_t binary_bytes)\n- noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::size_t\u00a0 _\bs_\bi_\bz_\be_\b__\be_\bs_\bc_\b__\bb_\bi_\bn (std::size_t _\bb_\bi_\bn_\ba_\br_\by_\b__\bb_\by_\bt_\be_\bs)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Compute buffer size needed to escape\n binary data for use as a BYTEA.\n \u00a0\n- constexpr std::size_t\u00a0 _\bs_\bi_\bz_\be_\b__\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn (std::size_t\n- escaped_bytes) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::size_t\u00a0 _\bs_\bi_\bz_\be_\b__\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn (std::size_t\n+ _\be_\bs_\bc_\ba_\bp_\be_\bd_\b__\bb_\by_\bt_\be_\bs) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Compute binary size from the size of\n its escaped version.\n \u00a0\n- void PQXX_LIBEXPORT\u00a0 _\be_\bs_\bc_\b__\bb_\bi_\bn (_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw binary_data, char\n- buffer[]) noexcept\n+ _\bv_\bo_\bi_\bd PQXX_LIBEXPORT\u00a0 _\be_\bs_\bc_\b__\bb_\bi_\bn (_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw _\bb_\bi_\bn_\ba_\br_\by_\b__\bd_\ba_\bt_\ba, _\bc_\bh_\ba_\br\n+ _\bb_\bu_\bf_\bf_\be_\br[]) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Hex-escape binary data into a buffer.\n \u00a0\n- std::string PQXX_LIBEXPORT\u00a0 e\bes\bsc\bc_\b_b\bbi\bin\bn (_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw binary_data)\n+ std::string PQXX_LIBEXPORT\u00a0 e\bes\bsc\bc_\b_b\bbi\bin\bn (_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw _\bb_\bi_\bn_\ba_\br_\by_\b__\bd_\ba_\bt_\ba)\n \u00a0 Hex-escape binary data into a std::\n string.\n \u00a0\n- void PQXX_LIBEXPORT\u00a0 u\bun\bne\bes\bsc\bc_\b_b\bbi\bin\bn (std::string_view\n- escaped_data, std::byte buffer[])\n+ _\bv_\bo_\bi_\bd PQXX_LIBEXPORT\u00a0 u\bun\bne\bes\bsc\bc_\b_b\bbi\bin\bn (std::string_view\n+ _\be_\bs_\bc_\ba_\bp_\be_\bd_\b__\bd_\ba_\bt_\ba, std::byte _\bb_\bu_\bf_\bf_\be_\br[])\n \u00a0 Reconstitute binary data from its\n escaped version.\n \u00a0\n _\bb_\by_\bt_\be_\bs PQXX_LIBEXPORT\u00a0 u\bun\bne\bes\bsc\bc_\b_b\bbi\bin\bn (std::string_view\n- escaped_data)\n+ _\be_\bs_\bc_\ba_\bp_\be_\bd_\b__\bd_\ba_\bt_\ba)\n \u00a0 Reconstitute binary data from its\n escaped version.\n \u00a0\n-template\n- auto\u00a0 s\bss\bsi\biz\bze\be (T const &c)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT >\n+ _\ba_\bu_\bt_\bo\u00a0 s\bss\bsi\biz\bze\be (_\bT _\bc_\bo_\bn_\bs_\bt &_\bc)\n \u00a0 Transitional: std::ssize(), or custom\n implementation if not available.\n \u00a0\n-template\n- std::tuple< ARGS... >\u00a0 _\ba_\br_\bg_\bs_\b__\bf (RETURN(&func)(ARGS...))\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bE_\bT_\bU_\bR_\bN , typename... ARGS>\n+ std::tuple< ARGS... >\u00a0 _\ba_\br_\bg_\bs_\b__\bf (_\bR_\bE_\bT_\bU_\bR_\bN(&_\bf_\bu_\bn_\bc)(ARGS...))\n \u00a0 Helper for determining a function's\n parameter types.\n \u00a0\n-template\n- std::tuple< ARGS... >\u00a0 _\ba_\br_\bg_\bs_\b__\bf (std::function< RETURN(ARGS...)>\n- const &)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bE_\bT_\bU_\bR_\bN , typename... ARGS>\n+ std::tuple< ARGS... >\u00a0 _\ba_\br_\bg_\bs_\b__\bf (std::function< _\bR_\bE_\bT_\bU_\bR_\bN(ARGS...)>\n+ _\bc_\bo_\bn_\bs_\bt &)\n \u00a0 Helper for determining a std::\n function's parameter types.\n \u00a0\n-template\n- std::tuple< ARGS... >\u00a0 _\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf (RETURN(CLASS::*)\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bL_\bA_\bS_\bS , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bE_\bT_\bU_\bR_\bN , typename... ARGS>\n+ std::tuple< ARGS... >\u00a0 _\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf (_\bR_\bE_\bT_\bU_\bR_\bN(CLASS::*)\n (ARGS...))\n \u00a0 Helper for determining a member\n function's parameter types.\n \u00a0\n-template\n- auto\u00a0 _\ba_\br_\bg_\bs_\b__\bf (CALLABLE const &f) -> decltype\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE >\n+ _\ba_\bu_\bt_\bo\u00a0 _\ba_\br_\bg_\bs_\b__\bf (_\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE _\bc_\bo_\bn_\bs_\bt &_\bf) -> _\bd_\be_\bc_\bl_\bt_\by_\bp_\be\n (_\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf(&CALLABLE::operator()))\n \u00a0 Helper for determining a callable\n type's parameter types.\n \u00a0\n template\n- std::tuple< _\bs_\bt_\br_\bi_\bp_\b__\bt< TYPES >... >\u00a0 _\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs (std::tuple< TYPES... >\n- const &)\n+ std::tuple< _\bs_\bt_\br_\bi_\bp_\b__\bt< _\bT_\bY_\bP_\bE_\bS >... >\u00a0 _\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs (std::tuple< TYPES... >\n+ _\bc_\bo_\bn_\bs_\bt &)\n \u00a0 Helper: Apply strip_t to each of a\n tuple type's component types.\n \u00a0\n- constexpr char\u00a0 u\bun\bne\bes\bsc\bca\bap\bpe\be_\b_c\bch\bha\bar\br (char escaped) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br\u00a0 u\bun\bne\bes\bsc\bca\bap\bpe\be_\b_c\bch\bha\bar\br (_\bc_\bh_\ba_\br _\be_\bs_\bc_\ba_\bp_\be_\bd) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Return original byte for escaped\n character.\n \u00a0\n template\n- char const *PQXX_COLD\u00a0 e\ber\brr\bro\bor\br_\b_s\bst\btr\bri\bin\bng\bg (int err_num, std::array<\n- char, BYTES > &buffer)\n+ _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt *PQXX_COLD\u00a0 e\ber\brr\bro\bor\br_\b_s\bst\btr\bri\bin\bng\bg (_\bi_\bn_\bt _\be_\br_\br_\b__\bn_\bu_\bm, std::array<\n+ _\bc_\bh_\ba_\br, _\bB_\bY_\bT_\bE_\bS > &_\bb_\bu_\bf_\bf_\be_\br)\n \u00a0 Get error string for a given errno\n value.\n \u00a0\n- PQXX_LIBEXPORT int\u00a0 _\bc_\bh_\be_\bc_\bk_\b__\bp_\bq_\bx_\bx_\b__\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\b7_\b__\b1_\b0 () noexcept\n+ PQXX_LIBEXPORT _\bi_\bn_\bt\u00a0 _\bc_\bh_\be_\bc_\bk_\b__\bp_\bq_\bx_\bx_\b__\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\b7_\b__\b1_\b0 () _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Library version check stub.\n \u00a0\n- constexpr char const *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (char const str[]) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt str[]) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Get a raw C string pointer.\n \u00a0\n template\n- constexpr char const *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (char(&str)[N]) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (_\bc_\bh_\ba_\br(&str)[_\bN]) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Get a raw C string pointer.\n \u00a0\n- constexpr char const *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (_\bp_\bq_\bx_\bx_\b:_\b:_\bz_\bv_\bi_\be_\bw str) noexcept\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (_\bp_\bq_\bx_\bx_\b:_\b:_\bz_\bv_\bi_\be_\bw str) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Get a raw C string pointer.\n \u00a0\n- char const *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (std::string const &str)\n- noexcept\n+ _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt *\u00a0 a\bas\bs_\b_c\bc_\b_s\bst\btr\bri\bin\bng\bg (std::string _\bc_\bo_\bn_\bs_\bt &str)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0 Get a raw C string pointer.\n \u00a0\n V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs\n- constexpr char\u00a0 e\bem\bmp\bpt\bty\by_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_s\bst\btr\br [] {\"()\"}\n+ _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br\u00a0 e\bem\bmp\bpt\bty\by_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_s\bst\btr\br [] {\"()\"}\n \u00a0\n-template\n-constexpr auto const\u00a0 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bI_\bT_\bE_\bR_\bA_\bT_\bO_\bR >\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\ba_\bu_\bt_\bo _\bc_\bo_\bn_\bs_\bt\u00a0 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n Internal items for libpqxx' own use. Do not use these yourself.\n Private namespace for libpqxx's internal use; do not access.\n Version check.\n Copyright (c) 2000-2024, Jeroen T. Vermeulen.\n See COPYING for copyright license. If you did not receive a file called COPYING\n@@ -515,70 +515,70 @@\n ===============================================================================\n *\b**\b**\b**\b**\b* C\bCl\bla\bas\bss\bs D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0p\bpq\bqx\bxx\bx:\b::\b:i\bin\bnt\bte\ber\brn\bna\bal\bl:\b::\b:s\bst\btr\bre\bea\bam\bm_\b_q\bqu\bue\ber\bry\by_\b_e\ben\bnd\bd_\b_i\bit\bte\ber\bra\bat\bto\bor\br *\b**\b**\b**\b**\b*\n class pqxx::internal::stream_query_end_iterator\n The end() iterator for a _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by.\n *\b**\b**\b**\b**\b* T\bTy\byp\bpe\bed\bde\bef\bf D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bch\bha\bar\br_\b_f\bfi\bin\bnd\bde\ber\br_\b_f\bfu\bun\bnc\bc *\b**\b**\b**\b**\b*\n-using _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc = typedef std::size_t(std::string_view\n-haystack, std::size_t start)\n+_\bu_\bs_\bi_\bn_\bg _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc = _\bt_\by_\bp_\be_\bd_\be_\bf std::size_t(std::string_view\n+_\bh_\ba_\by_\bs_\bt_\ba_\bc_\bk, std::size_t _\bs_\bt_\ba_\br_\bt)\n Function type: \"find first occurrence of specific any of ASCII characters.\".\n This type of function takes a text buffer, and a location in that buffer, and\n returns the location of the first occurrence within that string of any of a\n specific set of ASCII characters.\n For efficiency, it's up to the function to know which those special ASCII\n characters are.\n The start offset marks the beginning of the current glyph. It must fall within\n the buffer.\n Returns the offset of the first matching character, or if there is none, the\n end of haystack.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0g\bgl\bly\byp\bph\bh_\b_s\bsc\bca\ban\bnn\bne\ber\br_\b_f\bfu\bun\bnc\bc *\b**\b**\b**\b**\b*\n-using _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc = typedef std::size_t(char const\n-buffer[], std::size_t buffer_len, std::size_t start)\n+_\bu_\bs_\bi_\bn_\bg _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bg_\bl_\by_\bp_\bh_\b__\bs_\bc_\ba_\bn_\bn_\be_\br_\b__\bf_\bu_\bn_\bc = _\bt_\by_\bp_\be_\bd_\be_\bf std::size_t(_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt\n+_\bb_\bu_\bf_\bf_\be_\br[], std::size_t _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n Function type: \"find the end of the current glyph.\".\n This type of function takes a text buffer, and a location in that buffer, and\n returns the location one byte past the end of the current glyph.\n The start offset marks the beginning of the current glyph. It must fall within\n the buffer.\n There are multiple different glyph scanner implementations, for different kinds\n of encodings.\n *\b**\b**\b**\b**\b* F\bFu\bun\bnc\bct\bti\bio\bon\bn D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0a\bar\brg\bgs\bs_\b_f\bf(\b()\b) [\b[1\b1/\b/3\b3]\b] *\b**\b**\b**\b**\b*\n-template\n-auto pqxx::internal::args_f ( CALLABLE const &\u00a0 f\bf ) -> decltype(_\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE >\n+_\ba_\bu_\bt_\bo pqxx::internal::args_f ( _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE _\bc_\bo_\bn_\bs_\bt &\u00a0 f\bf ) -> _\bd_\be_\bc_\bl_\bt_\by_\bp_\be(_\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf\n (&CALLABLE::operator()))\n Helper for determining a callable type's parameter types.\n This specialisation should work for lambdas.\n This function has no definition. It's not meant to be actually called. It's\n just there for pattern-matching in the compiler, so we can use its hypothetical\n return value.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0a\bar\brg\bgs\bs_\b_f\bf(\b()\b) [\b[2\b2/\b/3\b3]\b] *\b**\b**\b**\b**\b*\n-template\n-std::tuple< ARGS... > pqxx::internal::args_f ( RETURN(&)(ARGS...)\u00a0 f\bfu\bun\bnc\bc )\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bE_\bT_\bU_\bR_\bN , typename... ARGS>\n+std::tuple< ARGS... > pqxx::internal::args_f ( _\bR_\bE_\bT_\bU_\bR_\bN(&)(ARGS...)\u00a0 f\bfu\bun\bnc\bc )\n Helper for determining a function's parameter types.\n This function has no definition. It's not meant to be actually called. It's\n just there for pattern-matching in the compiler, so we can use its hypothetical\n return value.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0a\bar\brg\bgs\bs_\b_f\bf(\b()\b) [\b[3\b3/\b/3\b3]\b] *\b**\b**\b**\b**\b*\n-template\n-std::tuple< ARGS... > pqxx:: ( std::function< RETURN(ARGS...)> const )\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bE_\bT_\bU_\bR_\bN , typename... ARGS>\n+std::tuple< ARGS... > pqxx:: ( std::function< _\bR_\bE_\bT_\bU_\bR_\bN(ARGS...)> _\bc_\bo_\bn_\bs_\bt )\n internal::args_f &\u00a0\n Helper for determining a std::function's parameter types.\n This function has no definition. It's not meant to be actually called. It's\n just there for pattern-matching in the compiler, so we can use its hypothetical\n return value.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bca\bat\bt2\b2(\b()\b) *\b**\b**\b**\b**\b*\n std::string pqxx::internal::cat2 ( std::string_view\u00a0 x\bx,\n std::string_view\u00a0 y\by\u00a0 inline\n )\n Efficiently concatenate two strings.\n-This is a special case of concatenate(), needed because dependency management\n+This is a special case of _\bc_\bo_\bn_\bc_\ba_\bt_\be_\bn_\ba_\bt_\be_\b(_\b), needed because dependency management\n does not let us use that function here.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bch\bhe\bec\bck\bk_\b_p\bpq\bqx\bxx\bx_\b_v\bve\ber\brs\bsi\bio\bon\bn_\b_7\b7_\b_1\b10\b0(\b()\b) *\b**\b**\b**\b**\b*\n-PQXX_LIBEXPORT int pqxx::internal:: ( ) noexcept\n+PQXX_LIBEXPORT _\bi_\bn_\bt pqxx::internal:: ( ) noexcept\n check_pqxx_version_7_10\n Library version check stub.\n Helps detect version mismatches between libpqxx headers and the libpqxx library\n binary.\n Sometimes users run into trouble linking their code against libpqxx because\n they build their own libpqxx, but the system also has a different version\n installed. The declarations in the headers against which they compile their\n@@ -591,35 +591,35 @@\n whose name contains the libpqxx version as found in the headers. (The library\n build process will use its own local headers even if another version of the\n headers is installed on the system.)\n If the libpqxx binary was compiled for a different version than the user's\n code, linking will fail with an error: check_pqxx_version_*_* will not exist\n for the given version number.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bch\bhe\bec\bck\bk_\b_u\bun\bni\biq\bqu\bue\be_\b_r\bre\beg\bgi\bis\bst\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-void pqxx::internal::check_unique_register ( void const *\u00a0 o\bol\bld\bd_\b_g\bgu\bue\bes\bst\bt,\n+_\bv_\bo_\bi_\bd pqxx::internal::check_unique_register ( _\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt *\u00a0 o\bol\bld\bd_\b_g\bgu\bue\bes\bst\bt,\n std::string_view\u00a0 o\bol\bld\bd_\b_c\bcl\bla\bas\bss\bs,\n std::string_view\u00a0 o\bol\bld\bd_\b_n\bna\bam\bme\be,\n- void const *\u00a0 n\bne\bew\bw_\b_g\bgu\bue\bes\bst\bt,\n+ _\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt *\u00a0 n\bne\bew\bw_\b_g\bgu\bue\bes\bst\bt,\n std::string_view\u00a0 n\bne\bew\bw_\b_c\bcl\bla\bas\bss\bs,\n std::string_view\u00a0 n\bne\bew\bw_\b_n\bna\bam\bme\be\u00a0\n )\n Check validity of registering a new \"guest\" in a \"host.\".\n The host might be e.g. a connection, and the guest a transaction. The host can\n only have one guest at a time, so it is an error to register a new guest while\n the host already has a guest.\n If the new registration is an error, this function throws a descriptive\n exception.\n Pass the old guest (if any) and the new guest (if any), for both, a type name\n (at least if the guest is not null), and optionally an object name (but which\n may be omitted if the caller did not assign one).\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bch\bhe\bec\bck\bk_\b_u\bun\bni\biq\bqu\bue\be_\b_u\bun\bnr\bre\beg\bgi\bis\bst\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-void pqxx::internal::check_unique_unregister ( void const *\u00a0 o\bol\bld\bd_\b_g\bgu\bue\bes\bst\bt,\n+_\bv_\bo_\bi_\bd pqxx::internal::check_unique_unregister ( _\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt *\u00a0 o\bol\bld\bd_\b_g\bgu\bue\bes\bst\bt,\n std::string_view\u00a0 o\bol\bld\bd_\b_c\bcl\bla\bas\bss\bs,\n std::string_view\u00a0 o\bol\bld\bd_\b_n\bna\bam\bme\be,\n- void const *\u00a0 n\bne\bew\bw_\b_g\bgu\bue\bes\bst\bt,\n+ _\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt *\u00a0 n\bne\bew\bw_\b_g\bgu\bue\bes\bst\bt,\n std::string_view\u00a0 n\bne\bew\bw_\b_c\bcl\bla\bas\bss\bs,\n std::string_view\u00a0 n\bne\bew\bw_\b_n\bna\bam\bme\be\u00a0\n )\n Like _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br, but for un-registering a guest.\n Pass the guest which was registered, as well as the guest which is being\n unregistered, so that the function can check that they are the same one.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0c\bco\bon\bnc\bca\bat\bt(\b()\b) *\b**\b**\b**\b**\b*\n@@ -635,16 +635,16 @@\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0d\bde\bes\bsc\bcr\bri\bib\bbe\be_\b_o\bob\bbj\bje\bec\bct\bt(\b()\b) *\b**\b**\b**\b**\b*\n std::string pqxx::internal::describe_object ( std::string_view\u00a0 c\bcl\bla\bas\bss\bs_\b_n\bna\bam\bme\be,\n std::string_view\u00a0 n\bna\bam\bme\be\u00a0\n )\n Describe an object for humans, based on class name and optional name.\n Interprets an empty name as \"no name given.\"\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0e\bes\bsc\bc_\b_b\bbi\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n-void pqxx::internal::esc_bin ( _\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw\u00a0 b\bbi\bin\bna\bar\bry\by_\b_d\bda\bat\bta\ba,\n- char\u00a0 b\bbu\buf\bff\bfe\ber\br[]\u00a0 noexcept\n+_\bv_\bo_\bi_\bd pqxx::internal::esc_bin ( _\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw\u00a0 b\bbi\bin\bna\bar\bry\by_\b_d\bda\bat\bta\ba,\n+ _\bc_\bh_\ba_\br\u00a0 b\bbu\buf\bff\bfe\ber\br[]\u00a0 noexcept\n )\n Hex-escape binary data into a buffer.\n The buffer must be able to accommodate size_esc_bin(std::size(binary_data))\n bytes, and the function will write exactly that number of bytes into the\n buffer. This includes a trailing zero.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0f\bfi\bin\bnd\bd_\b_c\bch\bha\bar\br(\b()\b) *\b**\b**\b**\b**\b*\n template\n@@ -663,27 +663,27 @@\n std::size_t\u00a0 h\bhe\ber\bre\be\u00a0\n )\n Find first of NEEDLE ASCII chars in haystack.\n Warning\n This assumes that one of the NEEDLE characters is actually present. It\n does not check for buffer overruns, so make sure that there's a sentinel.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0f\bfo\bor\br_\b_g\bgl\bly\byp\bph\bhs\bs(\b()\b) *\b**\b**\b**\b**\b*\n-template\n-void pqxx::internal::for_glyphs ( encoding_group\u00a0 e\ben\bnc\bc,\n- CALLABLE\u00a0 c\bca\bal\bll\blb\bba\bac\bck\bk,\n- char const\u00a0 b\bbu\buf\bff\bfe\ber\br[], inline\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE >\n+_\bv_\bo_\bi_\bd pqxx::internal::for_glyphs ( encoding_group\u00a0 e\ben\bnc\bc,\n+ _\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE\u00a0 c\bca\bal\bll\blb\bba\bac\bck\bk,\n+ _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt\u00a0 b\bbu\buf\bff\bfe\ber\br[], inline\n std::size_t\u00a0 b\bbu\buf\bff\bfe\ber\br_\b_l\ble\ben\bn,\n std::size_t\u00a0 s\bst\bta\bar\brt\bt = 0\u00a0\n )\n Iterate over the glyphs in a buffer.\n Scans the glyphs in the buffer, and for each, passes its begin and its one-\n past-end pointers to callback.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0g\bge\bet\bt_\b_c\bch\bha\bar\br_\b_f\bfi\bin\bnd\bde\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n template\n-PQXX_PURE constexpr _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc ( encoding_group\u00a0 e\ben\bnc\bc ) inlineconstexpr\n+PQXX_PURE _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc ( encoding_group\u00a0 e\ben\bnc\bc ) inlineconstexpr\n * pqxx::internal::get_char_finder\n Look up a character search function for an encoding group.\n We only define a few individual instantiations of this function, as needed.\n Returns a pointer to a function which looks for the first instance of any of\n the ASCII characters in NEEDLE. Returns its offset, or the end of the haystack\n if it found none.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0g\bge\bet\bt_\b_g\bgl\bly\byp\bph\bh_\b_s\bsc\bca\ban\bnn\bne\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n@@ -691,29 +691,29 @@\n get_glyph_scanner\n Look up the glyph scanner function for a given encoding group.\n To identify the glyph boundaries in a buffer, call this to obtain the scanner\n function appropriate for the buffer's encoding. Then, repeatedly call the\n scanner function to find the glyphs.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0g\bge\bet\bt_\b_s\bs_\b_c\bch\bha\bar\br_\b_f\bfi\bin\bnd\bde\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n template\n-PQXX_PURE constexpr _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc ( encoding_group\u00a0 e\ben\bnc\bc ) inlineconstexpr\n+PQXX_PURE _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc ( encoding_group\u00a0 e\ben\bnc\bc ) inlineconstexpr\n * pqxx::internal::get_s_char_finder\n Look up a \"sentry\" character search function for an encoding group.\n This version returns a finder function that does not check buffer bounds. It\n just assumes that one of the NEEDLE characters will be there.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0i\bis\bs_\b_d\bdi\big\bgi\bit\bt(\b()\b) *\b**\b**\b**\b**\b*\n-template\n-constexpr bool pqxx::internal:: ( CHAR\u00a0 c\bc ) inlineconstexprnoexcept\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bH_\bA_\bR >\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl pqxx::internal:: ( _\bC_\bH_\bA_\bR\u00a0 c\bc ) inlineconstexprnoexcept\n is_digit\n A safer and more generic replacement for std::isdigit.\n Turns out std::isdigit isn't as easy to use as it sounds. It takes an int, but\n requires it to be nonnegative. Which means it's an outright liability on\n systems where char is signed.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bma\bap\bp_\b_a\bas\bsc\bci\bii\bi_\b_s\bse\bea\bar\brc\bch\bh_\b_g\bgr\bro\bou\bup\bp(\b()\b) *\b**\b**\b**\b**\b*\n-constexpr\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br\n encoding_group pqxx:: ( encoding_group\u00a0 e\ben\bnc\bc ) inlineconstexprnoexcept\n internal::\n map_ascii_search_group\n Just for searching an ASCII character, what encoding can we use here?\n Maps an encoding group to an encoding group that we can apply for the specific\n purpose of looking for a given ASCII character.\n The \"difficult\" encoding groups will map to themselves. But the ones that work\n@@ -721,29 +721,29 @@\n character cannot contain a byte that happens to be in the ASCII range. This\n holds for the single-byte encodings, for example, but also for UTF-8.\n For those encodings, we can just pretend that we're dealing with a single-byte\n encoding and scan byte-by-byte until we find a byte with the value we're\n looking for. We don't actually need to know where the boundaries between the\n characters are.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0m\bme\bem\bmb\bbe\ber\br_\b_a\bar\brg\bgs\bs_\b_f\bf(\b()\b) *\b**\b**\b**\b**\b*\n-template\n-std::tuple< ARGS... > pqxx::internal:: ( RETURN(CLASS::*)(ARGS...)\u00a0 )\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bL_\bA_\bS_\bS , _\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bR_\bE_\bT_\bU_\bR_\bN , typename... ARGS>\n+std::tuple< ARGS... > pqxx::internal:: ( _\bR_\bE_\bT_\bU_\bR_\bN(CLASS::*)(ARGS...)\u00a0 )\n member_args_f\n Helper for determining a member function's parameter types.\n Helper for determining a const member function's parameter types.\n This function has no definition. It's not meant to be actually called. It's\n just there for pattern-matching in the compiler, so we can use its hypothetical\n return value.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0p\bpa\bar\brs\bse\be_\b_c\bco\bom\bmp\bpo\bos\bsi\bit\bte\be_\b_f\bfi\bie\bel\bld\bd(\b()\b) *\b**\b**\b**\b**\b*\n-template\n-void pqxx::internal:: ( std::size_t &\u00a0 i\bin\bnd\bde\bex\bx,\n+template\n+_\bv_\bo_\bi_\bd pqxx::internal:: ( std::size_t &\u00a0 i\bin\bnd\bde\bex\bx,\n parse_composite_field\n std::string_view\u00a0 i\bin\bnp\bpu\but\bt,\n std::size_t &\u00a0 p\bpo\bos\bs, inline\n- T &\u00a0 f\bfi\bie\bel\bld\bd,\n+ _\bT &\u00a0 f\bfi\bie\bel\bld\bd,\n std::size_t\u00a0 l\bla\bas\bst\bt_\b_f\bfi\bie\bel\bld\bd\u00a0\n )\n Parse a field of a composite-type value.\n T is the C++ type of the field we're parsing, and index is its zero-based\n number.\n Strip off the leading parenthesis or bracket yourself before parsing. However,\n this function will parse the lcosing parenthesis or bracket.\n@@ -761,82 +761,82 @@\n otherwise.\n field Destination for the parsed value.\n scan Glyph scanning function for the relevant encoding type.\n last_field Number of the last field in the value (zero-based). When\n parsing the last field, this will equal index.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0s\bsc\bca\ban\bn_\b_d\bdo\bou\bub\bbl\ble\be_\b_q\bqu\buo\bot\bte\bed\bd_\b_s\bst\btr\bri\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n template\n-std::size_t pqxx::internal:: ( char const\u00a0 i\bin\bnp\bpu\but\bt[],\n+std::size_t pqxx::internal:: ( _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt\u00a0 i\bin\bnp\bpu\but\bt[],\n scan_double_quoted_string\n std::size_t\u00a0 s\bsi\biz\bze\be, inline\n std::size_t\u00a0 p\bpo\bos\bs\u00a0\n )\n input[pos] must be the opening double quote.\n The backend double-quotes strings in composites or arrays, when needed. Special\n characters are escaped using backslashes.\n Returns the offset of the first position after the closing quote.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0s\bsc\bca\ban\bn_\b_u\bun\bnq\bqu\buo\bot\bte\bed\bd_\b_s\bst\btr\bri\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n template\n-std::size_t pqxx::internal::scan_unquoted_string ( char const\u00a0 i\bin\bnp\bpu\but\bt[],\n+std::size_t pqxx::internal::scan_unquoted_string ( _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt\u00a0 i\bin\bnp\bpu\but\bt[],\n std::size_t\u00a0 s\bsi\biz\bze\be, inline\n std::size_t\u00a0 p\bpo\bos\bs\u00a0\n )\n Find the end of an unquoted string in an array or composite-type value.\n Stops when it gets to the end of the input; or when it sees any of the\n characters in STOP which has not been escaped.\n For array values, STOP is an array element separator (typically comma, or\n semicolon), or a closing brace. For a value of a composite type, STOP is a\n comma or a closing parenthesis.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0s\bsi\biz\bze\be_\b_e\bes\bsc\bc_\b_b\bbi\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n-constexpr std::\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::\n size_t pqxx:: ( std::size_t\u00a0 b\bbi\bin\bna\bar\bry\by_\b_b\bby\byt\bte\bes\bs ) inlineconstexprnoexcept\n internal::\n size_esc_bin\n Compute buffer size needed to escape binary data for use as a BYTEA.\n This uses the hex-escaping format. The return value includes room for the \"\\x\"\n prefix.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0s\bsi\biz\bze\be_\b_u\bun\bne\bes\bsc\bc_\b_b\bbi\bin\bn(\b()\b) *\b**\b**\b**\b**\b*\n-constexpr std::\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::\n size_t pqxx:: ( std::size_t\u00a0 e\bes\bsc\bca\bap\bpe\bed\bd_\b_b\bby\byt\bte\bes\bs ) inlineconstexprnoexcept\n internal::\n size_unesc_bin\n Compute binary size from the size of its escaped version.\n Do not include a terminating zero in escaped_bytes.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0s\bsk\bki\bip\bp_\b_i\bin\bni\bit\bt_\b_s\bss\bsl\bl(\b()\b) *\b**\b**\b**\b**\b*\n-void PQXX_COLD PQXX_LIBEXPORT pqxx:: ( int\u00a0 s\bsk\bki\bip\bps\bs ) noexcept\n+_\bv_\bo_\bi_\bd PQXX_COLD PQXX_LIBEXPORT pqxx:: ( _\bi_\bn_\bt\u00a0 s\bsk\bki\bip\bps\bs ) noexcept\n internal::skip_init_ssl\n Control OpenSSL/crypto library initialisation.\n This is an internal helper. Unless you're working on libpqxx itself, use _\bp_\bq_\bx_\bx_\b:_\b:\n _\bs_\bk_\bi_\bp_\b__\bi_\bn_\bi_\bt_\b__\bs_\bs_\bl instead.\n Parameters\n flags a bitmask of 1 << flag for each of the skip_init flags.\n Ignores the _\bs_\bk_\bi_\bp_\b__\bi_\bn_\bi_\bt_\b:_\b:_\bn_\bo_\bt_\bh_\bi_\bn_\bg flag.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0s\bst\bta\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br_\b_o\bov\bve\ber\brr\bru\bun\bn(\b()\b) *\b**\b**\b**\b**\b*\n-std::string PQXX_LIBEXPORT pqxx::internal:: ( int\u00a0 h\bha\bav\bve\be_\b_b\bby\byt\bte\bes\bs,\n+std::string PQXX_LIBEXPORT pqxx::internal:: ( _\bi_\bn_\bt\u00a0 h\bha\bav\bve\be_\b_b\bby\byt\bte\bes\bs,\n state_buffer_overrun\n- int\u00a0 n\bne\bee\bed\bd_\b_b\bby\byt\bte\bes\bs\u00a0\n+ _\bi_\bn_\bt\u00a0 n\bne\bee\bed\bd_\b_b\bby\byt\bte\bes\bs\u00a0\n )\n Summarize buffer overrun.\n Don't worry about the exact parameter types: the sizes will be reasonably\n small, and nonnegative.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0s\bst\btr\bri\bip\bp_\b_t\bty\byp\bpe\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n template\n-std::tuple< _\bs_\bt_\br_\bi_\bp_\b__\bt< TYPES >... > pqxx:: ( std::tuple< TYPES... > const &\u00a0 )\n+std::tuple< _\bs_\bt_\br_\bi_\bp_\b__\bt< _\bT_\bY_\bP_\bE_\bS >... > pqxx:: ( std::tuple< TYPES... > _\bc_\bo_\bn_\bs_\bt &\u00a0 )\n internal::strip_types\n Helper: Apply strip_t to each of a tuple type's component types.\n This function has no definition. It is not meant to be called, only to be used\n to deduce the right types.\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0w\bwa\bai\bit\bt_\b_f\bfo\bor\br(\b()\b) *\b**\b**\b**\b**\b*\n-void pqxx::internal::wait_for ( unsigned int\u00a0 m\bmi\bic\bcr\bro\bos\bse\bec\bco\bon\bnd\bds\bs )\n+_\bv_\bo_\bi_\bd pqxx::internal::wait_for ( _\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\bi_\bn_\bt\u00a0 m\bmi\bic\bcr\bro\bos\bse\bec\bco\bon\bnd\bds\bs )\n Wait.\n This is normally std::this_thread::sleep_for(). But MinGW's thread header\n doesn't work, so we must be careful about including it.\n *\b**\b**\b**\b**\b* V\bVa\bar\bri\bia\bab\bbl\ble\be D\bDo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n *\b**\b**\b**\b**\b* _\b?\b\u25c6_\b?\b\u00a0i\bit\bte\ber\bra\bat\bto\bor\br_\b_i\bid\bde\ben\bnt\bti\bit\bty\by *\b**\b**\b**\b**\b*\n-template\n-constexpr auto const pqxx::internal::iterator_identity inlineconstexpr\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bI_\bT_\bE_\bR_\bA_\bT_\bO_\bR >\n+_\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\ba_\bu_\bt_\bo _\bc_\bo_\bn_\bs_\bt pqxx::internal::iterator_identity inlineconstexpr\n I\bIn\bni\bit\bti\bia\bal\bl v\bva\bal\blu\bue\be:\b:\n {\n [](decltype(*std::declval()) x) { return x; }}\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n * Generated by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal_1_1pq.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1internal_1_1pq.html", "unified_diff": "@@ -99,31 +99,31 @@\n \n

Forward declarations of libpq types as needed in libpqxx headers. \n More...

\n \n \n \n+using \n \n \n+using \n \n \n+using \n \n \n+using \n \n

\n Typedefs

\n-using PGconn = pg_conn
PGconn = pg_conn
 
\n-using PGresult = pg_result
PGresult = pg_result
 
\n-using PGnotify = pgNotify
PGnotify = pgNotify
 
\n-using PQnoticeProcessor = void(*)(void *, char const *)
PQnoticeProcessor = void(*)(void *, char const *)
 
\n \n \n-\n+void \n+\n \n

\n Functions

\n-void pqfreemem (void const *) noexcept
 Wrapper for PQfreemem(), with C++ linkage.
pqfreemem (void const *) noexcept
 Wrapper for PQfreemem(), with C++ linkage.
 
\n

Detailed Description

\n

Forward declarations of libpq types as needed in libpqxx headers.

\n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,25 +3,25 @@\n Loading...\n Searching...\n No Matches\n _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n pqxx::internal::pq Namespace Reference\n Forward declarations of libpq types as needed in libpqxx headers. _\bM_\bo_\br_\be_\b._\b._\b.\n T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-using\u00a0 P\bPG\bGc\bco\bon\bnn\bn = pg_conn\n+_\bu_\bs_\bi_\bn_\bg\u00a0 P\bPG\bGc\bco\bon\bnn\bn = _\bp_\bg_\b__\bc_\bo_\bn_\bn\n \u00a0\n-using\u00a0 P\bPG\bGr\bre\bes\bsu\bul\blt\bt = pg_result\n+_\bu_\bs_\bi_\bn_\bg\u00a0 P\bPG\bGr\bre\bes\bsu\bul\blt\bt = _\bp_\bg_\b__\br_\be_\bs_\bu_\bl_\bt\n \u00a0\n-using\u00a0 P\bPG\bGn\bno\bot\bti\bif\bfy\by = pgNotify\n+_\bu_\bs_\bi_\bn_\bg\u00a0 P\bPG\bGn\bno\bot\bti\bif\bfy\by = _\bp_\bg_\bN_\bo_\bt_\bi_\bf_\by\n \u00a0\n-using\u00a0 P\bPQ\bQn\bno\bot\bti\bic\bce\beP\bPr\bro\boc\bce\bes\bss\bso\bor\br = void(*)(void *, char const *)\n+_\bu_\bs_\bi_\bn_\bg\u00a0 P\bPQ\bQn\bno\bot\bti\bic\bce\beP\bPr\bro\boc\bce\bes\bss\bso\bor\br = _\bv_\bo_\bi_\bd(*)(_\bv_\bo_\bi_\bd *, _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt *)\n \u00a0\n F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-void\u00a0 p\bpq\bqf\bfr\bre\bee\bem\bme\bem\bm (void const *) noexcept\n-\u00a0 Wrapper for PQfreemem(), with C++ linkage.\n+_\bv_\bo_\bi_\bd\u00a0 p\bpq\bqf\bfr\bre\bee\bem\bme\bem\bm (_\bv_\bo_\bi_\bd _\bc_\bo_\bn_\bs_\bt *) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n+\u00a0 Wrapper for _\bP_\bQ_\bf_\br_\be_\be_\bm_\be_\bm_\b(_\b), with C++ linkage.\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n Forward declarations of libpq types as needed in libpqxx headers.\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n * _\bp_\bq\n * Generated by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1prepare.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/namespacepqxx_1_1prepare.html", "unified_diff": "@@ -90,15 +90,15 @@\n
\n \n
\n
pqxx::prepare Namespace Reference
\n
\n
\n

Detailed Description

\n-
Deprecated:
The new params class replaces all of this.
\n+
Deprecated:
The new params class replaces all of this.
\n
\n
\n \n
\n
    \n
  • pqxx
  • prepare
  • \n
  • Generated by \"doxygen\"/ 1.9.8
  • \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreedata.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreedata.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -21,59 +21,59 @@\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n \n @licend The above is the entire license notice for the JavaScript code in this file\n */\n var NAVTREE = [\n [\"libpqxx\", \"index.html\", [\n [\"Accessing results and result rows\", \"accessing-results.html\", [\n- [\"Querying rows of data\", \"accessing-results.html#autotoc_md30\", null],\n- [\"Streaming rows\", \"accessing-results.html#autotoc_md31\", null],\n- [\"Results with metadata\", \"accessing-results.html#autotoc_md32\", null]\n+ [\"Querying rows of data\", \"accessing-results.html#autotoc_md0\", null],\n+ [\"Streaming rows\", \"accessing-results.html#autotoc_md1\", null],\n+ [\"Results with metadata\", \"accessing-results.html#autotoc_md2\", null]\n ]],\n [\"Binary data\", \"binary.html\", [\n- [\"Caveats\", \"binary.html#autotoc_md0\", null]\n+ [\"Caveats\", \"binary.html#autotoc_md3\", null]\n ]],\n [\"Supporting additional data types\", \"datatypes.html\", [\n- [\"Converting types\", \"datatypes.html#autotoc_md1\", null],\n- [\"Supporting a new type\", \"datatypes.html#autotoc_md2\", null],\n- [\"Your type\", \"datatypes.html#autotoc_md3\", null],\n- [\"Specialise type_name\", \"datatypes.html#autotoc_md4\", null],\n- [\"Specialise nullness\", \"datatypes.html#autotoc_md5\", null],\n- [\"Specialise string_traits\", \"datatypes.html#autotoc_md6\", [\n- [\"from_string\", \"datatypes.html#autotoc_md7\", null],\n- [\"to_buf\", \"datatypes.html#autotoc_md8\", null],\n- [\"into_buf\", \"datatypes.html#autotoc_md9\", null],\n- [\"size_buffer\", \"datatypes.html#autotoc_md10\", null]\n+ [\"Converting types\", \"datatypes.html#autotoc_md4\", null],\n+ [\"Supporting a new type\", \"datatypes.html#autotoc_md5\", null],\n+ [\"Your type\", \"datatypes.html#autotoc_md6\", null],\n+ [\"Specialise type_name\", \"datatypes.html#autotoc_md7\", null],\n+ [\"Specialise nullness\", \"datatypes.html#autotoc_md8\", null],\n+ [\"Specialise string_traits\", \"datatypes.html#autotoc_md9\", [\n+ [\"from_string\", \"datatypes.html#autotoc_md10\", null],\n+ [\"to_buf\", \"datatypes.html#autotoc_md11\", null],\n+ [\"into_buf\", \"datatypes.html#autotoc_md12\", null],\n+ [\"size_buffer\", \"datatypes.html#autotoc_md13\", null]\n ]],\n- [\"Optional: Specialise is_unquoted_safe\", \"datatypes.html#autotoc_md11\", null],\n- [\"Optional: Specialise param_format\", \"datatypes.html#autotoc_md12\", null]\n+ [\"Optional: Specialise is_unquoted_safe\", \"datatypes.html#autotoc_md14\", null],\n+ [\"Optional: Specialise param_format\", \"datatypes.html#autotoc_md15\", null]\n ]],\n [\"String escaping\", \"escaping.html\", [\n- [\"SQL injection\", \"escaping.html#autotoc_md13\", null],\n- [\"Using the esc functions\", \"escaping.html#autotoc_md14\", null]\n+ [\"SQL injection\", \"escaping.html#autotoc_md16\", null],\n+ [\"Using the esc functions\", \"escaping.html#autotoc_md17\", null]\n ]],\n [\"Getting started\", \"getting-started.html\", null],\n [\"Statement parameters\", \"parameters.html\", [\n- [\"Multiple parameters\", \"parameters.html#autotoc_md15\", null],\n- [\"Generating placeholders\", \"parameters.html#autotoc_md16\", null]\n+ [\"Multiple parameters\", \"parameters.html#autotoc_md18\", null],\n+ [\"Generating placeholders\", \"parameters.html#autotoc_md19\", null]\n ]],\n [\"Performance features\", \"performance.html\", null],\n [\"Prepared statements\", \"prepared.html\", [\n- [\"Preparing a statement\", \"prepared.html#autotoc_md17\", null],\n- [\"Parameters\", \"prepared.html#autotoc_md18\", null],\n- [\"A special prepared statement\", \"prepared.html#autotoc_md19\", null],\n- [\"Performance note\", \"prepared.html#autotoc_md20\", null],\n- [\"Zero bytes\", \"prepared.html#autotoc_md21\", null]\n+ [\"Preparing a statement\", \"prepared.html#autotoc_md20\", null],\n+ [\"Parameters\", \"prepared.html#autotoc_md21\", null],\n+ [\"A special prepared statement\", \"prepared.html#autotoc_md22\", null],\n+ [\"Performance note\", \"prepared.html#autotoc_md23\", null],\n+ [\"Zero bytes\", \"prepared.html#autotoc_md24\", null]\n ]],\n [\"Streams\", \"streams.html\", [\n- [\"Interlude: null values\", \"streams.html#autotoc_md22\", null],\n- [\"Streaming data from a query\", \"streams.html#autotoc_md23\", [\n- [\"Is streaming right for my query?\", \"streams.html#autotoc_md24\", null]\n+ [\"Interlude: null values\", \"streams.html#autotoc_md25\", null],\n+ [\"Streaming data from a query\", \"streams.html#autotoc_md26\", [\n+ [\"Is streaming right for my query?\", \"streams.html#autotoc_md27\", null]\n ]],\n- [\"Streaming data into a table\", \"streams.html#autotoc_md25\", null]\n+ [\"Streaming data into a table\", \"streams.html#autotoc_md28\", null]\n ]],\n [\"Thread safety\", \"thread-safety.html\", null],\n [\"Deprecated List\", \"deprecated.html\", null],\n [\"Topics\", \"topics.html\", \"topics\"],\n [\"Namespaces\", \"namespaces.html\", [\n [\"Namespace List\", \"namespaces.html\", \"namespaces_dup\"],\n [\"Namespace Members\", \"namespacemembers.html\", [\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex0.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,252 +1,252 @@\n var NAVTREEINDEX0 = {\n \"accessing-results.html\": [0],\n- \"accessing-results.html#autotoc_md30\": [0, 0],\n- \"accessing-results.html#autotoc_md31\": [0, 1],\n- \"accessing-results.html#autotoc_md32\": [0, 2],\n+ \"accessing-results.html#autotoc_md0\": [0, 0],\n+ \"accessing-results.html#autotoc_md1\": [0, 1],\n+ \"accessing-results.html#autotoc_md2\": [0, 2],\n \"annotated.html\": [13, 0],\n \"array-composite_8hxx_source.html\": [14, 0, 0, 0, 0, 1],\n \"array_8hxx_source.html\": [14, 0, 0, 0, 1],\n \"binary.html\": [1],\n- \"binary.html#autotoc_md0\": [1, 0],\n+ \"binary.html#autotoc_md3\": [1, 0],\n \"binarystring_8hxx_source.html\": [14, 0, 0, 0, 2],\n \"blob_8hxx_source.html\": [14, 0, 0, 0, 3],\n \"callgate_8hxx_source.html\": [14, 0, 0, 0, 0, 2],\n \"classes.html\": [13, 1],\n \"classpqxx_1_1array.html\": [13, 0, 0, 2],\n \"classpqxx_1_1array.html\": [12, 0, 0, 3],\n- \"classpqxx_1_1array.html#a0e2b93e6f98dbc5eb22de85559f2669f\": [12, 0, 0, 3, 1],\n \"classpqxx_1_1array.html#a0e2b93e6f98dbc5eb22de85559f2669f\": [13, 0, 0, 2, 1],\n+ \"classpqxx_1_1array.html#a0e2b93e6f98dbc5eb22de85559f2669f\": [12, 0, 0, 3, 1],\n \"classpqxx_1_1array.html#a14d57111c8af2324a8e9e8e3df162d9d\": [13, 0, 0, 2, 3],\n \"classpqxx_1_1array.html#a14d57111c8af2324a8e9e8e3df162d9d\": [12, 0, 0, 3, 3],\n \"classpqxx_1_1array.html#a2499a20fcc7d9da7e7f303b6e16fb254\": [13, 0, 0, 2, 4],\n \"classpqxx_1_1array.html#a2499a20fcc7d9da7e7f303b6e16fb254\": [12, 0, 0, 3, 4],\n- \"classpqxx_1_1array.html#a36d27b1f7e366a07944115a382aa4087\": [13, 0, 0, 2, 8],\n \"classpqxx_1_1array.html#a36d27b1f7e366a07944115a382aa4087\": [12, 0, 0, 3, 8],\n+ \"classpqxx_1_1array.html#a36d27b1f7e366a07944115a382aa4087\": [13, 0, 0, 2, 8],\n \"classpqxx_1_1array.html#a592afe2ec16fbb793501e84d805c87eb\": [13, 0, 0, 2, 9],\n \"classpqxx_1_1array.html#a592afe2ec16fbb793501e84d805c87eb\": [12, 0, 0, 3, 9],\n \"classpqxx_1_1array.html#a707b514df7835fa198a29ae68897efd8\": [13, 0, 0, 2, 11],\n \"classpqxx_1_1array.html#a707b514df7835fa198a29ae68897efd8\": [12, 0, 0, 3, 11],\n- \"classpqxx_1_1array.html#a76252c66ef91327bc8c5ae296cb9aacb\": [13, 0, 0, 2, 6],\n \"classpqxx_1_1array.html#a76252c66ef91327bc8c5ae296cb9aacb\": [12, 0, 0, 3, 6],\n+ \"classpqxx_1_1array.html#a76252c66ef91327bc8c5ae296cb9aacb\": [13, 0, 0, 2, 6],\n \"classpqxx_1_1array.html#aa091e8641639a3802f44b565194d1119\": [12, 0, 0, 3, 2],\n \"classpqxx_1_1array.html#aa091e8641639a3802f44b565194d1119\": [13, 0, 0, 2, 2],\n \"classpqxx_1_1array.html#ac2f300e0917b8e0afbc9d77bbc26534a\": [12, 0, 0, 3, 5],\n \"classpqxx_1_1array.html#ac2f300e0917b8e0afbc9d77bbc26534a\": [13, 0, 0, 2, 5],\n- \"classpqxx_1_1array.html#ad0bf0e010691f056bebaa506f9e034dc\": [13, 0, 0, 2, 10],\n \"classpqxx_1_1array.html#ad0bf0e010691f056bebaa506f9e034dc\": [12, 0, 0, 3, 10],\n- \"classpqxx_1_1array.html#adc708c5c347c90b17a33e28d5fac08c0\": [13, 0, 0, 2, 0],\n+ \"classpqxx_1_1array.html#ad0bf0e010691f056bebaa506f9e034dc\": [13, 0, 0, 2, 10],\n \"classpqxx_1_1array.html#adc708c5c347c90b17a33e28d5fac08c0\": [12, 0, 0, 3, 0],\n- \"classpqxx_1_1array.html#af0f6cbf8e3621dc46e59b9563ed436b1\": [12, 0, 0, 3, 7],\n+ \"classpqxx_1_1array.html#adc708c5c347c90b17a33e28d5fac08c0\": [13, 0, 0, 2, 0],\n \"classpqxx_1_1array.html#af0f6cbf8e3621dc46e59b9563ed436b1\": [13, 0, 0, 2, 7],\n+ \"classpqxx_1_1array.html#af0f6cbf8e3621dc46e59b9563ed436b1\": [12, 0, 0, 3, 7],\n \"classpqxx_1_1array__parser.html\": [13, 0, 0, 3],\n \"classpqxx_1_1array__parser.html\": [12, 0, 0, 4],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189e\": [12, 0, 0, 4, 0],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189e\": [13, 0, 0, 3, 0],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea6b2ded51d81a4403d8a4bd25fa1e57ee\": [13, 0, 0, 3, 0, 4],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea6b2ded51d81a4403d8a4bd25fa1e57ee\": [12, 0, 0, 4, 0, 4],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea776234b9f0a5c0e802f2790824042092\": [13, 0, 0, 3, 0, 0],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea776234b9f0a5c0e802f2790824042092\": [12, 0, 0, 4, 0, 0],\n- \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea863a85b49df560a48bb166fcbf59f8b4\": [13, 0, 0, 3, 0, 3],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea863a85b49df560a48bb166fcbf59f8b4\": [12, 0, 0, 4, 0, 3],\n- \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea9e374dadbd88854fd5b2631a6b83a295\": [13, 0, 0, 3, 0, 2],\n+ \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea863a85b49df560a48bb166fcbf59f8b4\": [13, 0, 0, 3, 0, 3],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea9e374dadbd88854fd5b2631a6b83a295\": [12, 0, 0, 4, 0, 2],\n+ \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea9e374dadbd88854fd5b2631a6b83a295\": [13, 0, 0, 3, 0, 2],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189eab11c3eff6dd36f1f7136020d32b38051\": [12, 0, 0, 4, 0, 1],\n \"classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189eab11c3eff6dd36f1f7136020d32b38051\": [13, 0, 0, 3, 0, 1],\n- \"classpqxx_1_1array__parser.html#a4d31bd279a4e2314030b8f86b2dd3c2e\": [13, 0, 0, 3, 2],\n \"classpqxx_1_1array__parser.html#a4d31bd279a4e2314030b8f86b2dd3c2e\": [12, 0, 0, 4, 2],\n- \"classpqxx_1_1array__parser.html#accdb2ebade9563ca1c396925d65ce6ff\": [13, 0, 0, 3, 1],\n+ \"classpqxx_1_1array__parser.html#a4d31bd279a4e2314030b8f86b2dd3c2e\": [13, 0, 0, 3, 2],\n \"classpqxx_1_1array__parser.html#accdb2ebade9563ca1c396925d65ce6ff\": [12, 0, 0, 4, 1],\n- \"classpqxx_1_1basic__fieldstream.html\": [12, 0, 0, 5],\n+ \"classpqxx_1_1array__parser.html#accdb2ebade9563ca1c396925d65ce6ff\": [13, 0, 0, 3, 1],\n \"classpqxx_1_1basic__fieldstream.html\": [13, 0, 0, 4],\n- \"classpqxx_1_1basic__ilostream.html\": [12, 0, 0, 6],\n+ \"classpqxx_1_1basic__fieldstream.html\": [12, 0, 0, 5],\n \"classpqxx_1_1basic__ilostream.html\": [13, 0, 0, 5],\n+ \"classpqxx_1_1basic__ilostream.html\": [12, 0, 0, 6],\n \"classpqxx_1_1basic__ilostream.html#a1ad04f291d7854a4dd66a3ea72035534\": [12, 0, 0, 6, 1],\n \"classpqxx_1_1basic__ilostream.html#a1ad04f291d7854a4dd66a3ea72035534\": [13, 0, 0, 5, 1],\n- \"classpqxx_1_1basic__ilostream.html#a67f1cdf6e05f02e4ac2bbcde5ce117b8\": [12, 0, 0, 6, 0],\n \"classpqxx_1_1basic__ilostream.html#a67f1cdf6e05f02e4ac2bbcde5ce117b8\": [13, 0, 0, 5, 0],\n+ \"classpqxx_1_1basic__ilostream.html#a67f1cdf6e05f02e4ac2bbcde5ce117b8\": [12, 0, 0, 6, 0],\n \"classpqxx_1_1basic__lostream.html\": [13, 0, 0, 6],\n \"classpqxx_1_1basic__lostream.html\": [12, 0, 0, 7],\n- \"classpqxx_1_1basic__lostream.html#a8aaf8ee6fd445f410ce1153212315baa\": [13, 0, 0, 6, 0],\n \"classpqxx_1_1basic__lostream.html#a8aaf8ee6fd445f410ce1153212315baa\": [12, 0, 0, 7, 0],\n- \"classpqxx_1_1basic__lostream.html#ac8a118d4e4b7eb0acff3df853d698b66\": [13, 0, 0, 6, 1],\n+ \"classpqxx_1_1basic__lostream.html#a8aaf8ee6fd445f410ce1153212315baa\": [13, 0, 0, 6, 0],\n \"classpqxx_1_1basic__lostream.html#ac8a118d4e4b7eb0acff3df853d698b66\": [12, 0, 0, 7, 1],\n- \"classpqxx_1_1basic__olostream.html\": [12, 0, 0, 8],\n+ \"classpqxx_1_1basic__lostream.html#ac8a118d4e4b7eb0acff3df853d698b66\": [13, 0, 0, 6, 1],\n \"classpqxx_1_1basic__olostream.html\": [13, 0, 0, 7],\n+ \"classpqxx_1_1basic__olostream.html\": [12, 0, 0, 8],\n \"classpqxx_1_1basic__olostream.html#a48a66d3ebac27506cfcccd2d30e27e9e\": [13, 0, 0, 7, 0],\n \"classpqxx_1_1basic__olostream.html#a48a66d3ebac27506cfcccd2d30e27e9e\": [12, 0, 0, 8, 0],\n- \"classpqxx_1_1basic__olostream.html#aa444228f010d79bbbc2b23a10cb20e5c\": [12, 0, 0, 8, 1],\n \"classpqxx_1_1basic__olostream.html#aa444228f010d79bbbc2b23a10cb20e5c\": [13, 0, 0, 7, 1],\n+ \"classpqxx_1_1basic__olostream.html#aa444228f010d79bbbc2b23a10cb20e5c\": [12, 0, 0, 8, 1],\n \"classpqxx_1_1blob.html\": [13, 0, 0, 9],\n \"classpqxx_1_1blob.html\": [12, 0, 0, 10],\n- \"classpqxx_1_1blob.html#a2066f1b112029d66c2a7880592a199e2\": [13, 0, 0, 9, 6],\n \"classpqxx_1_1blob.html#a2066f1b112029d66c2a7880592a199e2\": [12, 0, 0, 10, 6],\n- \"classpqxx_1_1blob.html#a21ffe5a83b60ffa464bd1784e3831a11\": [12, 0, 0, 10, 4],\n+ \"classpqxx_1_1blob.html#a2066f1b112029d66c2a7880592a199e2\": [13, 0, 0, 9, 6],\n \"classpqxx_1_1blob.html#a21ffe5a83b60ffa464bd1784e3831a11\": [13, 0, 0, 9, 4],\n- \"classpqxx_1_1blob.html#a28ff055c22102e0d1bda250d20d265e8\": [13, 0, 0, 9, 11],\n+ \"classpqxx_1_1blob.html#a21ffe5a83b60ffa464bd1784e3831a11\": [12, 0, 0, 10, 4],\n \"classpqxx_1_1blob.html#a28ff055c22102e0d1bda250d20d265e8\": [12, 0, 0, 10, 11],\n+ \"classpqxx_1_1blob.html#a28ff055c22102e0d1bda250d20d265e8\": [13, 0, 0, 9, 11],\n \"classpqxx_1_1blob.html#a3c1c5fcc157476dfe938c6901059502f\": [13, 0, 0, 9, 0],\n \"classpqxx_1_1blob.html#a3c1c5fcc157476dfe938c6901059502f\": [12, 0, 0, 10, 0],\n- \"classpqxx_1_1blob.html#a787f0a89cbff1031e363301f4348c8ec\": [12, 0, 0, 10, 2],\n \"classpqxx_1_1blob.html#a787f0a89cbff1031e363301f4348c8ec\": [13, 0, 0, 9, 2],\n+ \"classpqxx_1_1blob.html#a787f0a89cbff1031e363301f4348c8ec\": [12, 0, 0, 10, 2],\n \"classpqxx_1_1blob.html#a88f116eb30c662386e02a1a47fd859b8\": [13, 0, 0, 9, 10],\n \"classpqxx_1_1blob.html#a88f116eb30c662386e02a1a47fd859b8\": [12, 0, 0, 10, 10],\n- \"classpqxx_1_1blob.html#a95c07a00765b77f9835ca869fe43287a\": [12, 0, 0, 10, 3],\n \"classpqxx_1_1blob.html#a95c07a00765b77f9835ca869fe43287a\": [13, 0, 0, 9, 3],\n- \"classpqxx_1_1blob.html#aafa3ce93f6401c592f8985217be1d416\": [13, 0, 0, 9, 1],\n+ \"classpqxx_1_1blob.html#a95c07a00765b77f9835ca869fe43287a\": [12, 0, 0, 10, 3],\n \"classpqxx_1_1blob.html#aafa3ce93f6401c592f8985217be1d416\": [12, 0, 0, 10, 1],\n- \"classpqxx_1_1blob.html#ac95d070901a97d46659806edd6687f53\": [13, 0, 0, 9, 9],\n+ \"classpqxx_1_1blob.html#aafa3ce93f6401c592f8985217be1d416\": [13, 0, 0, 9, 1],\n \"classpqxx_1_1blob.html#ac95d070901a97d46659806edd6687f53\": [12, 0, 0, 10, 9],\n- \"classpqxx_1_1blob.html#aca130d3433032b610ea94136968d16e5\": [13, 0, 0, 9, 7],\n+ \"classpqxx_1_1blob.html#ac95d070901a97d46659806edd6687f53\": [13, 0, 0, 9, 9],\n \"classpqxx_1_1blob.html#aca130d3433032b610ea94136968d16e5\": [12, 0, 0, 10, 7],\n+ \"classpqxx_1_1blob.html#aca130d3433032b610ea94136968d16e5\": [13, 0, 0, 9, 7],\n \"classpqxx_1_1blob.html#af687083e0ce3884d27e8fcf3f6254a23\": [12, 0, 0, 10, 5],\n \"classpqxx_1_1blob.html#af687083e0ce3884d27e8fcf3f6254a23\": [13, 0, 0, 9, 5],\n \"classpqxx_1_1blob.html#aff777e2a1736d1a24b07e410e846181e\": [12, 0, 0, 10, 8],\n \"classpqxx_1_1blob.html#aff777e2a1736d1a24b07e410e846181e\": [13, 0, 0, 9, 8],\n- \"classpqxx_1_1connecting.html\": [13, 0, 0, 13],\n \"classpqxx_1_1connecting.html\": [12, 0, 0, 14],\n- \"classpqxx_1_1connecting.html#a26fe754177b77ce5d62a7de871d79b7b\": [12, 0, 0, 14, 4],\n+ \"classpqxx_1_1connecting.html\": [13, 0, 0, 13],\n \"classpqxx_1_1connecting.html#a26fe754177b77ce5d62a7de871d79b7b\": [13, 0, 0, 13, 4],\n+ \"classpqxx_1_1connecting.html#a26fe754177b77ce5d62a7de871d79b7b\": [12, 0, 0, 14, 4],\n \"classpqxx_1_1connecting.html#a2859ca4422246743c85e4baf2ea00a1e\": [12, 0, 0, 14, 1],\n \"classpqxx_1_1connecting.html#a2859ca4422246743c85e4baf2ea00a1e\": [13, 0, 0, 13, 1],\n \"classpqxx_1_1connecting.html#a4b39dd46b61ea3e39242213bd4245eb0\": [12, 0, 0, 14, 6],\n \"classpqxx_1_1connecting.html#a4b39dd46b61ea3e39242213bd4245eb0\": [13, 0, 0, 13, 6],\n \"classpqxx_1_1connecting.html#a58084f41892e19eb2a603a95de4f7dd9\": [12, 0, 0, 14, 2],\n \"classpqxx_1_1connecting.html#a58084f41892e19eb2a603a95de4f7dd9\": [13, 0, 0, 13, 2],\n \"classpqxx_1_1connecting.html#aa60ab98dc5a2702929765f05229bf160\": [13, 0, 0, 13, 5],\n \"classpqxx_1_1connecting.html#aa60ab98dc5a2702929765f05229bf160\": [12, 0, 0, 14, 5],\n- \"classpqxx_1_1connecting.html#acf5c44883289c96122a64aeaa5371aa5\": [13, 0, 0, 13, 0],\n \"classpqxx_1_1connecting.html#acf5c44883289c96122a64aeaa5371aa5\": [12, 0, 0, 14, 0],\n+ \"classpqxx_1_1connecting.html#acf5c44883289c96122a64aeaa5371aa5\": [13, 0, 0, 13, 0],\n \"classpqxx_1_1connecting.html#af0022f168b3c81c4f1a156a11a2b28ea\": [12, 0, 0, 14, 3],\n \"classpqxx_1_1connecting.html#af0022f168b3c81c4f1a156a11a2b28ea\": [13, 0, 0, 13, 3],\n \"classpqxx_1_1connection.html\": [12, 0, 0, 15],\n \"classpqxx_1_1connection.html\": [13, 0, 0, 14],\n \"classpqxx_1_1connection.html#a024851ed6f2ee32fa00e0fcf53cf37ac\": [12, 0, 0, 15, 53],\n \"classpqxx_1_1connection.html#a024851ed6f2ee32fa00e0fcf53cf37ac\": [13, 0, 0, 14, 53],\n \"classpqxx_1_1connection.html#a0724de6ed0e9b65267967adaa34c4f78\": [13, 0, 0, 14, 14],\n \"classpqxx_1_1connection.html#a0724de6ed0e9b65267967adaa34c4f78\": [12, 0, 0, 15, 14],\n \"classpqxx_1_1connection.html#a1130bc7963d62dd018b80415cd3f4b75\": [12, 0, 0, 15, 7],\n \"classpqxx_1_1connection.html#a1130bc7963d62dd018b80415cd3f4b75\": [13, 0, 0, 14, 7],\n- \"classpqxx_1_1connection.html#a133c4376f8d97680c64d665770f37171\": [12, 0, 0, 15, 24],\n \"classpqxx_1_1connection.html#a133c4376f8d97680c64d665770f37171\": [13, 0, 0, 14, 24],\n- \"classpqxx_1_1connection.html#a140337eada7fe60e15d8b113b8599f0d\": [13, 0, 0, 14, 32],\n+ \"classpqxx_1_1connection.html#a133c4376f8d97680c64d665770f37171\": [12, 0, 0, 15, 24],\n \"classpqxx_1_1connection.html#a140337eada7fe60e15d8b113b8599f0d\": [12, 0, 0, 15, 32],\n+ \"classpqxx_1_1connection.html#a140337eada7fe60e15d8b113b8599f0d\": [13, 0, 0, 14, 32],\n \"classpqxx_1_1connection.html#a1e401dd0dbd1be80176a691a864f652b\": [13, 0, 0, 14, 28],\n \"classpqxx_1_1connection.html#a1e401dd0dbd1be80176a691a864f652b\": [12, 0, 0, 15, 28],\n \"classpqxx_1_1connection.html#a21cfae9a17fcca3a4f93f21883822fb3\": [12, 0, 0, 15, 43],\n \"classpqxx_1_1connection.html#a21cfae9a17fcca3a4f93f21883822fb3\": [13, 0, 0, 14, 43],\n \"classpqxx_1_1connection.html#a22d2c852a4e1c159c021b04efc04f8e1\": [12, 0, 0, 15, 20],\n \"classpqxx_1_1connection.html#a22d2c852a4e1c159c021b04efc04f8e1\": [13, 0, 0, 14, 20],\n- \"classpqxx_1_1connection.html#a24e6d240181c50ca81a7bfe816185a60\": [12, 0, 0, 15, 1],\n \"classpqxx_1_1connection.html#a24e6d240181c50ca81a7bfe816185a60\": [13, 0, 0, 14, 1],\n+ \"classpqxx_1_1connection.html#a24e6d240181c50ca81a7bfe816185a60\": [12, 0, 0, 15, 1],\n \"classpqxx_1_1connection.html#a276b3fe0ae9d3cc8e5a04f5e9b2bf1cf\": [12, 0, 0, 15, 42],\n \"classpqxx_1_1connection.html#a276b3fe0ae9d3cc8e5a04f5e9b2bf1cf\": [13, 0, 0, 14, 42],\n \"classpqxx_1_1connection.html#a279d1096372ef68e4c45ff51a8fe4f8a\": [13, 0, 0, 14, 35],\n \"classpqxx_1_1connection.html#a279d1096372ef68e4c45ff51a8fe4f8a\": [12, 0, 0, 15, 35],\n- \"classpqxx_1_1connection.html#a286e275a7701a8ac96f839cbf8205258\": [13, 0, 0, 14, 11],\n \"classpqxx_1_1connection.html#a286e275a7701a8ac96f839cbf8205258\": [12, 0, 0, 15, 11],\n+ \"classpqxx_1_1connection.html#a286e275a7701a8ac96f839cbf8205258\": [13, 0, 0, 14, 11],\n \"classpqxx_1_1connection.html#a2da006fb42b49b72f1261b774aaf6e10\": [13, 0, 0, 14, 48],\n \"classpqxx_1_1connection.html#a2da006fb42b49b72f1261b774aaf6e10\": [12, 0, 0, 15, 48],\n \"classpqxx_1_1connection.html#a33b387a15586501afd6d78ea9eabc9f9\": [13, 0, 0, 14, 25],\n \"classpqxx_1_1connection.html#a33b387a15586501afd6d78ea9eabc9f9\": [12, 0, 0, 15, 25],\n \"classpqxx_1_1connection.html#a3b8266efbb47eb4be0acae9ba198459d\": [13, 0, 0, 14, 49],\n \"classpqxx_1_1connection.html#a3b8266efbb47eb4be0acae9ba198459d\": [12, 0, 0, 15, 49],\n \"classpqxx_1_1connection.html#a3eb2374848e1ddf85fe8dfa5f58826f3\": [12, 0, 0, 15, 50],\n \"classpqxx_1_1connection.html#a3eb2374848e1ddf85fe8dfa5f58826f3\": [13, 0, 0, 14, 50],\n \"classpqxx_1_1connection.html#a47a75fc88fccf6e3c4f7042443cac8b9\": [13, 0, 0, 14, 26],\n \"classpqxx_1_1connection.html#a47a75fc88fccf6e3c4f7042443cac8b9\": [12, 0, 0, 15, 26],\n- \"classpqxx_1_1connection.html#a4a24a7f9cf8d23f6c660ea1a0fbc3bf2\": [13, 0, 0, 14, 36],\n \"classpqxx_1_1connection.html#a4a24a7f9cf8d23f6c660ea1a0fbc3bf2\": [12, 0, 0, 15, 36],\n- \"classpqxx_1_1connection.html#a59295a47049b03ab949b3781dd60ed42\": [13, 0, 0, 14, 52],\n+ \"classpqxx_1_1connection.html#a4a24a7f9cf8d23f6c660ea1a0fbc3bf2\": [13, 0, 0, 14, 36],\n \"classpqxx_1_1connection.html#a59295a47049b03ab949b3781dd60ed42\": [12, 0, 0, 15, 52],\n- \"classpqxx_1_1connection.html#a593be839225aadd0b16804647e11c285\": [12, 0, 0, 15, 56],\n+ \"classpqxx_1_1connection.html#a59295a47049b03ab949b3781dd60ed42\": [13, 0, 0, 14, 52],\n \"classpqxx_1_1connection.html#a593be839225aadd0b16804647e11c285\": [13, 0, 0, 14, 56],\n- \"classpqxx_1_1connection.html#a5c68dd44c2a9e64eb2022623659ebc09\": [12, 0, 0, 15, 0],\n+ \"classpqxx_1_1connection.html#a593be839225aadd0b16804647e11c285\": [12, 0, 0, 15, 56],\n \"classpqxx_1_1connection.html#a5c68dd44c2a9e64eb2022623659ebc09\": [13, 0, 0, 14, 0],\n+ \"classpqxx_1_1connection.html#a5c68dd44c2a9e64eb2022623659ebc09\": [12, 0, 0, 15, 0],\n \"classpqxx_1_1connection.html#a5cbd8240e3c74b595ccb535c941433ae\": [13, 0, 0, 14, 59],\n \"classpqxx_1_1connection.html#a5cbd8240e3c74b595ccb535c941433ae\": [12, 0, 0, 15, 59],\n- \"classpqxx_1_1connection.html#a606c6c84a1ff57ae7bfc9e2001847270\": [12, 0, 0, 15, 44],\n \"classpqxx_1_1connection.html#a606c6c84a1ff57ae7bfc9e2001847270\": [13, 0, 0, 14, 44],\n- \"classpqxx_1_1connection.html#a6e6bc476091af546f880c9c572f05375\": [13, 0, 0, 14, 17],\n+ \"classpqxx_1_1connection.html#a606c6c84a1ff57ae7bfc9e2001847270\": [12, 0, 0, 15, 44],\n \"classpqxx_1_1connection.html#a6e6bc476091af546f880c9c572f05375\": [12, 0, 0, 15, 17],\n+ \"classpqxx_1_1connection.html#a6e6bc476091af546f880c9c572f05375\": [13, 0, 0, 14, 17],\n \"classpqxx_1_1connection.html#a6f0d42562cf2e37c1673738bf330b2b7\": [12, 0, 0, 15, 40],\n \"classpqxx_1_1connection.html#a6f0d42562cf2e37c1673738bf330b2b7\": [13, 0, 0, 14, 40],\n \"classpqxx_1_1connection.html#a6f21e952ab8d614eead0b1dfa87598b1\": [13, 0, 0, 14, 57],\n \"classpqxx_1_1connection.html#a6f21e952ab8d614eead0b1dfa87598b1\": [12, 0, 0, 15, 57],\n \"classpqxx_1_1connection.html#a71bc4478b6beac9f8e978a5750980fbb\": [12, 0, 0, 15, 2],\n \"classpqxx_1_1connection.html#a71bc4478b6beac9f8e978a5750980fbb\": [13, 0, 0, 14, 2],\n \"classpqxx_1_1connection.html#a72b6b843cbeb8555ade27ab831e6d6e9\": [12, 0, 0, 15, 19],\n \"classpqxx_1_1connection.html#a72b6b843cbeb8555ade27ab831e6d6e9\": [13, 0, 0, 14, 19],\n \"classpqxx_1_1connection.html#a73e86c75f2d23788c83ce931b74ec108\": [13, 0, 0, 14, 30],\n \"classpqxx_1_1connection.html#a73e86c75f2d23788c83ce931b74ec108\": [12, 0, 0, 15, 30],\n- \"classpqxx_1_1connection.html#a777daa7f80f3e55df9ee50e236f74653\": [12, 0, 0, 15, 21],\n \"classpqxx_1_1connection.html#a777daa7f80f3e55df9ee50e236f74653\": [13, 0, 0, 14, 21],\n- \"classpqxx_1_1connection.html#a7e8f054f91d4e61879039bfdff9b2889\": [13, 0, 0, 14, 18],\n+ \"classpqxx_1_1connection.html#a777daa7f80f3e55df9ee50e236f74653\": [12, 0, 0, 15, 21],\n \"classpqxx_1_1connection.html#a7e8f054f91d4e61879039bfdff9b2889\": [12, 0, 0, 15, 18],\n+ \"classpqxx_1_1connection.html#a7e8f054f91d4e61879039bfdff9b2889\": [13, 0, 0, 14, 18],\n \"classpqxx_1_1connection.html#a7fabf1d8ada47fd82d16a4a50ae7170b\": [12, 0, 0, 15, 23],\n \"classpqxx_1_1connection.html#a7fabf1d8ada47fd82d16a4a50ae7170b\": [13, 0, 0, 14, 23],\n \"classpqxx_1_1connection.html#a841e36a2408cf70fedb68a7f91c43a6e\": [13, 0, 0, 14, 27],\n \"classpqxx_1_1connection.html#a841e36a2408cf70fedb68a7f91c43a6e\": [12, 0, 0, 15, 27],\n- \"classpqxx_1_1connection.html#a84ca9d29d5d2cb1d35fde324a7b3fc71\": [12, 0, 0, 15, 46],\n \"classpqxx_1_1connection.html#a84ca9d29d5d2cb1d35fde324a7b3fc71\": [13, 0, 0, 14, 46],\n- \"classpqxx_1_1connection.html#a8e6a7dbdf531482e63a3ae02db35c8aa\": [12, 0, 0, 15, 10],\n+ \"classpqxx_1_1connection.html#a84ca9d29d5d2cb1d35fde324a7b3fc71\": [12, 0, 0, 15, 46],\n \"classpqxx_1_1connection.html#a8e6a7dbdf531482e63a3ae02db35c8aa\": [13, 0, 0, 14, 10],\n- \"classpqxx_1_1connection.html#a975747afe8d451004680741492b76ae5\": [12, 0, 0, 15, 12],\n+ \"classpqxx_1_1connection.html#a8e6a7dbdf531482e63a3ae02db35c8aa\": [12, 0, 0, 15, 10],\n \"classpqxx_1_1connection.html#a975747afe8d451004680741492b76ae5\": [13, 0, 0, 14, 12],\n+ \"classpqxx_1_1connection.html#a975747afe8d451004680741492b76ae5\": [12, 0, 0, 15, 12],\n \"classpqxx_1_1connection.html#a98dd8efd74b0a0456b177b8aa34ab7f2\": [13, 0, 0, 14, 3],\n \"classpqxx_1_1connection.html#a98dd8efd74b0a0456b177b8aa34ab7f2\": [12, 0, 0, 15, 3],\n- \"classpqxx_1_1connection.html#a98f0397793e45b0ea2d9fa4e7a454167\": [13, 0, 0, 14, 41],\n \"classpqxx_1_1connection.html#a98f0397793e45b0ea2d9fa4e7a454167\": [12, 0, 0, 15, 41],\n- \"classpqxx_1_1connection.html#a9d169190527e1b7da0b84d6405c895bb\": [13, 0, 0, 14, 29],\n+ \"classpqxx_1_1connection.html#a98f0397793e45b0ea2d9fa4e7a454167\": [13, 0, 0, 14, 41],\n \"classpqxx_1_1connection.html#a9d169190527e1b7da0b84d6405c895bb\": [12, 0, 0, 15, 29],\n- \"classpqxx_1_1connection.html#a9d7c7ab0c54a258ac4fab0d562fdbacd\": [13, 0, 0, 14, 60],\n+ \"classpqxx_1_1connection.html#a9d169190527e1b7da0b84d6405c895bb\": [13, 0, 0, 14, 29],\n \"classpqxx_1_1connection.html#a9d7c7ab0c54a258ac4fab0d562fdbacd\": [12, 0, 0, 15, 60],\n+ \"classpqxx_1_1connection.html#a9d7c7ab0c54a258ac4fab0d562fdbacd\": [13, 0, 0, 14, 60],\n \"classpqxx_1_1connection.html#a9f544b1d75c80b9ce5f21a3d6838b176\": [12, 0, 0, 15, 6],\n \"classpqxx_1_1connection.html#a9f544b1d75c80b9ce5f21a3d6838b176\": [13, 0, 0, 14, 6],\n- \"classpqxx_1_1connection.html#aa07fee0ccbf246afdf2b9b873076c8fc\": [13, 0, 0, 14, 22],\n \"classpqxx_1_1connection.html#aa07fee0ccbf246afdf2b9b873076c8fc\": [12, 0, 0, 15, 22],\n+ \"classpqxx_1_1connection.html#aa07fee0ccbf246afdf2b9b873076c8fc\": [13, 0, 0, 14, 22],\n \"classpqxx_1_1connection.html#aa29f2e36001c4715e898f2c1a2ca9d5a\": [13, 0, 0, 14, 15],\n \"classpqxx_1_1connection.html#aa29f2e36001c4715e898f2c1a2ca9d5a\": [12, 0, 0, 15, 15],\n \"classpqxx_1_1connection.html#aa517b7352ea7d8aed937281c295d1f8d\": [12, 0, 0, 15, 31],\n \"classpqxx_1_1connection.html#aa517b7352ea7d8aed937281c295d1f8d\": [13, 0, 0, 14, 31],\n- \"classpqxx_1_1connection.html#aa8dd0b5e748b96a2c82152b8001bdc69\": [12, 0, 0, 15, 38],\n \"classpqxx_1_1connection.html#aa8dd0b5e748b96a2c82152b8001bdc69\": [13, 0, 0, 14, 38],\n+ \"classpqxx_1_1connection.html#aa8dd0b5e748b96a2c82152b8001bdc69\": [12, 0, 0, 15, 38],\n \"classpqxx_1_1connection.html#ab2a631d00b6cf93e6963a48b968cd4ae\": [13, 0, 0, 14, 58],\n \"classpqxx_1_1connection.html#ab2a631d00b6cf93e6963a48b968cd4ae\": [12, 0, 0, 15, 58],\n \"classpqxx_1_1connection.html#ab2fd28a1d384854642cc84dcd54cd450\": [13, 0, 0, 14, 16],\n \"classpqxx_1_1connection.html#ab2fd28a1d384854642cc84dcd54cd450\": [12, 0, 0, 15, 16],\n \"classpqxx_1_1connection.html#ab4cbd2e2d30694fcaf0969c33fbeaa8f\": [13, 0, 0, 14, 4],\n \"classpqxx_1_1connection.html#ab4cbd2e2d30694fcaf0969c33fbeaa8f\": [12, 0, 0, 15, 4],\n \"classpqxx_1_1connection.html#abba2c839bfeba89008baa61abcd5ec30\": [12, 0, 0, 15, 9],\n \"classpqxx_1_1connection.html#abba2c839bfeba89008baa61abcd5ec30\": [13, 0, 0, 14, 9],\n \"classpqxx_1_1connection.html#abefc0dbe2fe33a338b01d863ba586da6\": [12, 0, 0, 15, 45],\n \"classpqxx_1_1connection.html#abefc0dbe2fe33a338b01d863ba586da6\": [13, 0, 0, 14, 45],\n- \"classpqxx_1_1connection.html#ac6888103e47fc344e18d17878cdc2bc7\": [12, 0, 0, 15, 33],\n \"classpqxx_1_1connection.html#ac6888103e47fc344e18d17878cdc2bc7\": [13, 0, 0, 14, 33],\n- \"classpqxx_1_1connection.html#ad1719d51a24c5aa6bd58f03a328a3833\": [12, 0, 0, 15, 8],\n+ \"classpqxx_1_1connection.html#ac6888103e47fc344e18d17878cdc2bc7\": [12, 0, 0, 15, 33],\n \"classpqxx_1_1connection.html#ad1719d51a24c5aa6bd58f03a328a3833\": [13, 0, 0, 14, 8],\n+ \"classpqxx_1_1connection.html#ad1719d51a24c5aa6bd58f03a328a3833\": [12, 0, 0, 15, 8],\n \"classpqxx_1_1connection.html#ad685278470bb6569731fb84665d3af7f\": [13, 0, 0, 14, 55],\n \"classpqxx_1_1connection.html#ad685278470bb6569731fb84665d3af7f\": [12, 0, 0, 15, 55],\n- \"classpqxx_1_1connection.html#add8ab06057cfd57e509c1e4e1f26e944\": [12, 0, 0, 15, 34],\n \"classpqxx_1_1connection.html#add8ab06057cfd57e509c1e4e1f26e944\": [13, 0, 0, 14, 34],\n+ \"classpqxx_1_1connection.html#add8ab06057cfd57e509c1e4e1f26e944\": [12, 0, 0, 15, 34],\n \"classpqxx_1_1connection.html#ae217a0eb7197724be22beeb01b841a5a\": [12, 0, 0, 15, 47],\n \"classpqxx_1_1connection.html#ae217a0eb7197724be22beeb01b841a5a\": [13, 0, 0, 14, 47],\n- \"classpqxx_1_1connection.html#ae23a5c19af62349c1924ec26d93c81d5\": [12, 0, 0, 15, 51],\n \"classpqxx_1_1connection.html#ae23a5c19af62349c1924ec26d93c81d5\": [13, 0, 0, 14, 51],\n- \"classpqxx_1_1connection.html#ae871e3c436af0ed50e1373d9157e7340\": [13, 0, 0, 14, 39],\n+ \"classpqxx_1_1connection.html#ae23a5c19af62349c1924ec26d93c81d5\": [12, 0, 0, 15, 51],\n \"classpqxx_1_1connection.html#ae871e3c436af0ed50e1373d9157e7340\": [12, 0, 0, 15, 39],\n+ \"classpqxx_1_1connection.html#ae871e3c436af0ed50e1373d9157e7340\": [13, 0, 0, 14, 39],\n \"classpqxx_1_1connection.html#aecfa98ec5ec1e783ed8e8737b587a9f0\": [12, 0, 0, 15, 13],\n \"classpqxx_1_1connection.html#aecfa98ec5ec1e783ed8e8737b587a9f0\": [13, 0, 0, 14, 13],\n \"classpqxx_1_1connection.html#af0943810c21272c154befe173f2cd535\": [13, 0, 0, 14, 37],\n \"classpqxx_1_1connection.html#af0943810c21272c154befe173f2cd535\": [12, 0, 0, 15, 37],\n \"classpqxx_1_1connection.html#af312d26f21b1cfd4d063e3b591fb7579\": [12, 0, 0, 15, 54],\n \"classpqxx_1_1connection.html#af312d26f21b1cfd4d063e3b591fb7579\": [13, 0, 0, 14, 54],\n \"classpqxx_1_1connection.html#af40df333a37b9ba5f32d7ce399c397ca\": [13, 0, 0, 14, 5],\n \"classpqxx_1_1connection.html#af40df333a37b9ba5f32d7ce399c397ca\": [12, 0, 0, 15, 5],\n \"classpqxx_1_1const__result__iterator.html\": [13, 0, 0, 15],\n \"classpqxx_1_1const__result__iterator.html\": [12, 0, 0, 16],\n \"classpqxx_1_1const__result__iterator.html#a08b54a64fc3498de70830555d951aa22\": [12, 0, 0, 16, 3],\n \"classpqxx_1_1const__result__iterator.html#a08b54a64fc3498de70830555d951aa22\": [13, 0, 0, 15, 3],\n \"classpqxx_1_1const__result__iterator.html#a20640aad643b5309242056662ca06f98\": [13, 0, 0, 15, 4],\n \"classpqxx_1_1const__result__iterator.html#a20640aad643b5309242056662ca06f98\": [12, 0, 0, 16, 4],\n- \"classpqxx_1_1const__result__iterator.html#a3a7cd99d4e801fca6a538dbad3c7bba6\": [13, 0, 0, 15, 8]\n+ \"classpqxx_1_1const__result__iterator.html#a3a7cd99d4e801fca6a538dbad3c7bba6\": [12, 0, 0, 16, 8]\n };\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex1.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,153 +1,153 @@\n var NAVTREEINDEX1 = {\n- \"classpqxx_1_1const__result__iterator.html#a3a7cd99d4e801fca6a538dbad3c7bba6\": [12, 0, 0, 16, 8],\n+ \"classpqxx_1_1const__result__iterator.html#a3a7cd99d4e801fca6a538dbad3c7bba6\": [13, 0, 0, 15, 8],\n \"classpqxx_1_1const__result__iterator.html#a5ab2cb35eef449dd26f2fbf61267d7c0\": [12, 0, 0, 16, 1],\n \"classpqxx_1_1const__result__iterator.html#a5ab2cb35eef449dd26f2fbf61267d7c0\": [13, 0, 0, 15, 1],\n- \"classpqxx_1_1const__result__iterator.html#a858d47eebdb1b6055a9f75c32d19d4d2\": [13, 0, 0, 15, 6],\n \"classpqxx_1_1const__result__iterator.html#a858d47eebdb1b6055a9f75c32d19d4d2\": [12, 0, 0, 16, 6],\n+ \"classpqxx_1_1const__result__iterator.html#a858d47eebdb1b6055a9f75c32d19d4d2\": [13, 0, 0, 15, 6],\n \"classpqxx_1_1const__result__iterator.html#aac48571e64d26aa73283b8fc9c16d791\": [12, 0, 0, 16, 0],\n \"classpqxx_1_1const__result__iterator.html#aac48571e64d26aa73283b8fc9c16d791\": [13, 0, 0, 15, 0],\n \"classpqxx_1_1const__result__iterator.html#aadd30c2141060d954c16301e3711a02c\": [12, 0, 0, 16, 7],\n \"classpqxx_1_1const__result__iterator.html#aadd30c2141060d954c16301e3711a02c\": [13, 0, 0, 15, 7],\n- \"classpqxx_1_1const__result__iterator.html#ab05c15f1e24c12868f03d46bed456843\": [12, 0, 0, 16, 2],\n \"classpqxx_1_1const__result__iterator.html#ab05c15f1e24c12868f03d46bed456843\": [13, 0, 0, 15, 2],\n- \"classpqxx_1_1const__result__iterator.html#ae87d3164c4be3ececdde872582aacc61\": [12, 0, 0, 16, 5],\n+ \"classpqxx_1_1const__result__iterator.html#ab05c15f1e24c12868f03d46bed456843\": [12, 0, 0, 16, 2],\n \"classpqxx_1_1const__result__iterator.html#ae87d3164c4be3ececdde872582aacc61\": [13, 0, 0, 15, 5],\n+ \"classpqxx_1_1const__result__iterator.html#ae87d3164c4be3ececdde872582aacc61\": [12, 0, 0, 16, 5],\n \"classpqxx_1_1const__reverse__result__iterator.html\": [13, 0, 0, 16],\n \"classpqxx_1_1const__reverse__result__iterator.html\": [12, 0, 0, 17],\n \"classpqxx_1_1const__reverse__result__iterator.html#a18c5f3ab099eac765f63b8e565b7e7b0\": [13, 0, 0, 16, 5],\n \"classpqxx_1_1const__reverse__result__iterator.html#a18c5f3ab099eac765f63b8e565b7e7b0\": [12, 0, 0, 17, 5],\n \"classpqxx_1_1const__reverse__result__iterator.html#a20640aad643b5309242056662ca06f98\": [13, 0, 0, 16, 4],\n \"classpqxx_1_1const__reverse__result__iterator.html#a20640aad643b5309242056662ca06f98\": [12, 0, 0, 17, 4],\n \"classpqxx_1_1const__reverse__result__iterator.html#a422c826fcadc2ee79ac6a61042991910\": [13, 0, 0, 16, 1],\n \"classpqxx_1_1const__reverse__result__iterator.html#a422c826fcadc2ee79ac6a61042991910\": [12, 0, 0, 17, 1],\n \"classpqxx_1_1const__reverse__result__iterator.html#a4b1228c093aa8d3173bbad5a64025beb\": [13, 0, 0, 16, 2],\n \"classpqxx_1_1const__reverse__result__iterator.html#a4b1228c093aa8d3173bbad5a64025beb\": [12, 0, 0, 17, 2],\n \"classpqxx_1_1const__reverse__result__iterator.html#a4ce5bf0280d6dce47212969b614c483a\": [12, 0, 0, 17, 8],\n \"classpqxx_1_1const__reverse__result__iterator.html#a4ce5bf0280d6dce47212969b614c483a\": [13, 0, 0, 16, 8],\n- \"classpqxx_1_1const__reverse__result__iterator.html#a59ab4766b24359228198a1221e320a9f\": [12, 0, 0, 17, 3],\n \"classpqxx_1_1const__reverse__result__iterator.html#a59ab4766b24359228198a1221e320a9f\": [13, 0, 0, 16, 3],\n+ \"classpqxx_1_1const__reverse__result__iterator.html#a59ab4766b24359228198a1221e320a9f\": [12, 0, 0, 17, 3],\n \"classpqxx_1_1const__reverse__result__iterator.html#a9ef46da8bd48998cf9fae1bcbebea0e0\": [13, 0, 0, 16, 0],\n \"classpqxx_1_1const__reverse__result__iterator.html#a9ef46da8bd48998cf9fae1bcbebea0e0\": [12, 0, 0, 17, 0],\n- \"classpqxx_1_1const__reverse__result__iterator.html#aadd30c2141060d954c16301e3711a02c\": [13, 0, 0, 16, 9],\n \"classpqxx_1_1const__reverse__result__iterator.html#aadd30c2141060d954c16301e3711a02c\": [12, 0, 0, 17, 9],\n- \"classpqxx_1_1const__reverse__result__iterator.html#ab3a7ba13b137fbd1b12748b788c7b3d7\": [13, 0, 0, 16, 7],\n+ \"classpqxx_1_1const__reverse__result__iterator.html#aadd30c2141060d954c16301e3711a02c\": [13, 0, 0, 16, 9],\n \"classpqxx_1_1const__reverse__result__iterator.html#ab3a7ba13b137fbd1b12748b788c7b3d7\": [12, 0, 0, 17, 7],\n- \"classpqxx_1_1const__reverse__result__iterator.html#ae87d3164c4be3ececdde872582aacc61\": [13, 0, 0, 16, 6],\n+ \"classpqxx_1_1const__reverse__result__iterator.html#ab3a7ba13b137fbd1b12748b788c7b3d7\": [13, 0, 0, 16, 7],\n \"classpqxx_1_1const__reverse__result__iterator.html#ae87d3164c4be3ececdde872582aacc61\": [12, 0, 0, 17, 6],\n+ \"classpqxx_1_1const__reverse__result__iterator.html#ae87d3164c4be3ececdde872582aacc61\": [13, 0, 0, 16, 6],\n \"classpqxx_1_1const__reverse__row__iterator.html\": [13, 0, 0, 17],\n \"classpqxx_1_1const__reverse__row__iterator.html\": [12, 0, 0, 18],\n \"classpqxx_1_1const__row__iterator.html\": [13, 0, 0, 18],\n \"classpqxx_1_1const__row__iterator.html\": [12, 0, 0, 19],\n- \"classpqxx_1_1cursor__base.html\": [12, 0, 0, 22],\n \"classpqxx_1_1cursor__base.html\": [13, 0, 0, 21],\n+ \"classpqxx_1_1cursor__base.html\": [12, 0, 0, 22],\n \"classpqxx_1_1cursor__base.html#a093c28cd1c29f1c579b57c849fda8c64\": [13, 0, 0, 21, 3],\n \"classpqxx_1_1cursor__base.html#a093c28cd1c29f1c579b57c849fda8c64\": [12, 0, 0, 22, 3],\n- \"classpqxx_1_1cursor__base.html#a580405381178880d7804180c0c396fe5\": [13, 0, 0, 21, 4],\n \"classpqxx_1_1cursor__base.html#a580405381178880d7804180c0c396fe5\": [12, 0, 0, 22, 4],\n- \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2\": [12, 0, 0, 22, 0],\n+ \"classpqxx_1_1cursor__base.html#a580405381178880d7804180c0c396fe5\": [13, 0, 0, 21, 4],\n \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2\": [13, 0, 0, 21, 0],\n+ \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2\": [12, 0, 0, 22, 0],\n \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2a7f6c1ed7719885433353a78946b2c5f3\": [12, 0, 0, 22, 0, 1],\n \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2a7f6c1ed7719885433353a78946b2c5f3\": [13, 0, 0, 21, 0, 1],\n- \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2af440221f717464c87f043899cc117cbf\": [12, 0, 0, 22, 0, 0],\n \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2af440221f717464c87f043899cc117cbf\": [13, 0, 0, 21, 0, 0],\n- \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490\": [12, 0, 0, 22, 1],\n+ \"classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2af440221f717464c87f043899cc117cbf\": [12, 0, 0, 22, 0, 0],\n \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490\": [13, 0, 0, 21, 1],\n- \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a3ace6a7a5ca4ec3b486f2f35fd2420b0\": [12, 0, 0, 22, 1, 0],\n+ \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490\": [12, 0, 0, 22, 1],\n \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a3ace6a7a5ca4ec3b486f2f35fd2420b0\": [13, 0, 0, 21, 1, 0],\n- \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a4c37408c49492bfe9f012812226dd1fd\": [13, 0, 0, 21, 1, 1],\n+ \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a3ace6a7a5ca4ec3b486f2f35fd2420b0\": [12, 0, 0, 22, 1, 0],\n \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a4c37408c49492bfe9f012812226dd1fd\": [12, 0, 0, 22, 1, 1],\n- \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083\": [13, 0, 0, 21, 2],\n+ \"classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a4c37408c49492bfe9f012812226dd1fd\": [13, 0, 0, 21, 1, 1],\n \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083\": [12, 0, 0, 22, 2],\n+ \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083\": [13, 0, 0, 21, 2],\n \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083a12fa229ee3e760f1ca86d66304554b63\": [12, 0, 0, 22, 2, 1],\n \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083a12fa229ee3e760f1ca86d66304554b63\": [13, 0, 0, 21, 2, 1],\n- \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083a8122c0c4a5eb9c9dbf27ab40a2686eb0\": [13, 0, 0, 21, 2, 0],\n \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083a8122c0c4a5eb9c9dbf27ab40a2686eb0\": [12, 0, 0, 22, 2, 0],\n+ \"classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083a8122c0c4a5eb9c9dbf27ab40a2686eb0\": [13, 0, 0, 21, 2, 0],\n \"classpqxx_1_1errorhandler.html\": [12, 0, 0, 27],\n \"classpqxx_1_1errorhandler.html\": [13, 0, 0, 26],\n- \"classpqxx_1_1errorhandler.html#a397ca98800efffe365f52d5998bb8b94\": [13, 0, 0, 26, 0],\n \"classpqxx_1_1errorhandler.html#a397ca98800efffe365f52d5998bb8b94\": [12, 0, 0, 27, 0],\n- \"classpqxx_1_1errorhandler.html#a8404c336eaefab488ab326cbcb704993\": [12, 0, 0, 27, 1],\n+ \"classpqxx_1_1errorhandler.html#a397ca98800efffe365f52d5998bb8b94\": [13, 0, 0, 26, 0],\n \"classpqxx_1_1errorhandler.html#a8404c336eaefab488ab326cbcb704993\": [13, 0, 0, 26, 1],\n- \"classpqxx_1_1exclusive__bound.html\": [13, 0, 0, 27],\n+ \"classpqxx_1_1errorhandler.html#a8404c336eaefab488ab326cbcb704993\": [12, 0, 0, 27, 1],\n \"classpqxx_1_1exclusive__bound.html\": [12, 0, 0, 28],\n+ \"classpqxx_1_1exclusive__bound.html\": [13, 0, 0, 27],\n \"classpqxx_1_1exclusive__bound.html#a123b3d5b90deec3cbb100a7a45dd447c\": [12, 0, 0, 28, 1],\n \"classpqxx_1_1exclusive__bound.html#a123b3d5b90deec3cbb100a7a45dd447c\": [13, 0, 0, 27, 1],\n \"classpqxx_1_1exclusive__bound.html#a9dc981842fd802771fa55cd91088b3ab\": [12, 0, 0, 28, 0],\n \"classpqxx_1_1exclusive__bound.html#a9dc981842fd802771fa55cd91088b3ab\": [13, 0, 0, 27, 0],\n- \"classpqxx_1_1field.html\": [12, 0, 0, 31],\n \"classpqxx_1_1field.html\": [13, 0, 0, 30],\n- \"classpqxx_1_1field.html#a0724bd55b4cccf26db6960ef27851fe8\": [13, 0, 0, 30, 13],\n+ \"classpqxx_1_1field.html\": [12, 0, 0, 31],\n \"classpqxx_1_1field.html#a0724bd55b4cccf26db6960ef27851fe8\": [12, 0, 0, 31, 13],\n+ \"classpqxx_1_1field.html#a0724bd55b4cccf26db6960ef27851fe8\": [13, 0, 0, 30, 13],\n \"classpqxx_1_1field.html#a1622e11d557e794f188b40b14404f1b1\": [12, 0, 0, 31, 5],\n \"classpqxx_1_1field.html#a1622e11d557e794f188b40b14404f1b1\": [13, 0, 0, 30, 5],\n- \"classpqxx_1_1field.html#a1e87e9981c60d37516326e7ab6b26da6\": [13, 0, 0, 30, 18],\n \"classpqxx_1_1field.html#a1e87e9981c60d37516326e7ab6b26da6\": [12, 0, 0, 31, 18],\n- \"classpqxx_1_1field.html#a20ceb9e1dd63c481e412af866e88ccaa\": [13, 0, 0, 30, 15],\n+ \"classpqxx_1_1field.html#a1e87e9981c60d37516326e7ab6b26da6\": [13, 0, 0, 30, 18],\n \"classpqxx_1_1field.html#a20ceb9e1dd63c481e412af866e88ccaa\": [12, 0, 0, 31, 15],\n- \"classpqxx_1_1field.html#a27f7bb2fe7bd70412feaea0bdcd6464e\": [12, 0, 0, 31, 3],\n+ \"classpqxx_1_1field.html#a20ceb9e1dd63c481e412af866e88ccaa\": [13, 0, 0, 30, 15],\n \"classpqxx_1_1field.html#a27f7bb2fe7bd70412feaea0bdcd6464e\": [13, 0, 0, 30, 3],\n- \"classpqxx_1_1field.html#a28c1716f33c91766259cc89f0d06931d\": [13, 0, 0, 30, 23],\n+ \"classpqxx_1_1field.html#a27f7bb2fe7bd70412feaea0bdcd6464e\": [12, 0, 0, 31, 3],\n \"classpqxx_1_1field.html#a28c1716f33c91766259cc89f0d06931d\": [12, 0, 0, 31, 23],\n+ \"classpqxx_1_1field.html#a28c1716f33c91766259cc89f0d06931d\": [13, 0, 0, 30, 23],\n \"classpqxx_1_1field.html#a3094253a229c7d379ba3f1342bc1347d\": [12, 0, 0, 31, 4],\n \"classpqxx_1_1field.html#a3094253a229c7d379ba3f1342bc1347d\": [13, 0, 0, 30, 4],\n- \"classpqxx_1_1field.html#a31433b3a426646a23e1d11f3242a3885\": [13, 0, 0, 30, 20],\n \"classpqxx_1_1field.html#a31433b3a426646a23e1d11f3242a3885\": [12, 0, 0, 31, 20],\n+ \"classpqxx_1_1field.html#a31433b3a426646a23e1d11f3242a3885\": [13, 0, 0, 30, 20],\n \"classpqxx_1_1field.html#a5bd96ec505943365c6264f258975b03d\": [12, 0, 0, 31, 14],\n \"classpqxx_1_1field.html#a5bd96ec505943365c6264f258975b03d\": [13, 0, 0, 30, 14],\n \"classpqxx_1_1field.html#a5c13391d9f288b83419cca7865b5be62\": [13, 0, 0, 30, 19],\n \"classpqxx_1_1field.html#a5c13391d9f288b83419cca7865b5be62\": [12, 0, 0, 31, 19],\n- \"classpqxx_1_1field.html#a768ec9ffee118b5eb5a4c371afbacc5a\": [13, 0, 0, 30, 12],\n \"classpqxx_1_1field.html#a768ec9ffee118b5eb5a4c371afbacc5a\": [12, 0, 0, 31, 12],\n- \"classpqxx_1_1field.html#a7792842d762cff5c2dfe20c20e912042\": [13, 0, 0, 30, 6],\n+ \"classpqxx_1_1field.html#a768ec9ffee118b5eb5a4c371afbacc5a\": [13, 0, 0, 30, 12],\n \"classpqxx_1_1field.html#a7792842d762cff5c2dfe20c20e912042\": [12, 0, 0, 31, 6],\n+ \"classpqxx_1_1field.html#a7792842d762cff5c2dfe20c20e912042\": [13, 0, 0, 30, 6],\n \"classpqxx_1_1field.html#a7aad0831fe97de25ba4a4bfd8b41e365\": [13, 0, 0, 30, 2],\n \"classpqxx_1_1field.html#a7aad0831fe97de25ba4a4bfd8b41e365\": [12, 0, 0, 31, 2],\n- \"classpqxx_1_1field.html#a884880e40a43bad2733a167340896192\": [12, 0, 0, 31, 17],\n \"classpqxx_1_1field.html#a884880e40a43bad2733a167340896192\": [13, 0, 0, 30, 17],\n+ \"classpqxx_1_1field.html#a884880e40a43bad2733a167340896192\": [12, 0, 0, 31, 17],\n \"classpqxx_1_1field.html#a8e90cf78347c40fb5a975734e8557675\": [13, 0, 0, 30, 11],\n \"classpqxx_1_1field.html#a8e90cf78347c40fb5a975734e8557675\": [12, 0, 0, 31, 11],\n- \"classpqxx_1_1field.html#aa05908e8ed320fac8c96b9eb4cf46813\": [13, 0, 0, 30, 22],\n \"classpqxx_1_1field.html#aa05908e8ed320fac8c96b9eb4cf46813\": [12, 0, 0, 31, 22],\n- \"classpqxx_1_1field.html#ab6ec6f63e4bad7807f9afbeb8c79b493\": [12, 0, 0, 31, 7],\n+ \"classpqxx_1_1field.html#aa05908e8ed320fac8c96b9eb4cf46813\": [13, 0, 0, 30, 22],\n \"classpqxx_1_1field.html#ab6ec6f63e4bad7807f9afbeb8c79b493\": [13, 0, 0, 30, 7],\n- \"classpqxx_1_1field.html#accb1b29590adaf1c265279fc410b2e59\": [12, 0, 0, 31, 10],\n+ \"classpqxx_1_1field.html#ab6ec6f63e4bad7807f9afbeb8c79b493\": [12, 0, 0, 31, 7],\n \"classpqxx_1_1field.html#accb1b29590adaf1c265279fc410b2e59\": [13, 0, 0, 30, 10],\n+ \"classpqxx_1_1field.html#accb1b29590adaf1c265279fc410b2e59\": [12, 0, 0, 31, 10],\n \"classpqxx_1_1field.html#aceb8e342f34a054d2b2310c59cbf0e52\": [13, 0, 0, 30, 1],\n \"classpqxx_1_1field.html#aceb8e342f34a054d2b2310c59cbf0e52\": [12, 0, 0, 31, 1],\n \"classpqxx_1_1field.html#ad11b276da1bb8acc674cb2f8aac11a24\": [13, 0, 0, 30, 0],\n \"classpqxx_1_1field.html#ad11b276da1bb8acc674cb2f8aac11a24\": [12, 0, 0, 31, 0],\n \"classpqxx_1_1field.html#ad2da9b613fdf2b38a36e92eafd9b223a\": [12, 0, 0, 31, 21],\n \"classpqxx_1_1field.html#ad2da9b613fdf2b38a36e92eafd9b223a\": [13, 0, 0, 30, 21],\n \"classpqxx_1_1field.html#ad3f84cc67637ba99b7128db75603d03c\": [13, 0, 0, 30, 9],\n \"classpqxx_1_1field.html#ad3f84cc67637ba99b7128db75603d03c\": [12, 0, 0, 31, 9],\n \"classpqxx_1_1field.html#adb7ec4ecef586ebbab147b5b181dfff3\": [13, 0, 0, 30, 8],\n \"classpqxx_1_1field.html#adb7ec4ecef586ebbab147b5b181dfff3\": [12, 0, 0, 31, 8],\n- \"classpqxx_1_1field.html#aee9267454dca1a3457fb86e2f0046feb\": [12, 0, 0, 31, 16],\n \"classpqxx_1_1field.html#aee9267454dca1a3457fb86e2f0046feb\": [13, 0, 0, 30, 16],\n- \"classpqxx_1_1field__streambuf.html\": [12, 0, 0, 32],\n+ \"classpqxx_1_1field.html#aee9267454dca1a3457fb86e2f0046feb\": [12, 0, 0, 31, 16],\n \"classpqxx_1_1field__streambuf.html\": [13, 0, 0, 31],\n+ \"classpqxx_1_1field__streambuf.html\": [12, 0, 0, 32],\n \"classpqxx_1_1inclusive__bound.html\": [12, 0, 0, 40],\n \"classpqxx_1_1inclusive__bound.html\": [13, 0, 0, 39],\n- \"classpqxx_1_1inclusive__bound.html#a262003fb0fad4296194b8802a077dfbc\": [12, 0, 0, 40, 0],\n \"classpqxx_1_1inclusive__bound.html#a262003fb0fad4296194b8802a077dfbc\": [13, 0, 0, 39, 0],\n- \"classpqxx_1_1inclusive__bound.html#abdedc091380634eeac13cc78e02fde9b\": [12, 0, 0, 40, 1],\n+ \"classpqxx_1_1inclusive__bound.html#a262003fb0fad4296194b8802a077dfbc\": [12, 0, 0, 40, 0],\n \"classpqxx_1_1inclusive__bound.html#abdedc091380634eeac13cc78e02fde9b\": [13, 0, 0, 39, 1],\n+ \"classpqxx_1_1inclusive__bound.html#abdedc091380634eeac13cc78e02fde9b\": [12, 0, 0, 40, 1],\n \"classpqxx_1_1internal_1_1basic__robusttransaction.html\": [12, 0, 0, 0, 2],\n \"classpqxx_1_1internal_1_1basic__robusttransaction.html\": [13, 0, 0, 0, 2],\n- \"classpqxx_1_1internal_1_1basic__transaction.html\": [13, 0, 0, 0, 3],\n \"classpqxx_1_1internal_1_1basic__transaction.html\": [12, 0, 0, 0, 3],\n+ \"classpqxx_1_1internal_1_1basic__transaction.html\": [13, 0, 0, 0, 3],\n \"classpqxx_1_1internal_1_1basic__transaction.html#af6f8466bea98765984fac0ed707178e2\": [12, 0, 0, 0, 3, 0],\n \"classpqxx_1_1internal_1_1basic__transaction.html#af6f8466bea98765984fac0ed707178e2\": [13, 0, 0, 0, 3, 0],\n- \"classpqxx_1_1internal_1_1callgate.html\": [13, 0, 0, 0, 5],\n \"classpqxx_1_1internal_1_1callgate.html\": [12, 0, 0, 0, 5],\n+ \"classpqxx_1_1internal_1_1callgate.html\": [13, 0, 0, 0, 5],\n \"classpqxx_1_1internal_1_1callgate.html#a46153ad21254e58b774ad81b597b73f7\": [12, 0, 0, 0, 5, 2],\n \"classpqxx_1_1internal_1_1callgate.html#a46153ad21254e58b774ad81b597b73f7\": [13, 0, 0, 0, 5, 2],\n- \"classpqxx_1_1internal_1_1callgate.html#a8afb6d383802c92c3e2a83b590f75be0\": [13, 0, 0, 0, 5, 0],\n \"classpqxx_1_1internal_1_1callgate.html#a8afb6d383802c92c3e2a83b590f75be0\": [12, 0, 0, 0, 5, 0],\n+ \"classpqxx_1_1internal_1_1callgate.html#a8afb6d383802c92c3e2a83b590f75be0\": [13, 0, 0, 0, 5, 0],\n \"classpqxx_1_1internal_1_1callgate.html#afb620090453fc901f4fa147ee60bde36\": [12, 0, 0, 0, 5, 1],\n \"classpqxx_1_1internal_1_1callgate.html#afb620090453fc901f4fa147ee60bde36\": [13, 0, 0, 0, 5, 1],\n \"classpqxx_1_1internal_1_1dynamic__params.html\": [12, 0, 0, 0, 7],\n \"classpqxx_1_1internal_1_1dynamic__params.html\": [13, 0, 0, 0, 7],\n \"classpqxx_1_1internal_1_1dynamic__params.html#a2135ab029e5235a29612ffdae27e93de\": [12, 0, 0, 0, 7, 2],\n \"classpqxx_1_1internal_1_1dynamic__params.html#a2135ab029e5235a29612ffdae27e93de\": [13, 0, 0, 0, 7, 2],\n \"classpqxx_1_1internal_1_1dynamic__params.html#a5b59edc3a62998f76ef9996dda783b81\": [12, 0, 0, 0, 7, 0],\n@@ -171,82 +171,82 @@\n \"classpqxx_1_1internal_1_1gate_1_1result__creation.html\": [13, 0, 0, 0, 0, 13],\n \"classpqxx_1_1internal_1_1gate_1_1result__pipeline.html\": [13, 0, 0, 0, 0, 14],\n \"classpqxx_1_1internal_1_1gate_1_1result__sql__cursor.html\": [13, 0, 0, 0, 0, 15],\n \"classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor.html\": [13, 0, 0, 0, 0, 16],\n \"classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus.html\": [13, 0, 0, 0, 0, 17],\n \"classpqxx_1_1internal_1_1result__iter.html\": [13, 0, 0, 0, 26],\n \"classpqxx_1_1internal_1_1result__iter.html\": [12, 0, 0, 0, 26],\n- \"classpqxx_1_1internal_1_1result__iter.html#a0c920149f5043b7d03b7ac765447a929\": [13, 0, 0, 0, 26, 0],\n \"classpqxx_1_1internal_1_1result__iter.html#a0c920149f5043b7d03b7ac765447a929\": [12, 0, 0, 0, 26, 0],\n- \"classpqxx_1_1internal_1_1result__iter.html#ace9b554271a8b57ab7230da00ef319ea\": [13, 0, 0, 0, 26, 1],\n+ \"classpqxx_1_1internal_1_1result__iter.html#a0c920149f5043b7d03b7ac765447a929\": [13, 0, 0, 0, 26, 0],\n \"classpqxx_1_1internal_1_1result__iter.html#ace9b554271a8b57ab7230da00ef319ea\": [12, 0, 0, 0, 26, 1],\n- \"classpqxx_1_1internal_1_1result__iteration.html\": [12, 0, 0, 0, 27],\n+ \"classpqxx_1_1internal_1_1result__iter.html#ace9b554271a8b57ab7230da00ef319ea\": [13, 0, 0, 0, 26, 1],\n \"classpqxx_1_1internal_1_1result__iteration.html\": [13, 0, 0, 0, 27],\n+ \"classpqxx_1_1internal_1_1result__iteration.html\": [12, 0, 0, 0, 27],\n \"classpqxx_1_1internal_1_1sql__cursor.html\": [12, 0, 0, 0, 28],\n \"classpqxx_1_1internal_1_1sql__cursor.html\": [13, 0, 0, 0, 28],\n- \"classpqxx_1_1internal_1_1sql__cursor.html#a4c11be9b28736e1adaf8b9a3eec41c79\": [13, 0, 0, 0, 28, 1],\n \"classpqxx_1_1internal_1_1sql__cursor.html#a4c11be9b28736e1adaf8b9a3eec41c79\": [12, 0, 0, 0, 28, 1],\n+ \"classpqxx_1_1internal_1_1sql__cursor.html#a4c11be9b28736e1adaf8b9a3eec41c79\": [13, 0, 0, 0, 28, 1],\n \"classpqxx_1_1internal_1_1sql__cursor.html#aa081894fff9516d7dc26a8f724db21aa\": [12, 0, 0, 0, 28, 0],\n \"classpqxx_1_1internal_1_1sql__cursor.html#aa081894fff9516d7dc26a8f724db21aa\": [13, 0, 0, 0, 28, 0],\n- \"classpqxx_1_1internal_1_1sql__cursor.html#ac5c2280d1b3dde3922d1502235cfb01f\": [12, 0, 0, 0, 28, 2],\n \"classpqxx_1_1internal_1_1sql__cursor.html#ac5c2280d1b3dde3922d1502235cfb01f\": [13, 0, 0, 0, 28, 2],\n- \"classpqxx_1_1internal_1_1stream__from__input__iterator.html\": [12, 0, 0, 0, 29],\n+ \"classpqxx_1_1internal_1_1sql__cursor.html#ac5c2280d1b3dde3922d1502235cfb01f\": [12, 0, 0, 0, 28, 2],\n \"classpqxx_1_1internal_1_1stream__from__input__iterator.html\": [13, 0, 0, 0, 29],\n- \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a23573499bd91d017c08dd9438bc49ad4\": [12, 0, 0, 0, 29, 2],\n+ \"classpqxx_1_1internal_1_1stream__from__input__iterator.html\": [12, 0, 0, 0, 29],\n \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a23573499bd91d017c08dd9438bc49ad4\": [13, 0, 0, 0, 29, 2],\n- \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a30bf5388b274d3e8b27568a03f061762\": [12, 0, 0, 0, 29, 1],\n+ \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a23573499bd91d017c08dd9438bc49ad4\": [12, 0, 0, 0, 29, 2],\n \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a30bf5388b274d3e8b27568a03f061762\": [13, 0, 0, 0, 29, 1],\n+ \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a30bf5388b274d3e8b27568a03f061762\": [12, 0, 0, 0, 29, 1],\n \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a6ee371294bb42b9e604d7313d0878a61\": [12, 0, 0, 0, 29, 0],\n \"classpqxx_1_1internal_1_1stream__from__input__iterator.html#a6ee371294bb42b9e604d7313d0878a61\": [13, 0, 0, 0, 29, 0],\n- \"classpqxx_1_1internal_1_1stream__input__iteration.html\": [13, 0, 0, 0, 30],\n \"classpqxx_1_1internal_1_1stream__input__iteration.html\": [12, 0, 0, 0, 30],\n+ \"classpqxx_1_1internal_1_1stream__input__iteration.html\": [13, 0, 0, 0, 30],\n \"classpqxx_1_1internal_1_1stream__query.html\": [12, 0, 0, 0, 31],\n \"classpqxx_1_1internal_1_1stream__query.html\": [13, 0, 0, 0, 31],\n- \"classpqxx_1_1internal_1_1stream__query.html#a173d0e79729e42ccb3841f1e6d556376\": [13, 0, 0, 0, 31, 3],\n \"classpqxx_1_1internal_1_1stream__query.html#a173d0e79729e42ccb3841f1e6d556376\": [12, 0, 0, 0, 31, 3],\n- \"classpqxx_1_1internal_1_1stream__query.html#a82a1a8435b756b9cb075f4a9a2fc6c09\": [12, 0, 0, 0, 31, 0],\n+ \"classpqxx_1_1internal_1_1stream__query.html#a173d0e79729e42ccb3841f1e6d556376\": [13, 0, 0, 0, 31, 3],\n \"classpqxx_1_1internal_1_1stream__query.html#a82a1a8435b756b9cb075f4a9a2fc6c09\": [13, 0, 0, 0, 31, 0],\n+ \"classpqxx_1_1internal_1_1stream__query.html#a82a1a8435b756b9cb075f4a9a2fc6c09\": [12, 0, 0, 0, 31, 0],\n \"classpqxx_1_1internal_1_1stream__query.html#aad5061fd7b06c89a98e317ce6901ab58\": [12, 0, 0, 0, 31, 5],\n \"classpqxx_1_1internal_1_1stream__query.html#aad5061fd7b06c89a98e317ce6901ab58\": [13, 0, 0, 0, 31, 5],\n \"classpqxx_1_1internal_1_1stream__query.html#aadbcbef19d5bd2509a8ad9db685771ae\": [13, 0, 0, 0, 31, 2],\n \"classpqxx_1_1internal_1_1stream__query.html#aadbcbef19d5bd2509a8ad9db685771ae\": [12, 0, 0, 0, 31, 2],\n- \"classpqxx_1_1internal_1_1stream__query.html#ab7226acb2456b26777af0dd772e94bc9\": [12, 0, 0, 0, 31, 1],\n \"classpqxx_1_1internal_1_1stream__query.html#ab7226acb2456b26777af0dd772e94bc9\": [13, 0, 0, 0, 31, 1],\n+ \"classpqxx_1_1internal_1_1stream__query.html#ab7226acb2456b26777af0dd772e94bc9\": [12, 0, 0, 0, 31, 1],\n \"classpqxx_1_1internal_1_1stream__query.html#aed01b072e34514ec0ca9ca3e7adc692e\": [12, 0, 0, 0, 31, 6],\n \"classpqxx_1_1internal_1_1stream__query.html#aed01b072e34514ec0ca9ca3e7adc692e\": [13, 0, 0, 0, 31, 6],\n- \"classpqxx_1_1internal_1_1stream__query.html#afccfe3b559c68913f5161f3a8ee0ad80\": [13, 0, 0, 0, 31, 4],\n \"classpqxx_1_1internal_1_1stream__query.html#afccfe3b559c68913f5161f3a8ee0ad80\": [12, 0, 0, 0, 31, 4],\n+ \"classpqxx_1_1internal_1_1stream__query.html#afccfe3b559c68913f5161f3a8ee0ad80\": [13, 0, 0, 0, 31, 4],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html\": [13, 0, 0, 0, 33],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html\": [12, 0, 0, 0, 33],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a0c261e07d71c54c3df1873bd7682f141\": [13, 0, 0, 0, 33, 2],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a0c261e07d71c54c3df1873bd7682f141\": [12, 0, 0, 0, 33, 2],\n- \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a207326fe0c7f51eccfa61be42d20188e\": [13, 0, 0, 0, 33, 0],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a207326fe0c7f51eccfa61be42d20188e\": [12, 0, 0, 0, 33, 0],\n- \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a27cb5d24969b0b2102987fb8f3ec3b62\": [13, 0, 0, 0, 33, 4],\n+ \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a207326fe0c7f51eccfa61be42d20188e\": [13, 0, 0, 0, 33, 0],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a27cb5d24969b0b2102987fb8f3ec3b62\": [12, 0, 0, 0, 33, 4],\n+ \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a27cb5d24969b0b2102987fb8f3ec3b62\": [13, 0, 0, 0, 33, 4],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a9c57abc31dc9b272b395c6b2c216ad7a\": [12, 0, 0, 0, 33, 1],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#a9c57abc31dc9b272b395c6b2c216ad7a\": [13, 0, 0, 0, 33, 1],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#abc1cf24fa7ceff09abe835eeeffdb4e2\": [12, 0, 0, 0, 33, 3],\n \"classpqxx_1_1internal_1_1stream__query__input__iterator.html#abc1cf24fa7ceff09abe835eeeffdb4e2\": [13, 0, 0, 0, 33, 3],\n \"classpqxx_1_1largeobject.html\": [12, 0, 0, 48],\n \"classpqxx_1_1largeobject.html\": [13, 0, 0, 47],\n \"classpqxx_1_1largeobject.html#a00f0df981995f7ca9991ba7162bdaa16\": [13, 0, 0, 47, 9],\n \"classpqxx_1_1largeobject.html#a00f0df981995f7ca9991ba7162bdaa16\": [12, 0, 0, 48, 9],\n \"classpqxx_1_1largeobject.html#a0f1c6e0804d1829c81efb76f39db7dd7\": [12, 0, 0, 48, 11],\n \"classpqxx_1_1largeobject.html#a0f1c6e0804d1829c81efb76f39db7dd7\": [13, 0, 0, 47, 11],\n \"classpqxx_1_1largeobject.html#a12f426d5cd7f173de01551fa1629ddf4\": [12, 0, 0, 48, 12],\n \"classpqxx_1_1largeobject.html#a12f426d5cd7f173de01551fa1629ddf4\": [13, 0, 0, 47, 12],\n- \"classpqxx_1_1largeobject.html#a297714bf161904cce728d0255e4efccd\": [13, 0, 0, 47, 3],\n \"classpqxx_1_1largeobject.html#a297714bf161904cce728d0255e4efccd\": [12, 0, 0, 48, 3],\n- \"classpqxx_1_1largeobject.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab\": [13, 0, 0, 47, 8],\n+ \"classpqxx_1_1largeobject.html#a297714bf161904cce728d0255e4efccd\": [13, 0, 0, 47, 3],\n \"classpqxx_1_1largeobject.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab\": [12, 0, 0, 48, 8],\n- \"classpqxx_1_1largeobject.html#a4fb862c252771c8ad4449f8badf2b26f\": [12, 0, 0, 48, 13],\n+ \"classpqxx_1_1largeobject.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab\": [13, 0, 0, 47, 8],\n \"classpqxx_1_1largeobject.html#a4fb862c252771c8ad4449f8badf2b26f\": [13, 0, 0, 47, 13],\n- \"classpqxx_1_1largeobject.html#a5fa9d7249fd0d8b471e7df2af8f96df2\": [12, 0, 0, 48, 2],\n+ \"classpqxx_1_1largeobject.html#a4fb862c252771c8ad4449f8badf2b26f\": [12, 0, 0, 48, 13],\n \"classpqxx_1_1largeobject.html#a5fa9d7249fd0d8b471e7df2af8f96df2\": [13, 0, 0, 47, 2],\n+ \"classpqxx_1_1largeobject.html#a5fa9d7249fd0d8b471e7df2af8f96df2\": [12, 0, 0, 48, 2],\n \"classpqxx_1_1largeobject.html#a90efd57a423686ee47c4dbb6b5c3b187\": [12, 0, 0, 48, 7],\n \"classpqxx_1_1largeobject.html#a90efd57a423686ee47c4dbb6b5c3b187\": [13, 0, 0, 47, 7],\n- \"classpqxx_1_1largeobject.html#a9450db026a6206b00fdd95054360e224\": [12, 0, 0, 48, 0],\n \"classpqxx_1_1largeobject.html#a9450db026a6206b00fdd95054360e224\": [13, 0, 0, 47, 0],\n- \"classpqxx_1_1largeobject.html#ad326bef1920744c3d450406f43dbc6b5\": [13, 0, 0, 47, 6],\n- \"classpqxx_1_1largeobject.html#ad326bef1920744c3d450406f43dbc6b5\": [12, 0, 0, 48, 6]\n+ \"classpqxx_1_1largeobject.html#a9450db026a6206b00fdd95054360e224\": [12, 0, 0, 48, 0],\n+ \"classpqxx_1_1largeobject.html#ad326bef1920744c3d450406f43dbc6b5\": [12, 0, 0, 48, 6],\n+ \"classpqxx_1_1largeobject.html#ad326bef1920744c3d450406f43dbc6b5\": [13, 0, 0, 47, 6]\n };\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex2.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,252 +1,252 @@\n var NAVTREEINDEX2 = {\n- \"classpqxx_1_1largeobject.html#adb9c38154d2454560bfe56bfa7b5d673\": [13, 0, 0, 47, 4],\n \"classpqxx_1_1largeobject.html#adb9c38154d2454560bfe56bfa7b5d673\": [12, 0, 0, 48, 4],\n- \"classpqxx_1_1largeobject.html#ae33a0403408df984ad0999eb9a33db30\": [12, 0, 0, 48, 10],\n+ \"classpqxx_1_1largeobject.html#adb9c38154d2454560bfe56bfa7b5d673\": [13, 0, 0, 47, 4],\n \"classpqxx_1_1largeobject.html#ae33a0403408df984ad0999eb9a33db30\": [13, 0, 0, 47, 10],\n+ \"classpqxx_1_1largeobject.html#ae33a0403408df984ad0999eb9a33db30\": [12, 0, 0, 48, 10],\n \"classpqxx_1_1largeobject.html#af210c3d0b39442a5ce9b3b1508d96c84\": [13, 0, 0, 47, 5],\n \"classpqxx_1_1largeobject.html#af210c3d0b39442a5ce9b3b1508d96c84\": [12, 0, 0, 48, 5],\n \"classpqxx_1_1largeobject.html#af56aa193ac2fd0664dc0d5a88df6716a\": [12, 0, 0, 48, 1],\n \"classpqxx_1_1largeobject.html#af56aa193ac2fd0664dc0d5a88df6716a\": [13, 0, 0, 47, 1],\n- \"classpqxx_1_1largeobject__streambuf.html\": [13, 0, 0, 48],\n \"classpqxx_1_1largeobject__streambuf.html\": [12, 0, 0, 49],\n- \"classpqxx_1_1largeobject__streambuf.html#a9c9d53a14e148dec15f632fcb8f51366\": [13, 0, 0, 48, 0],\n+ \"classpqxx_1_1largeobject__streambuf.html\": [13, 0, 0, 48],\n \"classpqxx_1_1largeobject__streambuf.html#a9c9d53a14e148dec15f632fcb8f51366\": [12, 0, 0, 49, 0],\n- \"classpqxx_1_1largeobjectaccess.html\": [13, 0, 0, 49],\n+ \"classpqxx_1_1largeobject__streambuf.html#a9c9d53a14e148dec15f632fcb8f51366\": [13, 0, 0, 48, 0],\n \"classpqxx_1_1largeobjectaccess.html\": [12, 0, 0, 50],\n- \"classpqxx_1_1largeobjectaccess.html#a00f0df981995f7ca9991ba7162bdaa16\": [13, 0, 0, 49, 14],\n+ \"classpqxx_1_1largeobjectaccess.html\": [13, 0, 0, 49],\n \"classpqxx_1_1largeobjectaccess.html#a00f0df981995f7ca9991ba7162bdaa16\": [12, 0, 0, 50, 14],\n- \"classpqxx_1_1largeobjectaccess.html#a0f1c6e0804d1829c81efb76f39db7dd7\": [12, 0, 0, 50, 16],\n+ \"classpqxx_1_1largeobjectaccess.html#a00f0df981995f7ca9991ba7162bdaa16\": [13, 0, 0, 49, 14],\n \"classpqxx_1_1largeobjectaccess.html#a0f1c6e0804d1829c81efb76f39db7dd7\": [13, 0, 0, 49, 16],\n- \"classpqxx_1_1largeobjectaccess.html#a12f426d5cd7f173de01551fa1629ddf4\": [12, 0, 0, 50, 19],\n+ \"classpqxx_1_1largeobjectaccess.html#a0f1c6e0804d1829c81efb76f39db7dd7\": [12, 0, 0, 50, 16],\n \"classpqxx_1_1largeobjectaccess.html#a12f426d5cd7f173de01551fa1629ddf4\": [13, 0, 0, 49, 19],\n+ \"classpqxx_1_1largeobjectaccess.html#a12f426d5cd7f173de01551fa1629ddf4\": [12, 0, 0, 50, 19],\n \"classpqxx_1_1largeobjectaccess.html#a4665a2bbcffa4eb07725a9d17f1e0430\": [13, 0, 0, 49, 8],\n \"classpqxx_1_1largeobjectaccess.html#a4665a2bbcffa4eb07725a9d17f1e0430\": [12, 0, 0, 50, 8],\n- \"classpqxx_1_1largeobjectaccess.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab\": [12, 0, 0, 50, 13],\n \"classpqxx_1_1largeobjectaccess.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab\": [13, 0, 0, 49, 13],\n+ \"classpqxx_1_1largeobjectaccess.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab\": [12, 0, 0, 50, 13],\n \"classpqxx_1_1largeobjectaccess.html#a4fb862c252771c8ad4449f8badf2b26f\": [13, 0, 0, 49, 22],\n \"classpqxx_1_1largeobjectaccess.html#a4fb862c252771c8ad4449f8badf2b26f\": [12, 0, 0, 50, 22],\n \"classpqxx_1_1largeobjectaccess.html#a5e8690c9b3bcdb7b4045e619597aec69\": [12, 0, 0, 50, 18],\n \"classpqxx_1_1largeobjectaccess.html#a5e8690c9b3bcdb7b4045e619597aec69\": [13, 0, 0, 49, 18],\n \"classpqxx_1_1largeobjectaccess.html#a60ff3072349074e732d0c00e2aefc498\": [12, 0, 0, 50, 24],\n \"classpqxx_1_1largeobjectaccess.html#a60ff3072349074e732d0c00e2aefc498\": [13, 0, 0, 49, 24],\n- \"classpqxx_1_1largeobjectaccess.html#a6b09598014eca3c4c4b8a0c1495185d3\": [12, 0, 0, 50, 0],\n \"classpqxx_1_1largeobjectaccess.html#a6b09598014eca3c4c4b8a0c1495185d3\": [13, 0, 0, 49, 0],\n+ \"classpqxx_1_1largeobjectaccess.html#a6b09598014eca3c4c4b8a0c1495185d3\": [12, 0, 0, 50, 0],\n \"classpqxx_1_1largeobjectaccess.html#a7f372c2836b12287ecd4b15b8d8eacb5\": [12, 0, 0, 50, 3],\n \"classpqxx_1_1largeobjectaccess.html#a7f372c2836b12287ecd4b15b8d8eacb5\": [13, 0, 0, 49, 3],\n- \"classpqxx_1_1largeobjectaccess.html#a86298b9dd2e670858c9e04f3d4043b7e\": [12, 0, 0, 50, 7],\n \"classpqxx_1_1largeobjectaccess.html#a86298b9dd2e670858c9e04f3d4043b7e\": [13, 0, 0, 49, 7],\n+ \"classpqxx_1_1largeobjectaccess.html#a86298b9dd2e670858c9e04f3d4043b7e\": [12, 0, 0, 50, 7],\n \"classpqxx_1_1largeobjectaccess.html#a8a693bb1e0478d0d3a3d19ef904071bf\": [12, 0, 0, 50, 5],\n \"classpqxx_1_1largeobjectaccess.html#a8a693bb1e0478d0d3a3d19ef904071bf\": [13, 0, 0, 49, 5],\n \"classpqxx_1_1largeobjectaccess.html#a90efd57a423686ee47c4dbb6b5c3b187\": [13, 0, 0, 49, 12],\n \"classpqxx_1_1largeobjectaccess.html#a90efd57a423686ee47c4dbb6b5c3b187\": [12, 0, 0, 50, 12],\n \"classpqxx_1_1largeobjectaccess.html#a9230026566fa1f7c32d2abcc2a5571eb\": [12, 0, 0, 50, 1],\n \"classpqxx_1_1largeobjectaccess.html#a9230026566fa1f7c32d2abcc2a5571eb\": [13, 0, 0, 49, 1],\n- \"classpqxx_1_1largeobjectaccess.html#a972d8559cae789984a194c98a88b943b\": [13, 0, 0, 49, 21],\n \"classpqxx_1_1largeobjectaccess.html#a972d8559cae789984a194c98a88b943b\": [12, 0, 0, 50, 21],\n+ \"classpqxx_1_1largeobjectaccess.html#a972d8559cae789984a194c98a88b943b\": [13, 0, 0, 49, 21],\n \"classpqxx_1_1largeobjectaccess.html#ab2d72e776c6703ac62ef0657d6ac1df8\": [13, 0, 0, 49, 9],\n \"classpqxx_1_1largeobjectaccess.html#ab2d72e776c6703ac62ef0657d6ac1df8\": [12, 0, 0, 50, 9],\n- \"classpqxx_1_1largeobjectaccess.html#ab3a49a4c8e094cb8d65f20c3e5541c73\": [13, 0, 0, 49, 2],\n \"classpqxx_1_1largeobjectaccess.html#ab3a49a4c8e094cb8d65f20c3e5541c73\": [12, 0, 0, 50, 2],\n+ \"classpqxx_1_1largeobjectaccess.html#ab3a49a4c8e094cb8d65f20c3e5541c73\": [13, 0, 0, 49, 2],\n \"classpqxx_1_1largeobjectaccess.html#ac43433ab08b3ccb34fc72ea4975bcda2\": [13, 0, 0, 49, 6],\n \"classpqxx_1_1largeobjectaccess.html#ac43433ab08b3ccb34fc72ea4975bcda2\": [12, 0, 0, 50, 6],\n- \"classpqxx_1_1largeobjectaccess.html#acdbc859cf3afd0ddcc4aa555ef36c35a\": [13, 0, 0, 49, 23],\n \"classpqxx_1_1largeobjectaccess.html#acdbc859cf3afd0ddcc4aa555ef36c35a\": [12, 0, 0, 50, 23],\n+ \"classpqxx_1_1largeobjectaccess.html#acdbc859cf3afd0ddcc4aa555ef36c35a\": [13, 0, 0, 49, 23],\n \"classpqxx_1_1largeobjectaccess.html#ad326bef1920744c3d450406f43dbc6b5\": [13, 0, 0, 49, 11],\n \"classpqxx_1_1largeobjectaccess.html#ad326bef1920744c3d450406f43dbc6b5\": [12, 0, 0, 50, 11],\n- \"classpqxx_1_1largeobjectaccess.html#ad539bb1d48ea71532455f56bf118a3ff\": [12, 0, 0, 50, 17],\n \"classpqxx_1_1largeobjectaccess.html#ad539bb1d48ea71532455f56bf118a3ff\": [13, 0, 0, 49, 17],\n- \"classpqxx_1_1largeobjectaccess.html#ad8cc68a38208f6ee1c2f9dcf97628990\": [12, 0, 0, 50, 4],\n+ \"classpqxx_1_1largeobjectaccess.html#ad539bb1d48ea71532455f56bf118a3ff\": [12, 0, 0, 50, 17],\n \"classpqxx_1_1largeobjectaccess.html#ad8cc68a38208f6ee1c2f9dcf97628990\": [13, 0, 0, 49, 4],\n+ \"classpqxx_1_1largeobjectaccess.html#ad8cc68a38208f6ee1c2f9dcf97628990\": [12, 0, 0, 50, 4],\n \"classpqxx_1_1largeobjectaccess.html#addc309fe11d4d3e29547b149e4600199\": [12, 0, 0, 50, 25],\n \"classpqxx_1_1largeobjectaccess.html#addc309fe11d4d3e29547b149e4600199\": [13, 0, 0, 49, 25],\n \"classpqxx_1_1largeobjectaccess.html#ae33a0403408df984ad0999eb9a33db30\": [12, 0, 0, 50, 15],\n \"classpqxx_1_1largeobjectaccess.html#ae33a0403408df984ad0999eb9a33db30\": [13, 0, 0, 49, 15],\n- \"classpqxx_1_1largeobjectaccess.html#ae74922e23584d6410cf37f89f10c1a53\": [13, 0, 0, 49, 20],\n \"classpqxx_1_1largeobjectaccess.html#ae74922e23584d6410cf37f89f10c1a53\": [12, 0, 0, 50, 20],\n+ \"classpqxx_1_1largeobjectaccess.html#ae74922e23584d6410cf37f89f10c1a53\": [13, 0, 0, 49, 20],\n \"classpqxx_1_1largeobjectaccess.html#af210c3d0b39442a5ce9b3b1508d96c84\": [13, 0, 0, 49, 10],\n \"classpqxx_1_1largeobjectaccess.html#af210c3d0b39442a5ce9b3b1508d96c84\": [12, 0, 0, 50, 10],\n- \"classpqxx_1_1notification__receiver.html\": [12, 0, 0, 56],\n \"classpqxx_1_1notification__receiver.html\": [13, 0, 0, 55],\n+ \"classpqxx_1_1notification__receiver.html\": [12, 0, 0, 56],\n \"classpqxx_1_1notification__receiver.html#a44ffe1ed8ec8020f4106ef8427e09d17\": [13, 0, 0, 55, 1],\n \"classpqxx_1_1notification__receiver.html#a44ffe1ed8ec8020f4106ef8427e09d17\": [12, 0, 0, 56, 1],\n- \"classpqxx_1_1notification__receiver.html#a4779f6b712bf7a1d5ab3253b8d274db9\": [12, 0, 0, 56, 0],\n \"classpqxx_1_1notification__receiver.html#a4779f6b712bf7a1d5ab3253b8d274db9\": [13, 0, 0, 55, 0],\n+ \"classpqxx_1_1notification__receiver.html#a4779f6b712bf7a1d5ab3253b8d274db9\": [12, 0, 0, 56, 0],\n \"classpqxx_1_1notification__receiver.html#a57732bae437844782bdfe6314f829d9a\": [12, 0, 0, 56, 3],\n \"classpqxx_1_1notification__receiver.html#a57732bae437844782bdfe6314f829d9a\": [13, 0, 0, 55, 3],\n- \"classpqxx_1_1notification__receiver.html#abb6fd7dd38319fc35e354e23d7f337d0\": [12, 0, 0, 56, 4],\n \"classpqxx_1_1notification__receiver.html#abb6fd7dd38319fc35e354e23d7f337d0\": [13, 0, 0, 55, 4],\n+ \"classpqxx_1_1notification__receiver.html#abb6fd7dd38319fc35e354e23d7f337d0\": [12, 0, 0, 56, 4],\n \"classpqxx_1_1notification__receiver.html#ae4ed572d3a137b331d363bae82f4ce9b\": [12, 0, 0, 56, 2],\n \"classpqxx_1_1notification__receiver.html#ae4ed572d3a137b331d363bae82f4ce9b\": [13, 0, 0, 55, 2],\n \"classpqxx_1_1notification__receiver.html#afcf701e264edd9a14513765f542b446d\": [13, 0, 0, 55, 5],\n \"classpqxx_1_1notification__receiver.html#afcf701e264edd9a14513765f542b446d\": [12, 0, 0, 56, 5],\n \"classpqxx_1_1params.html\": [13, 0, 0, 80],\n \"classpqxx_1_1params.html\": [12, 0, 0, 81],\n- \"classpqxx_1_1params.html#a04a926a0572022f84777b11db9f8262c\": [13, 0, 0, 80, 3],\n \"classpqxx_1_1params.html#a04a926a0572022f84777b11db9f8262c\": [12, 0, 0, 81, 3],\n+ \"classpqxx_1_1params.html#a04a926a0572022f84777b11db9f8262c\": [13, 0, 0, 80, 3],\n \"classpqxx_1_1params.html#a1060238be2437028e837ec785594a9ad\": [13, 0, 0, 80, 10],\n \"classpqxx_1_1params.html#a1060238be2437028e837ec785594a9ad\": [12, 0, 0, 81, 10],\n \"classpqxx_1_1params.html#a1a3ca8939fbeec4db4f7d69c8014a937\": [12, 0, 0, 81, 14],\n \"classpqxx_1_1params.html#a1a3ca8939fbeec4db4f7d69c8014a937\": [13, 0, 0, 80, 14],\n- \"classpqxx_1_1params.html#a43ca3b56e662cc3e04b6608e0b6c8545\": [13, 0, 0, 80, 11],\n \"classpqxx_1_1params.html#a43ca3b56e662cc3e04b6608e0b6c8545\": [12, 0, 0, 81, 11],\n- \"classpqxx_1_1params.html#a60b0a2f320c12b241e429865faf5bfdf\": [12, 0, 0, 81, 4],\n+ \"classpqxx_1_1params.html#a43ca3b56e662cc3e04b6608e0b6c8545\": [13, 0, 0, 80, 11],\n \"classpqxx_1_1params.html#a60b0a2f320c12b241e429865faf5bfdf\": [13, 0, 0, 80, 4],\n+ \"classpqxx_1_1params.html#a60b0a2f320c12b241e429865faf5bfdf\": [12, 0, 0, 81, 4],\n \"classpqxx_1_1params.html#a6ecf59a6ac483fe23e051ae654abc2b0\": [12, 0, 0, 81, 12],\n \"classpqxx_1_1params.html#a6ecf59a6ac483fe23e051ae654abc2b0\": [13, 0, 0, 80, 12],\n \"classpqxx_1_1params.html#a805a7f2126cb791e99a0a0d72f419739\": [13, 0, 0, 80, 8],\n \"classpqxx_1_1params.html#a805a7f2126cb791e99a0a0d72f419739\": [12, 0, 0, 81, 8],\n \"classpqxx_1_1params.html#a9076185bec59cb6631e15d64895cc163\": [12, 0, 0, 81, 9],\n \"classpqxx_1_1params.html#a9076185bec59cb6631e15d64895cc163\": [13, 0, 0, 80, 9],\n- \"classpqxx_1_1params.html#a92316e93554654d7a0cc9a2aa771a005\": [13, 0, 0, 80, 5],\n \"classpqxx_1_1params.html#a92316e93554654d7a0cc9a2aa771a005\": [12, 0, 0, 81, 5],\n- \"classpqxx_1_1params.html#a92ab73003a8b8b022e803c06b1add2ff\": [12, 0, 0, 81, 7],\n+ \"classpqxx_1_1params.html#a92316e93554654d7a0cc9a2aa771a005\": [13, 0, 0, 80, 5],\n \"classpqxx_1_1params.html#a92ab73003a8b8b022e803c06b1add2ff\": [13, 0, 0, 80, 7],\n+ \"classpqxx_1_1params.html#a92ab73003a8b8b022e803c06b1add2ff\": [12, 0, 0, 81, 7],\n \"classpqxx_1_1params.html#aae93362be81c11016b85d15f61a66db2\": [13, 0, 0, 80, 2],\n \"classpqxx_1_1params.html#aae93362be81c11016b85d15f61a66db2\": [12, 0, 0, 81, 2],\n- \"classpqxx_1_1params.html#ab23b2a3b2a58bfd03fca36022ebce8b4\": [13, 0, 0, 80, 15],\n \"classpqxx_1_1params.html#ab23b2a3b2a58bfd03fca36022ebce8b4\": [12, 0, 0, 81, 15],\n- \"classpqxx_1_1params.html#ab98e56ae60004ff9726f23f64e2d0ffa\": [12, 0, 0, 81, 6],\n+ \"classpqxx_1_1params.html#ab23b2a3b2a58bfd03fca36022ebce8b4\": [13, 0, 0, 80, 15],\n \"classpqxx_1_1params.html#ab98e56ae60004ff9726f23f64e2d0ffa\": [13, 0, 0, 80, 6],\n+ \"classpqxx_1_1params.html#ab98e56ae60004ff9726f23f64e2d0ffa\": [12, 0, 0, 81, 6],\n \"classpqxx_1_1params.html#ad15fdabb428bc93cdb0a6c4354a9069c\": [13, 0, 0, 80, 0],\n \"classpqxx_1_1params.html#ad15fdabb428bc93cdb0a6c4354a9069c\": [12, 0, 0, 81, 0],\n \"classpqxx_1_1params.html#ae53445f42f2698b93ba7860264ccea2e\": [13, 0, 0, 80, 1],\n \"classpqxx_1_1params.html#ae53445f42f2698b93ba7860264ccea2e\": [12, 0, 0, 81, 1],\n- \"classpqxx_1_1params.html#af736445f5bb035a646ed84f8843c91e4\": [13, 0, 0, 80, 13],\n \"classpqxx_1_1params.html#af736445f5bb035a646ed84f8843c91e4\": [12, 0, 0, 81, 13],\n+ \"classpqxx_1_1params.html#af736445f5bb035a646ed84f8843c91e4\": [13, 0, 0, 80, 13],\n \"classpqxx_1_1pipeline.html\": [13, 0, 0, 81],\n \"classpqxx_1_1pipeline.html\": [12, 0, 0, 82],\n- \"classpqxx_1_1pipeline.html#a06667e2e73b597586e61cae8533a2874\": [12, 0, 0, 82, 9],\n \"classpqxx_1_1pipeline.html#a06667e2e73b597586e61cae8533a2874\": [13, 0, 0, 81, 9],\n- \"classpqxx_1_1pipeline.html#a0c80a5e68052b2c35089e384e3c842ce\": [13, 0, 0, 81, 1],\n+ \"classpqxx_1_1pipeline.html#a06667e2e73b597586e61cae8533a2874\": [12, 0, 0, 82, 9],\n \"classpqxx_1_1pipeline.html#a0c80a5e68052b2c35089e384e3c842ce\": [12, 0, 0, 82, 1],\n- \"classpqxx_1_1pipeline.html#a19c508710d0025993e41512f23de56be\": [12, 0, 0, 82, 12],\n+ \"classpqxx_1_1pipeline.html#a0c80a5e68052b2c35089e384e3c842ce\": [13, 0, 0, 81, 1],\n \"classpqxx_1_1pipeline.html#a19c508710d0025993e41512f23de56be\": [13, 0, 0, 81, 12],\n- \"classpqxx_1_1pipeline.html#a33a890c64efc37d76f3c649f145ff950\": [12, 0, 0, 82, 6],\n+ \"classpqxx_1_1pipeline.html#a19c508710d0025993e41512f23de56be\": [12, 0, 0, 82, 12],\n \"classpqxx_1_1pipeline.html#a33a890c64efc37d76f3c649f145ff950\": [13, 0, 0, 81, 6],\n+ \"classpqxx_1_1pipeline.html#a33a890c64efc37d76f3c649f145ff950\": [12, 0, 0, 82, 6],\n \"classpqxx_1_1pipeline.html#a5de968e394d7d9b68cfd84f9ae93f5bb\": [12, 0, 0, 82, 10],\n \"classpqxx_1_1pipeline.html#a5de968e394d7d9b68cfd84f9ae93f5bb\": [13, 0, 0, 81, 10],\n \"classpqxx_1_1pipeline.html#a5f8dfe951c18c19f24dd2e7a30ef276d\": [12, 0, 0, 82, 11],\n \"classpqxx_1_1pipeline.html#a5f8dfe951c18c19f24dd2e7a30ef276d\": [13, 0, 0, 81, 11],\n \"classpqxx_1_1pipeline.html#a7808218284e98bb5dffaf110defd1b33\": [12, 0, 0, 82, 5],\n \"classpqxx_1_1pipeline.html#a7808218284e98bb5dffaf110defd1b33\": [13, 0, 0, 81, 5],\n- \"classpqxx_1_1pipeline.html#a808f4fc39c77e490171d54a5554b337d\": [13, 0, 0, 81, 7],\n \"classpqxx_1_1pipeline.html#a808f4fc39c77e490171d54a5554b337d\": [12, 0, 0, 82, 7],\n- \"classpqxx_1_1pipeline.html#a92463b4b599f681a372016d5dbbe016d\": [12, 0, 0, 82, 2],\n+ \"classpqxx_1_1pipeline.html#a808f4fc39c77e490171d54a5554b337d\": [13, 0, 0, 81, 7],\n \"classpqxx_1_1pipeline.html#a92463b4b599f681a372016d5dbbe016d\": [13, 0, 0, 81, 2],\n+ \"classpqxx_1_1pipeline.html#a92463b4b599f681a372016d5dbbe016d\": [12, 0, 0, 82, 2],\n \"classpqxx_1_1pipeline.html#ab375b0b4e02c7f1a48602c4186fbbbd7\": [13, 0, 0, 81, 4],\n \"classpqxx_1_1pipeline.html#ab375b0b4e02c7f1a48602c4186fbbbd7\": [12, 0, 0, 82, 4],\n- \"classpqxx_1_1pipeline.html#ab856bb6e63a3b50a2cead9b730acc79f\": [13, 0, 0, 81, 3],\n \"classpqxx_1_1pipeline.html#ab856bb6e63a3b50a2cead9b730acc79f\": [12, 0, 0, 82, 3],\n- \"classpqxx_1_1pipeline.html#adb318eea9147fb82d67c43a430722283\": [12, 0, 0, 82, 8],\n+ \"classpqxx_1_1pipeline.html#ab856bb6e63a3b50a2cead9b730acc79f\": [13, 0, 0, 81, 3],\n \"classpqxx_1_1pipeline.html#adb318eea9147fb82d67c43a430722283\": [13, 0, 0, 81, 8],\n+ \"classpqxx_1_1pipeline.html#adb318eea9147fb82d67c43a430722283\": [12, 0, 0, 82, 8],\n \"classpqxx_1_1pipeline.html#af21cf61fd1c13a6729f48a241cbeba37\": [13, 0, 0, 81, 0],\n \"classpqxx_1_1pipeline.html#af21cf61fd1c13a6729f48a241cbeba37\": [12, 0, 0, 82, 0],\n \"classpqxx_1_1placeholders.html\": [13, 0, 0, 82],\n \"classpqxx_1_1placeholders.html\": [12, 0, 0, 83],\n- \"classpqxx_1_1placeholders.html#a254b9519ce26aee58826afcd4dadb778\": [13, 0, 0, 82, 0],\n \"classpqxx_1_1placeholders.html#a254b9519ce26aee58826afcd4dadb778\": [12, 0, 0, 83, 0],\n+ \"classpqxx_1_1placeholders.html#a254b9519ce26aee58826afcd4dadb778\": [13, 0, 0, 82, 0],\n \"classpqxx_1_1placeholders.html#a4bdc5f0c544e544a62af6d2fc2309c58\": [12, 0, 0, 83, 1],\n \"classpqxx_1_1placeholders.html#a4bdc5f0c544e544a62af6d2fc2309c58\": [13, 0, 0, 82, 1],\n- \"classpqxx_1_1placeholders.html#a92d006575732b3ead81cbaf4892197ae\": [12, 0, 0, 83, 3],\n \"classpqxx_1_1placeholders.html#a92d006575732b3ead81cbaf4892197ae\": [13, 0, 0, 82, 3],\n+ \"classpqxx_1_1placeholders.html#a92d006575732b3ead81cbaf4892197ae\": [12, 0, 0, 83, 3],\n \"classpqxx_1_1placeholders.html#aef09cd2fcb858917f33752a85e063bde\": [12, 0, 0, 83, 2],\n \"classpqxx_1_1placeholders.html#aef09cd2fcb858917f33752a85e063bde\": [13, 0, 0, 82, 2],\n \"classpqxx_1_1prepped.html\": [13, 0, 0, 87],\n \"classpqxx_1_1prepped.html\": [12, 0, 0, 88],\n \"classpqxx_1_1quiet__errorhandler.html\": [13, 0, 0, 89],\n \"classpqxx_1_1quiet__errorhandler.html\": [12, 0, 0, 90],\n \"classpqxx_1_1quiet__errorhandler.html#a051f8a9a1019974daffc47c75addc46e\": [12, 0, 0, 90, 1],\n \"classpqxx_1_1quiet__errorhandler.html#a051f8a9a1019974daffc47c75addc46e\": [13, 0, 0, 89, 1],\n \"classpqxx_1_1quiet__errorhandler.html#ac89d9cb68e28649ed53ec9d00ad75550\": [12, 0, 0, 90, 0],\n \"classpqxx_1_1quiet__errorhandler.html#ac89d9cb68e28649ed53ec9d00ad75550\": [13, 0, 0, 89, 0],\n \"classpqxx_1_1range.html\": [13, 0, 0, 90],\n \"classpqxx_1_1range.html\": [12, 0, 0, 91],\n- \"classpqxx_1_1range.html#a2e0b08f5564191f8c0bdc9fbdb273d62\": [13, 0, 0, 90, 6],\n \"classpqxx_1_1range.html#a2e0b08f5564191f8c0bdc9fbdb273d62\": [12, 0, 0, 91, 6],\n- \"classpqxx_1_1range.html#a2fa03d4ad40c545610bdc382e2aff187\": [12, 0, 0, 91, 3],\n+ \"classpqxx_1_1range.html#a2e0b08f5564191f8c0bdc9fbdb273d62\": [13, 0, 0, 90, 6],\n \"classpqxx_1_1range.html#a2fa03d4ad40c545610bdc382e2aff187\": [13, 0, 0, 90, 3],\n- \"classpqxx_1_1range.html#a3f5071556ce9c0b77e6e4a006b6c51fe\": [13, 0, 0, 90, 2],\n+ \"classpqxx_1_1range.html#a2fa03d4ad40c545610bdc382e2aff187\": [12, 0, 0, 91, 3],\n \"classpqxx_1_1range.html#a3f5071556ce9c0b77e6e4a006b6c51fe\": [12, 0, 0, 91, 2],\n+ \"classpqxx_1_1range.html#a3f5071556ce9c0b77e6e4a006b6c51fe\": [13, 0, 0, 90, 2],\n \"classpqxx_1_1range.html#a61aebbd9da9a64135c92d8464e41e09c\": [12, 0, 0, 91, 0],\n \"classpqxx_1_1range.html#a61aebbd9da9a64135c92d8464e41e09c\": [13, 0, 0, 90, 0],\n \"classpqxx_1_1range.html#a9fd52675604651358ccc941bcf0c63fc\": [12, 0, 0, 91, 5],\n \"classpqxx_1_1range.html#a9fd52675604651358ccc941bcf0c63fc\": [13, 0, 0, 90, 5],\n- \"classpqxx_1_1range.html#ac91cd0e74ae28042d8f887107f0aef76\": [13, 0, 0, 90, 4],\n \"classpqxx_1_1range.html#ac91cd0e74ae28042d8f887107f0aef76\": [12, 0, 0, 91, 4],\n+ \"classpqxx_1_1range.html#ac91cd0e74ae28042d8f887107f0aef76\": [13, 0, 0, 90, 4],\n \"classpqxx_1_1range.html#af8bf753edbe8b8473a861ffa02af4b9b\": [13, 0, 0, 90, 1],\n \"classpqxx_1_1range.html#af8bf753edbe8b8473a861ffa02af4b9b\": [12, 0, 0, 91, 1],\n \"classpqxx_1_1range__bound.html\": [12, 0, 0, 92],\n \"classpqxx_1_1range__bound.html\": [13, 0, 0, 91],\n- \"classpqxx_1_1range__bound.html#a0854916d7bbd20f2018a6a88f6852a91\": [12, 0, 0, 92, 1],\n \"classpqxx_1_1range__bound.html#a0854916d7bbd20f2018a6a88f6852a91\": [13, 0, 0, 91, 1],\n- \"classpqxx_1_1range__bound.html#a5e36faad60586213187bbe1735f00c5b\": [13, 0, 0, 91, 2],\n+ \"classpqxx_1_1range__bound.html#a0854916d7bbd20f2018a6a88f6852a91\": [12, 0, 0, 92, 1],\n \"classpqxx_1_1range__bound.html#a5e36faad60586213187bbe1735f00c5b\": [12, 0, 0, 92, 2],\n+ \"classpqxx_1_1range__bound.html#a5e36faad60586213187bbe1735f00c5b\": [13, 0, 0, 91, 2],\n \"classpqxx_1_1range__bound.html#a62434321bfbc5f66bf3921ea2fb31274\": [12, 0, 0, 92, 4],\n \"classpqxx_1_1range__bound.html#a62434321bfbc5f66bf3921ea2fb31274\": [13, 0, 0, 91, 4],\n \"classpqxx_1_1range__bound.html#a76d25b17ed6af78070b888f5effe70ba\": [12, 0, 0, 92, 5],\n \"classpqxx_1_1range__bound.html#a76d25b17ed6af78070b888f5effe70ba\": [13, 0, 0, 91, 5],\n- \"classpqxx_1_1range__bound.html#a806f0f1a87561914eaf445e5159d891a\": [12, 0, 0, 92, 0],\n \"classpqxx_1_1range__bound.html#a806f0f1a87561914eaf445e5159d891a\": [13, 0, 0, 91, 0],\n- \"classpqxx_1_1range__bound.html#abe993384f178fe7ac1143e88a3dbcaeb\": [13, 0, 0, 91, 3],\n+ \"classpqxx_1_1range__bound.html#a806f0f1a87561914eaf445e5159d891a\": [12, 0, 0, 92, 0],\n \"classpqxx_1_1range__bound.html#abe993384f178fe7ac1143e88a3dbcaeb\": [12, 0, 0, 92, 3],\n+ \"classpqxx_1_1range__bound.html#abe993384f178fe7ac1143e88a3dbcaeb\": [13, 0, 0, 91, 3],\n \"classpqxx_1_1result.html\": [13, 0, 0, 94],\n \"classpqxx_1_1result.html\": [12, 0, 0, 95],\n- \"classpqxx_1_1result.html#a0144c5047e9e17cea00ca1c025a5ebcd\": [13, 0, 0, 94, 7],\n \"classpqxx_1_1result.html#a0144c5047e9e17cea00ca1c025a5ebcd\": [12, 0, 0, 95, 7],\n- \"classpqxx_1_1result.html#a05854a0b68f2a8d3d2e93310ad51c639\": [13, 0, 0, 94, 12],\n+ \"classpqxx_1_1result.html#a0144c5047e9e17cea00ca1c025a5ebcd\": [13, 0, 0, 94, 7],\n \"classpqxx_1_1result.html#a05854a0b68f2a8d3d2e93310ad51c639\": [12, 0, 0, 95, 12],\n- \"classpqxx_1_1result.html#a0c06b4a276d79960cfdbbfb1be070b48\": [12, 0, 0, 95, 20],\n+ \"classpqxx_1_1result.html#a05854a0b68f2a8d3d2e93310ad51c639\": [13, 0, 0, 94, 12],\n \"classpqxx_1_1result.html#a0c06b4a276d79960cfdbbfb1be070b48\": [13, 0, 0, 94, 20],\n- \"classpqxx_1_1result.html#a22161b4bebb52ef85a51509302b5a8a9\": [12, 0, 0, 95, 30],\n+ \"classpqxx_1_1result.html#a0c06b4a276d79960cfdbbfb1be070b48\": [12, 0, 0, 95, 20],\n \"classpqxx_1_1result.html#a22161b4bebb52ef85a51509302b5a8a9\": [13, 0, 0, 94, 30],\n- \"classpqxx_1_1result.html#a2caa168a1984a277b29d70ccbbdf50c4\": [12, 0, 0, 95, 19],\n+ \"classpqxx_1_1result.html#a22161b4bebb52ef85a51509302b5a8a9\": [12, 0, 0, 95, 30],\n \"classpqxx_1_1result.html#a2caa168a1984a277b29d70ccbbdf50c4\": [13, 0, 0, 94, 19],\n+ \"classpqxx_1_1result.html#a2caa168a1984a277b29d70ccbbdf50c4\": [12, 0, 0, 95, 19],\n \"classpqxx_1_1result.html#a399cde6713d4b415e229d67bfba4eccd\": [13, 0, 0, 94, 22],\n \"classpqxx_1_1result.html#a399cde6713d4b415e229d67bfba4eccd\": [12, 0, 0, 95, 22],\n- \"classpqxx_1_1result.html#a40cf4ed9f2a6ac1004bb79ea3ea8ba89\": [13, 0, 0, 94, 6],\n \"classpqxx_1_1result.html#a40cf4ed9f2a6ac1004bb79ea3ea8ba89\": [12, 0, 0, 95, 6],\n+ \"classpqxx_1_1result.html#a40cf4ed9f2a6ac1004bb79ea3ea8ba89\": [13, 0, 0, 94, 6],\n \"classpqxx_1_1result.html#a47fef290e0e6db165a4d73b52874fd1c\": [12, 0, 0, 95, 24],\n \"classpqxx_1_1result.html#a47fef290e0e6db165a4d73b52874fd1c\": [13, 0, 0, 94, 24],\n \"classpqxx_1_1result.html#a4e047a3746e1e9f37efd0cedfc4a891b\": [13, 0, 0, 94, 21],\n \"classpqxx_1_1result.html#a4e047a3746e1e9f37efd0cedfc4a891b\": [12, 0, 0, 95, 21],\n \"classpqxx_1_1result.html#a501bfb79335ea4c51bc55f9c0aa6c75f\": [12, 0, 0, 95, 25],\n \"classpqxx_1_1result.html#a501bfb79335ea4c51bc55f9c0aa6c75f\": [13, 0, 0, 94, 25],\n \"classpqxx_1_1result.html#a5094a7be5f02f0f4c641fbd5ccb1a4da\": [13, 0, 0, 94, 16],\n \"classpqxx_1_1result.html#a5094a7be5f02f0f4c641fbd5ccb1a4da\": [12, 0, 0, 95, 16],\n \"classpqxx_1_1result.html#a509d72c494b149d6b3e7277b1a641c34\": [12, 0, 0, 95, 14],\n \"classpqxx_1_1result.html#a509d72c494b149d6b3e7277b1a641c34\": [13, 0, 0, 94, 14],\n- \"classpqxx_1_1result.html#a5d0d4d8714ea814f1d80d11578976098\": [12, 0, 0, 95, 26],\n \"classpqxx_1_1result.html#a5d0d4d8714ea814f1d80d11578976098\": [13, 0, 0, 94, 26],\n- \"classpqxx_1_1result.html#a60340a6e20a3b018a296c2e42528198d\": [13, 0, 0, 94, 3],\n+ \"classpqxx_1_1result.html#a5d0d4d8714ea814f1d80d11578976098\": [12, 0, 0, 95, 26],\n \"classpqxx_1_1result.html#a60340a6e20a3b018a296c2e42528198d\": [12, 0, 0, 95, 3],\n+ \"classpqxx_1_1result.html#a60340a6e20a3b018a296c2e42528198d\": [13, 0, 0, 94, 3],\n \"classpqxx_1_1result.html#a62fb88e9b4832537309eae2a97a0805c\": [13, 0, 0, 94, 2],\n \"classpqxx_1_1result.html#a62fb88e9b4832537309eae2a97a0805c\": [12, 0, 0, 95, 2],\n- \"classpqxx_1_1result.html#a7752ffdad59cb03bb58cd3cb4d056ab6\": [12, 0, 0, 95, 1],\n \"classpqxx_1_1result.html#a7752ffdad59cb03bb58cd3cb4d056ab6\": [13, 0, 0, 94, 1],\n+ \"classpqxx_1_1result.html#a7752ffdad59cb03bb58cd3cb4d056ab6\": [12, 0, 0, 95, 1],\n \"classpqxx_1_1result.html#a7d16111aa06ba636ea3e7b4d90c7465b\": [13, 0, 0, 94, 10],\n \"classpqxx_1_1result.html#a7d16111aa06ba636ea3e7b4d90c7465b\": [12, 0, 0, 95, 10],\n- \"classpqxx_1_1result.html#a82b0f360dc1be25306ee58b27856457f\": [13, 0, 0, 94, 5],\n \"classpqxx_1_1result.html#a82b0f360dc1be25306ee58b27856457f\": [12, 0, 0, 95, 5],\n- \"classpqxx_1_1result.html#a863d43ecc8773aac3a6204be4c37fb6d\": [13, 0, 0, 94, 9],\n+ \"classpqxx_1_1result.html#a82b0f360dc1be25306ee58b27856457f\": [13, 0, 0, 94, 5],\n \"classpqxx_1_1result.html#a863d43ecc8773aac3a6204be4c37fb6d\": [12, 0, 0, 95, 9],\n+ \"classpqxx_1_1result.html#a863d43ecc8773aac3a6204be4c37fb6d\": [13, 0, 0, 94, 9],\n \"classpqxx_1_1result.html#a9302f9b61826f8b7b213f13b30453c0b\": [12, 0, 0, 95, 15],\n \"classpqxx_1_1result.html#a9302f9b61826f8b7b213f13b30453c0b\": [13, 0, 0, 94, 15],\n \"classpqxx_1_1result.html#a9d28f84628b9e8a8fecf7849f31bf1a0\": [12, 0, 0, 95, 27],\n \"classpqxx_1_1result.html#a9d28f84628b9e8a8fecf7849f31bf1a0\": [13, 0, 0, 94, 27],\n- \"classpqxx_1_1result.html#aa50b250a5081a0366f79bff9757adf27\": [12, 0, 0, 95, 13],\n \"classpqxx_1_1result.html#aa50b250a5081a0366f79bff9757adf27\": [13, 0, 0, 94, 13],\n- \"classpqxx_1_1result.html#ad0f48c5bc316a6402153c743168d9819\": [13, 0, 0, 94, 8],\n+ \"classpqxx_1_1result.html#aa50b250a5081a0366f79bff9757adf27\": [12, 0, 0, 95, 13],\n \"classpqxx_1_1result.html#ad0f48c5bc316a6402153c743168d9819\": [12, 0, 0, 95, 8],\n+ \"classpqxx_1_1result.html#ad0f48c5bc316a6402153c743168d9819\": [13, 0, 0, 94, 8],\n \"classpqxx_1_1result.html#ad1d929a8c555ef0e4e84d4dbcf56c05e\": [13, 0, 0, 94, 28],\n \"classpqxx_1_1result.html#ad1d929a8c555ef0e4e84d4dbcf56c05e\": [12, 0, 0, 95, 28],\n- \"classpqxx_1_1result.html#ada6d82fe35f72cb45623fba4f8066279\": [13, 0, 0, 94, 23],\n \"classpqxx_1_1result.html#ada6d82fe35f72cb45623fba4f8066279\": [12, 0, 0, 95, 23],\n+ \"classpqxx_1_1result.html#ada6d82fe35f72cb45623fba4f8066279\": [13, 0, 0, 94, 23],\n \"classpqxx_1_1result.html#ade8cdc5728f64d00f45073b8d6264778\": [12, 0, 0, 95, 11],\n \"classpqxx_1_1result.html#ade8cdc5728f64d00f45073b8d6264778\": [13, 0, 0, 94, 11],\n \"classpqxx_1_1result.html#ae65c4fb3934978bba367ab61811aabec\": [13, 0, 0, 94, 29],\n \"classpqxx_1_1result.html#ae65c4fb3934978bba367ab61811aabec\": [12, 0, 0, 95, 29],\n \"classpqxx_1_1result.html#aeafa3e659d940f7e2b95d92b856e1261\": [12, 0, 0, 95, 4],\n \"classpqxx_1_1result.html#aeafa3e659d940f7e2b95d92b856e1261\": [13, 0, 0, 94, 4],\n- \"classpqxx_1_1result.html#aee29dae44071175c8c6dd4a046a060c5\": [12, 0, 0, 95, 18],\n- \"classpqxx_1_1result.html#aee29dae44071175c8c6dd4a046a060c5\": [13, 0, 0, 94, 18]\n+ \"classpqxx_1_1result.html#aee29dae44071175c8c6dd4a046a060c5\": [13, 0, 0, 94, 18],\n+ \"classpqxx_1_1result.html#aee29dae44071175c8c6dd4a046a060c5\": [12, 0, 0, 95, 18]\n };\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex3.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,148 +1,148 @@\n var NAVTREEINDEX3 = {\n- \"classpqxx_1_1result.html#af73d036566ef69618f8b22ba9a220a2e\": [13, 0, 0, 94, 0],\n \"classpqxx_1_1result.html#af73d036566ef69618f8b22ba9a220a2e\": [12, 0, 0, 95, 0],\n+ \"classpqxx_1_1result.html#af73d036566ef69618f8b22ba9a220a2e\": [13, 0, 0, 94, 0],\n \"classpqxx_1_1result.html#afb672c73ca193aaf2fc5ba4d5c8a96f8\": [13, 0, 0, 94, 17],\n \"classpqxx_1_1result.html#afb672c73ca193aaf2fc5ba4d5c8a96f8\": [12, 0, 0, 95, 17],\n \"classpqxx_1_1row.html\": [12, 0, 0, 96],\n \"classpqxx_1_1row.html\": [13, 0, 0, 95],\n- \"classpqxx_1_1row.html#a05994def0b6c7b426bb13a7a95e9e035\": [13, 0, 0, 95, 11],\n \"classpqxx_1_1row.html#a05994def0b6c7b426bb13a7a95e9e035\": [12, 0, 0, 96, 11],\n- \"classpqxx_1_1row.html#a0a090abf27d652b8691fffba07fd3bd6\": [12, 0, 0, 96, 1],\n+ \"classpqxx_1_1row.html#a05994def0b6c7b426bb13a7a95e9e035\": [13, 0, 0, 95, 11],\n \"classpqxx_1_1row.html#a0a090abf27d652b8691fffba07fd3bd6\": [13, 0, 0, 95, 1],\n+ \"classpqxx_1_1row.html#a0a090abf27d652b8691fffba07fd3bd6\": [12, 0, 0, 96, 1],\n \"classpqxx_1_1row.html#a0cc2133611f007e7390988f6110245c8\": [12, 0, 0, 96, 15],\n \"classpqxx_1_1row.html#a0cc2133611f007e7390988f6110245c8\": [13, 0, 0, 95, 15],\n \"classpqxx_1_1row.html#a0ec7d11b9721ab7bb54ec5df113ab8f5\": [13, 0, 0, 95, 19],\n \"classpqxx_1_1row.html#a0ec7d11b9721ab7bb54ec5df113ab8f5\": [12, 0, 0, 96, 19],\n- \"classpqxx_1_1row.html#a20640aad643b5309242056662ca06f98\": [13, 0, 0, 95, 3],\n \"classpqxx_1_1row.html#a20640aad643b5309242056662ca06f98\": [12, 0, 0, 96, 3],\n+ \"classpqxx_1_1row.html#a20640aad643b5309242056662ca06f98\": [13, 0, 0, 95, 3],\n \"classpqxx_1_1row.html#a2cbbf217862683b5ce98bcd03e07d859\": [12, 0, 0, 96, 8],\n \"classpqxx_1_1row.html#a2cbbf217862683b5ce98bcd03e07d859\": [13, 0, 0, 95, 8],\n \"classpqxx_1_1row.html#a2dd6b180a8354569984d81120cb0d765\": [12, 0, 0, 96, 6],\n \"classpqxx_1_1row.html#a2dd6b180a8354569984d81120cb0d765\": [13, 0, 0, 95, 6],\n- \"classpqxx_1_1row.html#a4195a594e4f11829637820cd89e39c7b\": [13, 0, 0, 95, 14],\n \"classpqxx_1_1row.html#a4195a594e4f11829637820cd89e39c7b\": [12, 0, 0, 96, 14],\n+ \"classpqxx_1_1row.html#a4195a594e4f11829637820cd89e39c7b\": [13, 0, 0, 95, 14],\n \"classpqxx_1_1row.html#a454cb5eda2dad962c8370e77b35d6341\": [12, 0, 0, 96, 9],\n \"classpqxx_1_1row.html#a454cb5eda2dad962c8370e77b35d6341\": [13, 0, 0, 95, 9],\n- \"classpqxx_1_1row.html#a5bd8864f453d45f83984ed858fb68880\": [12, 0, 0, 96, 0],\n \"classpqxx_1_1row.html#a5bd8864f453d45f83984ed858fb68880\": [13, 0, 0, 95, 0],\n- \"classpqxx_1_1row.html#a7e8c1276fe6f0b7bb82d3d40b98e1633\": [13, 0, 0, 95, 5],\n+ \"classpqxx_1_1row.html#a5bd8864f453d45f83984ed858fb68880\": [12, 0, 0, 96, 0],\n \"classpqxx_1_1row.html#a7e8c1276fe6f0b7bb82d3d40b98e1633\": [12, 0, 0, 96, 5],\n- \"classpqxx_1_1row.html#a83a21b69ee9c581fc449d24dc33d8e65\": [12, 0, 0, 96, 21],\n+ \"classpqxx_1_1row.html#a7e8c1276fe6f0b7bb82d3d40b98e1633\": [13, 0, 0, 95, 5],\n \"classpqxx_1_1row.html#a83a21b69ee9c581fc449d24dc33d8e65\": [13, 0, 0, 95, 21],\n- \"classpqxx_1_1row.html#a859f508b95f424531247427189a529ef\": [12, 0, 0, 96, 20],\n+ \"classpqxx_1_1row.html#a83a21b69ee9c581fc449d24dc33d8e65\": [12, 0, 0, 96, 21],\n \"classpqxx_1_1row.html#a859f508b95f424531247427189a529ef\": [13, 0, 0, 95, 20],\n+ \"classpqxx_1_1row.html#a859f508b95f424531247427189a529ef\": [12, 0, 0, 96, 20],\n \"classpqxx_1_1row.html#aadd30c2141060d954c16301e3711a02c\": [12, 0, 0, 96, 13],\n \"classpqxx_1_1row.html#aadd30c2141060d954c16301e3711a02c\": [13, 0, 0, 95, 13],\n \"classpqxx_1_1row.html#ab687d68a5d610e08ab637c956fa8b134\": [13, 0, 0, 95, 2],\n \"classpqxx_1_1row.html#ab687d68a5d610e08ab637c956fa8b134\": [12, 0, 0, 96, 2],\n \"classpqxx_1_1row.html#ac478a252d2bac75e1fe0d65fd99f9042\": [12, 0, 0, 96, 17],\n \"classpqxx_1_1row.html#ac478a252d2bac75e1fe0d65fd99f9042\": [13, 0, 0, 95, 17],\n \"classpqxx_1_1row.html#ad786992d33d385865dbae17980345704\": [13, 0, 0, 95, 4],\n \"classpqxx_1_1row.html#ad786992d33d385865dbae17980345704\": [12, 0, 0, 96, 4],\n- \"classpqxx_1_1row.html#add6bd3b28ccb8178a072e8d3d19b9616\": [13, 0, 0, 95, 16],\n \"classpqxx_1_1row.html#add6bd3b28ccb8178a072e8d3d19b9616\": [12, 0, 0, 96, 16],\n- \"classpqxx_1_1row.html#aee26781d8c0000bdc1d80c1624b17c81\": [13, 0, 0, 95, 12],\n+ \"classpqxx_1_1row.html#add6bd3b28ccb8178a072e8d3d19b9616\": [13, 0, 0, 95, 16],\n \"classpqxx_1_1row.html#aee26781d8c0000bdc1d80c1624b17c81\": [12, 0, 0, 96, 12],\n- \"classpqxx_1_1row.html#af81dc44f173ab151bd052f339c10521f\": [13, 0, 0, 95, 10],\n+ \"classpqxx_1_1row.html#aee26781d8c0000bdc1d80c1624b17c81\": [13, 0, 0, 95, 12],\n \"classpqxx_1_1row.html#af81dc44f173ab151bd052f339c10521f\": [12, 0, 0, 96, 10],\n+ \"classpqxx_1_1row.html#af81dc44f173ab151bd052f339c10521f\": [13, 0, 0, 95, 10],\n \"classpqxx_1_1row.html#afa096ead6281d8bc4fab569f8bb7f70b\": [13, 0, 0, 95, 18],\n \"classpqxx_1_1row.html#afa096ead6281d8bc4fab569f8bb7f70b\": [12, 0, 0, 96, 18],\n \"classpqxx_1_1row.html#afd145c4dc286f09a65e81b26ac43a565\": [13, 0, 0, 95, 7],\n \"classpqxx_1_1row.html#afd145c4dc286f09a65e81b26ac43a565\": [12, 0, 0, 96, 7],\n \"classpqxx_1_1stateless__cursor.html\": [13, 0, 0, 98],\n \"classpqxx_1_1stateless__cursor.html\": [12, 0, 0, 99],\n- \"classpqxx_1_1stateless__cursor.html#a0be6e4435c96296ab1f91f4769235dae\": [13, 0, 0, 98, 3],\n \"classpqxx_1_1stateless__cursor.html#a0be6e4435c96296ab1f91f4769235dae\": [12, 0, 0, 99, 3],\n- \"classpqxx_1_1stateless__cursor.html#a333403f9410c09e299d87cc6f06738d0\": [13, 0, 0, 98, 2],\n+ \"classpqxx_1_1stateless__cursor.html#a0be6e4435c96296ab1f91f4769235dae\": [13, 0, 0, 98, 3],\n \"classpqxx_1_1stateless__cursor.html#a333403f9410c09e299d87cc6f06738d0\": [12, 0, 0, 99, 2],\n- \"classpqxx_1_1stateless__cursor.html#a97046479f709ae621473c48ed7a0932d\": [12, 0, 0, 99, 4],\n+ \"classpqxx_1_1stateless__cursor.html#a333403f9410c09e299d87cc6f06738d0\": [13, 0, 0, 98, 2],\n \"classpqxx_1_1stateless__cursor.html#a97046479f709ae621473c48ed7a0932d\": [13, 0, 0, 98, 4],\n+ \"classpqxx_1_1stateless__cursor.html#a97046479f709ae621473c48ed7a0932d\": [12, 0, 0, 99, 4],\n \"classpqxx_1_1stateless__cursor.html#ad77d68832afb8572fd976fc816bec89a\": [13, 0, 0, 98, 0],\n \"classpqxx_1_1stateless__cursor.html#ad77d68832afb8572fd976fc816bec89a\": [12, 0, 0, 99, 0],\n- \"classpqxx_1_1stateless__cursor.html#ae278f24bab98d3946061934a48992067\": [12, 0, 0, 99, 5],\n \"classpqxx_1_1stateless__cursor.html#ae278f24bab98d3946061934a48992067\": [13, 0, 0, 98, 5],\n- \"classpqxx_1_1stateless__cursor.html#afe5492d726a1765647985874d17f4149\": [12, 0, 0, 99, 1],\n+ \"classpqxx_1_1stateless__cursor.html#ae278f24bab98d3946061934a48992067\": [12, 0, 0, 99, 5],\n \"classpqxx_1_1stateless__cursor.html#afe5492d726a1765647985874d17f4149\": [13, 0, 0, 98, 1],\n- \"classpqxx_1_1stream__from.html\": [13, 0, 0, 100],\n+ \"classpqxx_1_1stateless__cursor.html#afe5492d726a1765647985874d17f4149\": [12, 0, 0, 99, 1],\n \"classpqxx_1_1stream__from.html\": [12, 0, 0, 101],\n+ \"classpqxx_1_1stream__from.html\": [13, 0, 0, 100],\n \"classpqxx_1_1stream__from.html#a049c94dcc710918f0b5c7416b638aefa\": [13, 0, 0, 100, 10],\n \"classpqxx_1_1stream__from.html#a049c94dcc710918f0b5c7416b638aefa\": [12, 0, 0, 101, 10],\n \"classpqxx_1_1stream__from.html#a0ea468c0d02f2a2c9c2c7ff41dbece3c\": [13, 0, 0, 100, 12],\n \"classpqxx_1_1stream__from.html#a0ea468c0d02f2a2c9c2c7ff41dbece3c\": [12, 0, 0, 101, 12],\n \"classpqxx_1_1stream__from.html#a0f32402331d7f2b8ed73419f1eed22ba\": [12, 0, 0, 101, 2],\n \"classpqxx_1_1stream__from.html#a0f32402331d7f2b8ed73419f1eed22ba\": [13, 0, 0, 100, 2],\n- \"classpqxx_1_1stream__from.html#a11a6e30a28260f10fa9bfbd6f7ea36c4\": [12, 0, 0, 101, 0],\n \"classpqxx_1_1stream__from.html#a11a6e30a28260f10fa9bfbd6f7ea36c4\": [13, 0, 0, 100, 0],\n+ \"classpqxx_1_1stream__from.html#a11a6e30a28260f10fa9bfbd6f7ea36c4\": [12, 0, 0, 101, 0],\n \"classpqxx_1_1stream__from.html#a3694734ee04887d48fa799ab717787dd\": [13, 0, 0, 100, 13],\n \"classpqxx_1_1stream__from.html#a3694734ee04887d48fa799ab717787dd\": [12, 0, 0, 101, 13],\n- \"classpqxx_1_1stream__from.html#a38b17b7198ed153d01e42d5873cdf070\": [12, 0, 0, 101, 5],\n \"classpqxx_1_1stream__from.html#a38b17b7198ed153d01e42d5873cdf070\": [13, 0, 0, 100, 5],\n- \"classpqxx_1_1stream__from.html#a3c4cd42c50e3e90282ea5570ddb19e70\": [12, 0, 0, 101, 1],\n+ \"classpqxx_1_1stream__from.html#a38b17b7198ed153d01e42d5873cdf070\": [12, 0, 0, 101, 5],\n \"classpqxx_1_1stream__from.html#a3c4cd42c50e3e90282ea5570ddb19e70\": [13, 0, 0, 100, 1],\n+ \"classpqxx_1_1stream__from.html#a3c4cd42c50e3e90282ea5570ddb19e70\": [12, 0, 0, 101, 1],\n \"classpqxx_1_1stream__from.html#a4720bea2f8cbff6d5e1d37f22dbc8a6d\": [12, 0, 0, 101, 7],\n \"classpqxx_1_1stream__from.html#a4720bea2f8cbff6d5e1d37f22dbc8a6d\": [13, 0, 0, 100, 7],\n \"classpqxx_1_1stream__from.html#a6afe5f8cdb8f158b46fa9c616c7864bf\": [12, 0, 0, 101, 6],\n \"classpqxx_1_1stream__from.html#a6afe5f8cdb8f158b46fa9c616c7864bf\": [13, 0, 0, 100, 6],\n \"classpqxx_1_1stream__from.html#a6ce910e623631b49df45fff857d54d15\": [12, 0, 0, 101, 8],\n \"classpqxx_1_1stream__from.html#a6ce910e623631b49df45fff857d54d15\": [13, 0, 0, 100, 8],\n \"classpqxx_1_1stream__from.html#a832fe2b217cf7e1a5496d35f75dcd15c\": [13, 0, 0, 100, 3],\n \"classpqxx_1_1stream__from.html#a832fe2b217cf7e1a5496d35f75dcd15c\": [12, 0, 0, 101, 3],\n \"classpqxx_1_1stream__from.html#abcfe96b18d9e2c4177799248fe143807\": [13, 0, 0, 100, 4],\n \"classpqxx_1_1stream__from.html#abcfe96b18d9e2c4177799248fe143807\": [12, 0, 0, 101, 4],\n- \"classpqxx_1_1stream__from.html#acb595a8190351f2a8b594518351c40f3\": [13, 0, 0, 100, 9],\n \"classpqxx_1_1stream__from.html#acb595a8190351f2a8b594518351c40f3\": [12, 0, 0, 101, 9],\n+ \"classpqxx_1_1stream__from.html#acb595a8190351f2a8b594518351c40f3\": [13, 0, 0, 100, 9],\n \"classpqxx_1_1stream__from.html#aee20a5dfaefcf142ee64d5777ebaa744\": [13, 0, 0, 100, 14],\n \"classpqxx_1_1stream__from.html#aee20a5dfaefcf142ee64d5777ebaa744\": [12, 0, 0, 101, 14],\n- \"classpqxx_1_1stream__from.html#afdb9ffc4e6baa48bd6f2169cba7020d0\": [13, 0, 0, 100, 11],\n \"classpqxx_1_1stream__from.html#afdb9ffc4e6baa48bd6f2169cba7020d0\": [12, 0, 0, 101, 11],\n- \"classpqxx_1_1stream__to.html\": [12, 0, 0, 103],\n+ \"classpqxx_1_1stream__from.html#afdb9ffc4e6baa48bd6f2169cba7020d0\": [13, 0, 0, 100, 11],\n \"classpqxx_1_1stream__to.html\": [13, 0, 0, 102],\n+ \"classpqxx_1_1stream__to.html\": [12, 0, 0, 103],\n \"classpqxx_1_1stream__to.html#a12b525e57012cb5c2ba3481c959af914\": [13, 0, 0, 102, 4],\n \"classpqxx_1_1stream__to.html#a12b525e57012cb5c2ba3481c959af914\": [12, 0, 0, 103, 4],\n- \"classpqxx_1_1stream__to.html#a3491f56118589adff7b7fc214689ad67\": [13, 0, 0, 102, 1],\n \"classpqxx_1_1stream__to.html#a3491f56118589adff7b7fc214689ad67\": [12, 0, 0, 103, 1],\n+ \"classpqxx_1_1stream__to.html#a3491f56118589adff7b7fc214689ad67\": [13, 0, 0, 102, 1],\n \"classpqxx_1_1stream__to.html#a41ffa59e4f36803f1e9473ed83b3c41d\": [13, 0, 0, 102, 8],\n \"classpqxx_1_1stream__to.html#a41ffa59e4f36803f1e9473ed83b3c41d\": [12, 0, 0, 103, 8],\n \"classpqxx_1_1stream__to.html#a46f5520a97cc4eecbc75e4fbbfc2e9e3\": [13, 0, 0, 102, 3],\n \"classpqxx_1_1stream__to.html#a46f5520a97cc4eecbc75e4fbbfc2e9e3\": [12, 0, 0, 103, 3],\n- \"classpqxx_1_1stream__to.html#a6284b8a32d0841436e1761b449287788\": [12, 0, 0, 103, 2],\n \"classpqxx_1_1stream__to.html#a6284b8a32d0841436e1761b449287788\": [13, 0, 0, 102, 2],\n+ \"classpqxx_1_1stream__to.html#a6284b8a32d0841436e1761b449287788\": [12, 0, 0, 103, 2],\n \"classpqxx_1_1stream__to.html#a726187a18a93a4c5cc2343bcb9e97da8\": [12, 0, 0, 103, 0],\n \"classpqxx_1_1stream__to.html#a726187a18a93a4c5cc2343bcb9e97da8\": [13, 0, 0, 102, 0],\n- \"classpqxx_1_1stream__to.html#aa42e3e2ce5942b5d106356fe196a00a0\": [12, 0, 0, 103, 6],\n \"classpqxx_1_1stream__to.html#aa42e3e2ce5942b5d106356fe196a00a0\": [13, 0, 0, 102, 6],\n- \"classpqxx_1_1stream__to.html#ac25d66567d17ddd648abe02c4583d981\": [12, 0, 0, 103, 5],\n+ \"classpqxx_1_1stream__to.html#aa42e3e2ce5942b5d106356fe196a00a0\": [12, 0, 0, 103, 6],\n \"classpqxx_1_1stream__to.html#ac25d66567d17ddd648abe02c4583d981\": [13, 0, 0, 102, 5],\n- \"classpqxx_1_1stream__to.html#ae628c71679b4ec6ebb4378b487e4f543\": [12, 0, 0, 103, 7],\n+ \"classpqxx_1_1stream__to.html#ac25d66567d17ddd648abe02c4583d981\": [12, 0, 0, 103, 5],\n \"classpqxx_1_1stream__to.html#ae628c71679b4ec6ebb4378b487e4f543\": [13, 0, 0, 102, 7],\n- \"classpqxx_1_1transaction__focus.html\": [12, 0, 0, 147],\n+ \"classpqxx_1_1stream__to.html#ae628c71679b4ec6ebb4378b487e4f543\": [12, 0, 0, 103, 7],\n \"classpqxx_1_1transaction__focus.html\": [13, 0, 0, 146],\n+ \"classpqxx_1_1transaction__focus.html\": [12, 0, 0, 147],\n \"classpqxx_1_1transaction__focus.html#a4ccffff2688e9e7757acc385be1d781c\": [13, 0, 0, 146, 1],\n \"classpqxx_1_1transaction__focus.html#a4ccffff2688e9e7757acc385be1d781c\": [12, 0, 0, 147, 1],\n \"classpqxx_1_1transaction__focus.html#a4f6084553fd1dfe95cc5432675bf9395\": [13, 0, 0, 146, 0],\n \"classpqxx_1_1transaction__focus.html#a4f6084553fd1dfe95cc5432675bf9395\": [12, 0, 0, 147, 0],\n- \"classpqxx_1_1zview.html\": [12, 0, 0, 157],\n \"classpqxx_1_1zview.html\": [13, 0, 0, 156],\n- \"classpqxx_1_1zview.html#a19fb305262e043452bd898774d6c277f\": [13, 0, 0, 156, 6],\n+ \"classpqxx_1_1zview.html\": [12, 0, 0, 157],\n \"classpqxx_1_1zview.html#a19fb305262e043452bd898774d6c277f\": [12, 0, 0, 157, 6],\n+ \"classpqxx_1_1zview.html#a19fb305262e043452bd898774d6c277f\": [13, 0, 0, 156, 6],\n \"classpqxx_1_1zview.html#a3306a96bedcda83725687e6e9757b586\": [12, 0, 0, 157, 7],\n \"classpqxx_1_1zview.html#a3306a96bedcda83725687e6e9757b586\": [13, 0, 0, 156, 7],\n- \"classpqxx_1_1zview.html#a3ddf4e0ff127e96f8f68361088f96d2e\": [13, 0, 0, 156, 3],\n \"classpqxx_1_1zview.html#a3ddf4e0ff127e96f8f68361088f96d2e\": [12, 0, 0, 157, 3],\n+ \"classpqxx_1_1zview.html#a3ddf4e0ff127e96f8f68361088f96d2e\": [13, 0, 0, 156, 3],\n \"classpqxx_1_1zview.html#a581b8c75e8c2c0de579debfca37cd725\": [12, 0, 0, 157, 1],\n \"classpqxx_1_1zview.html#a581b8c75e8c2c0de579debfca37cd725\": [13, 0, 0, 156, 1],\n- \"classpqxx_1_1zview.html#a766cc45a178d43b1471fdc025f01535d\": [12, 0, 0, 157, 0],\n \"classpqxx_1_1zview.html#a766cc45a178d43b1471fdc025f01535d\": [13, 0, 0, 156, 0],\n+ \"classpqxx_1_1zview.html#a766cc45a178d43b1471fdc025f01535d\": [12, 0, 0, 157, 0],\n \"classpqxx_1_1zview.html#a9297b1b431ea593ea2ec6c8f0beaefa9\": [12, 0, 0, 157, 5],\n \"classpqxx_1_1zview.html#a9297b1b431ea593ea2ec6c8f0beaefa9\": [13, 0, 0, 156, 5],\n- \"classpqxx_1_1zview.html#aa713ad5896e247699dcb5be68528b0e8\": [12, 0, 0, 157, 2],\n \"classpqxx_1_1zview.html#aa713ad5896e247699dcb5be68528b0e8\": [13, 0, 0, 156, 2],\n- \"classpqxx_1_1zview.html#ad5928543720ef457a1ca229920f33de6\": [12, 0, 0, 157, 4],\n+ \"classpqxx_1_1zview.html#aa713ad5896e247699dcb5be68528b0e8\": [12, 0, 0, 157, 2],\n \"classpqxx_1_1zview.html#ad5928543720ef457a1ca229920f33de6\": [13, 0, 0, 156, 4],\n+ \"classpqxx_1_1zview.html#ad5928543720ef457a1ca229920f33de6\": [12, 0, 0, 157, 4],\n \"composite_8hxx_source.html\": [14, 0, 0, 0, 4],\n \"concat_8hxx_source.html\": [14, 0, 0, 0, 0, 3],\n \"config-internal-autotools_8h_source.html\": [14, 0, 0, 0, 5],\n \"config-internal-compiler_8h_source.html\": [14, 0, 0, 0, 6],\n \"config-public-autotools_8h_source.html\": [14, 0, 0, 0, 7],\n \"config-public-compiler_8h_source.html\": [14, 0, 0, 0, 8],\n \"config_8h_source.html\": [14, 0, 0, 0, 9],\n@@ -154,54 +154,54 @@\n \"connection-stream__from_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 5],\n \"connection-stream__to_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 6],\n \"connection-transaction_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 7],\n \"connection_8hxx_source.html\": [14, 0, 0, 0, 10],\n \"conversions_8hxx_source.html\": [14, 0, 0, 0, 0, 4],\n \"cursor_8hxx_source.html\": [14, 0, 0, 0, 11],\n \"datatypes.html\": [2],\n- \"datatypes.html#autotoc_md1\": [2, 0],\n- \"datatypes.html#autotoc_md10\": [2, 5, 3],\n- \"datatypes.html#autotoc_md11\": [2, 6],\n- \"datatypes.html#autotoc_md12\": [2, 7],\n- \"datatypes.html#autotoc_md2\": [2, 1],\n- \"datatypes.html#autotoc_md3\": [2, 2],\n- \"datatypes.html#autotoc_md4\": [2, 3],\n- \"datatypes.html#autotoc_md5\": [2, 4],\n- \"datatypes.html#autotoc_md6\": [2, 5],\n- \"datatypes.html#autotoc_md7\": [2, 5, 0],\n- \"datatypes.html#autotoc_md8\": [2, 5, 1],\n- \"datatypes.html#autotoc_md9\": [2, 5, 2],\n+ \"datatypes.html#autotoc_md10\": [2, 5, 0],\n+ \"datatypes.html#autotoc_md11\": [2, 5, 1],\n+ \"datatypes.html#autotoc_md12\": [2, 5, 2],\n+ \"datatypes.html#autotoc_md13\": [2, 5, 3],\n+ \"datatypes.html#autotoc_md14\": [2, 6],\n+ \"datatypes.html#autotoc_md15\": [2, 7],\n+ \"datatypes.html#autotoc_md4\": [2, 0],\n+ \"datatypes.html#autotoc_md5\": [2, 1],\n+ \"datatypes.html#autotoc_md6\": [2, 2],\n+ \"datatypes.html#autotoc_md7\": [2, 3],\n+ \"datatypes.html#autotoc_md8\": [2, 4],\n+ \"datatypes.html#autotoc_md9\": [2, 5],\n \"dbtransaction_8hxx_source.html\": [14, 0, 0, 0, 12],\n \"deprecated.html\": [10],\n \"dir_3abbb4e2076021b5d2239498be5fcb30.html\": [14, 0, 0, 0, 0, 0],\n \"dir_3d7cbfaf9a6edea0a348c9e21a88d076.html\": [14, 0, 0, 0],\n \"dir_5888f4161601606935227ca5b99308b1.html\": [14, 0, 0, 0, 0],\n \"dir_68267d1309a1af8e8297ef4c3efbcdba.html\": [14, 0, 1],\n \"dir_d44c64559bbebec7f509842c48db8b23.html\": [14, 0, 0],\n \"encoding__group_8hxx_source.html\": [14, 0, 0, 0, 0, 5],\n \"encodings_8hxx_source.html\": [14, 0, 0, 0, 0, 6],\n \"errorhandler-connection_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 8],\n \"errorhandler_8hxx_source.html\": [14, 0, 0, 0, 13],\n \"escaping.html\": [3],\n- \"escaping.html#autotoc_md13\": [3, 0],\n- \"escaping.html#autotoc_md14\": [3, 1],\n+ \"escaping.html#autotoc_md16\": [3, 0],\n+ \"escaping.html#autotoc_md17\": [3, 1],\n \"except_8hxx_source.html\": [14, 0, 0, 0, 14],\n \"field_8hxx_source.html\": [14, 0, 0, 0, 15],\n \"files.html\": [14, 0],\n- \"functions.html\": [13, 3, 0],\n \"functions.html\": [13, 3, 0, 0],\n+ \"functions.html\": [13, 3, 0],\n \"functions_b.html\": [13, 3, 0, 1],\n \"functions_c.html\": [13, 3, 0, 2],\n \"functions_d.html\": [13, 3, 0, 3],\n \"functions_e.html\": [13, 3, 0, 4],\n \"functions_enum.html\": [13, 3, 4],\n \"functions_eval.html\": [13, 3, 5],\n \"functions_f.html\": [13, 3, 0, 5],\n- \"functions_func.html\": [13, 3, 1, 0],\n \"functions_func.html\": [13, 3, 1],\n+ \"functions_func.html\": [13, 3, 1, 0],\n \"functions_func_b.html\": [13, 3, 1, 1],\n \"functions_func_c.html\": [13, 3, 1, 2],\n \"functions_func_d.html\": [13, 3, 1, 3],\n \"functions_func_e.html\": [13, 3, 1, 4],\n \"functions_func_f.html\": [13, 3, 1, 5],\n \"functions_func_g.html\": [13, 3, 1, 6],\n \"functions_func_h.html\": [13, 3, 1, 7],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex5.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex5.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -43,26 +43,26 @@\n \"namespacepqxx_1_1internal_1_1pq.html#a801c6ee404adc53ef147e3f4990551d0\": [12, 0, 0, 0, 0, 0],\n \"namespacepqxx_1_1prepare.html\": [12, 0, 0, 1],\n \"namespaces.html\": [12, 0],\n \"nontransaction_8hxx_source.html\": [14, 0, 0, 0, 18],\n \"notification_8hxx_source.html\": [14, 0, 0, 0, 19],\n \"pages.html\": [],\n \"parameters.html\": [5],\n- \"parameters.html#autotoc_md15\": [5, 0],\n- \"parameters.html#autotoc_md16\": [5, 1],\n+ \"parameters.html#autotoc_md18\": [5, 0],\n+ \"parameters.html#autotoc_md19\": [5, 1],\n \"params_8hxx_source.html\": [14, 0, 0, 0, 20],\n \"performance.html\": [6],\n \"pipeline_8hxx_source.html\": [14, 0, 0, 0, 21],\n \"pqxx-source_8hxx_source.html\": [14, 0, 1, 0],\n \"prepared.html\": [7],\n- \"prepared.html#autotoc_md17\": [7, 0],\n- \"prepared.html#autotoc_md18\": [7, 1],\n- \"prepared.html#autotoc_md19\": [7, 2],\n- \"prepared.html#autotoc_md20\": [7, 3],\n- \"prepared.html#autotoc_md21\": [7, 4],\n+ \"prepared.html#autotoc_md20\": [7, 0],\n+ \"prepared.html#autotoc_md21\": [7, 1],\n+ \"prepared.html#autotoc_md22\": [7, 2],\n+ \"prepared.html#autotoc_md23\": [7, 3],\n+ \"prepared.html#autotoc_md24\": [7, 4],\n \"prepared__statement_8hxx_source.html\": [14, 0, 0, 0, 22],\n \"range_8hxx_source.html\": [14, 0, 0, 0, 23],\n \"result-connection_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 11],\n \"result-creation_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 12],\n \"result-pipeline_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 13],\n \"result-sql__cursor_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 14],\n \"result_8hxx_source.html\": [14, 0, 0, 0, 24],\n@@ -76,175 +76,175 @@\n \"strconv_8hxx_source.html\": [14, 0, 0, 0, 28],\n \"stream__from_8hxx_source.html\": [14, 0, 0, 0, 29],\n \"stream__iterator_8hxx_source.html\": [14, 0, 0, 0, 0, 16],\n \"stream__query_8hxx_source.html\": [14, 0, 0, 0, 0, 17],\n \"stream__query__impl_8hxx_source.html\": [14, 0, 0, 0, 0, 18],\n \"stream__to_8hxx_source.html\": [14, 0, 0, 0, 30],\n \"streams.html\": [8],\n- \"streams.html#autotoc_md22\": [8, 0],\n- \"streams.html#autotoc_md23\": [8, 1],\n- \"streams.html#autotoc_md24\": [8, 1, 0],\n- \"streams.html#autotoc_md25\": [8, 2],\n- \"structpqxx_1_1byte__char__traits.html\": [12, 0, 0, 12],\n+ \"streams.html#autotoc_md25\": [8, 0],\n+ \"streams.html#autotoc_md26\": [8, 1],\n+ \"streams.html#autotoc_md27\": [8, 1, 0],\n+ \"streams.html#autotoc_md28\": [8, 2],\n \"structpqxx_1_1byte__char__traits.html\": [13, 0, 0, 11],\n- \"structpqxx_1_1forbidden__conversion.html\": [12, 0, 0, 33],\n+ \"structpqxx_1_1byte__char__traits.html\": [12, 0, 0, 12],\n \"structpqxx_1_1forbidden__conversion.html\": [13, 0, 0, 32],\n- \"structpqxx_1_1has__generic__char__traits.html\": [12, 0, 0, 37],\n+ \"structpqxx_1_1forbidden__conversion.html\": [12, 0, 0, 33],\n \"structpqxx_1_1has__generic__char__traits.html\": [13, 0, 0, 36],\n+ \"structpqxx_1_1has__generic__char__traits.html\": [12, 0, 0, 37],\n \"structpqxx_1_1has__generic__char__traits_3_01TYPE_00_01std_1_1void__t_3_01decltype_07std_1_1char840b6ba899218b94596b7f0eb77dede3.html\": [12, 0, 0, 38],\n \"structpqxx_1_1has__generic__char__traits_3_01TYPE_00_01std_1_1void__t_3_01decltype_07std_1_1char840b6ba899218b94596b7f0eb77dede3.html\": [13, 0, 0, 37],\n- \"structpqxx_1_1internal_1_1array__string__traits.html\": [12, 0, 0, 0, 1],\n \"structpqxx_1_1internal_1_1array__string__traits.html\": [13, 0, 0, 0, 1],\n- \"structpqxx_1_1internal_1_1c__params.html\": [12, 0, 0, 0, 4],\n+ \"structpqxx_1_1internal_1_1array__string__traits.html\": [12, 0, 0, 0, 1],\n \"structpqxx_1_1internal_1_1c__params.html\": [13, 0, 0, 0, 4],\n- \"structpqxx_1_1internal_1_1c__params.html#a6f64b8c77bfbf311687be6e1313f27d8\": [12, 0, 0, 0, 4, 0],\n+ \"structpqxx_1_1internal_1_1c__params.html\": [12, 0, 0, 0, 4],\n \"structpqxx_1_1internal_1_1c__params.html#a6f64b8c77bfbf311687be6e1313f27d8\": [13, 0, 0, 0, 4, 0],\n+ \"structpqxx_1_1internal_1_1c__params.html#a6f64b8c77bfbf311687be6e1313f27d8\": [12, 0, 0, 0, 4, 0],\n \"structpqxx_1_1internal_1_1c__params.html#a7f7597e054124f94dc53c91d1048f0ee\": [12, 0, 0, 0, 4, 3],\n \"structpqxx_1_1internal_1_1c__params.html#a7f7597e054124f94dc53c91d1048f0ee\": [13, 0, 0, 0, 4, 3],\n- \"structpqxx_1_1internal_1_1c__params.html#a9a6d51da90f51c90d3044ad9261616b8\": [13, 0, 0, 0, 4, 2],\n \"structpqxx_1_1internal_1_1c__params.html#a9a6d51da90f51c90d3044ad9261616b8\": [12, 0, 0, 0, 4, 2],\n+ \"structpqxx_1_1internal_1_1c__params.html#a9a6d51da90f51c90d3044ad9261616b8\": [13, 0, 0, 0, 4, 2],\n \"structpqxx_1_1internal_1_1c__params.html#aa0700df147dee1b1a38c37c43f268ba3\": [13, 0, 0, 0, 4, 1],\n \"structpqxx_1_1internal_1_1c__params.html#aa0700df147dee1b1a38c37c43f268ba3\": [12, 0, 0, 0, 4, 1],\n \"structpqxx_1_1internal_1_1c__params.html#aad4eb2f440fe907fcf11467effbbff15\": [13, 0, 0, 0, 4, 4],\n \"structpqxx_1_1internal_1_1c__params.html#aad4eb2f440fe907fcf11467effbbff15\": [12, 0, 0, 0, 4, 4],\n- \"structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion.html\": [13, 0, 0, 0, 6],\n \"structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion.html\": [12, 0, 0, 0, 6],\n+ \"structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion.html\": [13, 0, 0, 0, 6],\n \"structpqxx_1_1internal_1_1enum__traits.html\": [12, 0, 0, 0, 8],\n \"structpqxx_1_1internal_1_1enum__traits.html\": [13, 0, 0, 0, 8],\n- \"structpqxx_1_1internal_1_1float__traits.html\": [12, 0, 0, 0, 9],\n \"structpqxx_1_1internal_1_1float__traits.html\": [13, 0, 0, 0, 9],\n+ \"structpqxx_1_1internal_1_1float__traits.html\": [12, 0, 0, 0, 9],\n \"structpqxx_1_1internal_1_1gate_1_1connection__stream__from.html\": [13, 0, 0, 0, 0, 5],\n \"structpqxx_1_1internal_1_1glyph__scanner.html\": [12, 0, 0, 0, 10],\n \"structpqxx_1_1internal_1_1glyph__scanner.html\": [13, 0, 0, 0, 10],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1BIG5_01_4.html\": [12, 0, 0, 0, 11],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1BIG5_01_4.html\": [13, 0, 0, 0, 11],\n- \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4.html\": [12, 0, 0, 0, 12],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4.html\": [13, 0, 0, 0, 12],\n- \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4.html\": [12, 0, 0, 0, 13],\n+ \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4.html\": [12, 0, 0, 0, 12],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4.html\": [13, 0, 0, 0, 13],\n+ \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4.html\": [12, 0, 0, 0, 13],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__KR_01_4.html\": [13, 0, 0, 0, 14],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__KR_01_4.html\": [12, 0, 0, 0, 14],\n- \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4.html\": [12, 0, 0, 0, 15],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4.html\": [13, 0, 0, 0, 15],\n+ \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4.html\": [12, 0, 0, 0, 15],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GB18030_01_4.html\": [13, 0, 0, 0, 16],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GB18030_01_4.html\": [12, 0, 0, 0, 16],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GBK_01_4.html\": [13, 0, 0, 0, 17],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GBK_01_4.html\": [12, 0, 0, 0, 17],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1JOHAB_01_4.html\": [13, 0, 0, 0, 18],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1JOHAB_01_4.html\": [12, 0, 0, 0, 18],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MONOBYTE_01_4.html\": [13, 0, 0, 0, 19],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MONOBYTE_01_4.html\": [12, 0, 0, 0, 19],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MULE__INTERNAL_01_4.html\": [13, 0, 0, 0, 20],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MULE__INTERNAL_01_4.html\": [12, 0, 0, 0, 20],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1SJIS_01_4.html\": [13, 0, 0, 0, 21],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1SJIS_01_4.html\": [12, 0, 0, 0, 21],\n- \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4.html\": [12, 0, 0, 0, 22],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4.html\": [13, 0, 0, 0, 22],\n- \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4.html\": [13, 0, 0, 0, 23],\n+ \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4.html\": [12, 0, 0, 0, 22],\n \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4.html\": [12, 0, 0, 0, 23],\n- \"structpqxx_1_1internal_1_1integral__traits.html\": [13, 0, 0, 0, 24],\n+ \"structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4.html\": [13, 0, 0, 0, 23],\n \"structpqxx_1_1internal_1_1integral__traits.html\": [12, 0, 0, 0, 24],\n+ \"structpqxx_1_1internal_1_1integral__traits.html\": [13, 0, 0, 0, 24],\n \"structpqxx_1_1internal_1_1notice__waiters.html\": [12, 0, 0, 0, 25],\n \"structpqxx_1_1internal_1_1notice__waiters.html\": [13, 0, 0, 0, 25],\n \"structpqxx_1_1no__bound.html\": [12, 0, 0, 51],\n \"structpqxx_1_1no__bound.html\": [13, 0, 0, 50],\n- \"structpqxx_1_1no__null.html\": [13, 0, 0, 51],\n \"structpqxx_1_1no__null.html\": [12, 0, 0, 52],\n- \"structpqxx_1_1nullness.html\": [13, 0, 0, 56],\n+ \"structpqxx_1_1no__null.html\": [13, 0, 0, 51],\n \"structpqxx_1_1nullness.html\": [12, 0, 0, 57],\n- \"structpqxx_1_1nullness_3_01ENUM_00_01std_1_1enable__if__t_3_01std_1_1is__enum__v_3_01ENUM_01_4_01_4_01_4.html\": [12, 0, 0, 64],\n+ \"structpqxx_1_1nullness.html\": [13, 0, 0, 56],\n \"structpqxx_1_1nullness_3_01ENUM_00_01std_1_1enable__if__t_3_01std_1_1is__enum__v_3_01ENUM_01_4_01_4_01_4.html\": [13, 0, 0, 63],\n- \"structpqxx_1_1nullness_3_01T_00_01std_1_1enable__if__t_3_01std_1_1is__arithmetic__v_3_01T_01_4_01_4_01_4.html\": [13, 0, 0, 77],\n+ \"structpqxx_1_1nullness_3_01ENUM_00_01std_1_1enable__if__t_3_01std_1_1is__enum__v_3_01ENUM_01_4_01_4_01_4.html\": [12, 0, 0, 64],\n \"structpqxx_1_1nullness_3_01T_00_01std_1_1enable__if__t_3_01std_1_1is__arithmetic__v_3_01T_01_4_01_4_01_4.html\": [12, 0, 0, 78],\n- \"structpqxx_1_1nullness_3_01binarystring_01_4.html\": [13, 0, 0, 57],\n+ \"structpqxx_1_1nullness_3_01T_00_01std_1_1enable__if__t_3_01std_1_1is__arithmetic__v_3_01T_01_4_01_4_01_4.html\": [13, 0, 0, 77],\n \"structpqxx_1_1nullness_3_01binarystring_01_4.html\": [12, 0, 0, 58],\n- \"structpqxx_1_1nullness_3_01bytes_01_4.html\": [13, 0, 0, 58],\n+ \"structpqxx_1_1nullness_3_01binarystring_01_4.html\": [13, 0, 0, 57],\n \"structpqxx_1_1nullness_3_01bytes_01_4.html\": [12, 0, 0, 59],\n- \"structpqxx_1_1nullness_3_01bytes__view_01_4.html\": [13, 0, 0, 59],\n+ \"structpqxx_1_1nullness_3_01bytes_01_4.html\": [13, 0, 0, 58],\n \"structpqxx_1_1nullness_3_01bytes__view_01_4.html\": [12, 0, 0, 60],\n- \"structpqxx_1_1nullness_3_01char_01_5_01_4.html\": [13, 0, 0, 60],\n+ \"structpqxx_1_1nullness_3_01bytes__view_01_4.html\": [13, 0, 0, 59],\n \"structpqxx_1_1nullness_3_01char_01_5_01_4.html\": [12, 0, 0, 61],\n- \"structpqxx_1_1nullness_3_01char_01const_01_5_01_4.html\": [13, 0, 0, 61],\n+ \"structpqxx_1_1nullness_3_01char_01_5_01_4.html\": [13, 0, 0, 60],\n \"structpqxx_1_1nullness_3_01char_01const_01_5_01_4.html\": [12, 0, 0, 62],\n- \"structpqxx_1_1nullness_3_01char_0fN_0e_4.html\": [13, 0, 0, 62],\n+ \"structpqxx_1_1nullness_3_01char_01const_01_5_01_4.html\": [13, 0, 0, 61],\n \"structpqxx_1_1nullness_3_01char_0fN_0e_4.html\": [12, 0, 0, 63],\n+ \"structpqxx_1_1nullness_3_01char_0fN_0e_4.html\": [13, 0, 0, 62],\n \"structpqxx_1_1nullness_3_01range_3_01TYPE_01_4_01_4.html\": [12, 0, 0, 65],\n \"structpqxx_1_1nullness_3_01range_3_01TYPE_01_4_01_4.html\": [13, 0, 0, 64],\n- \"structpqxx_1_1nullness_3_01std_1_1array_3_01T_00_01N_01_4_01_4.html\": [12, 0, 0, 66],\n \"structpqxx_1_1nullness_3_01std_1_1array_3_01T_00_01N_01_4_01_4.html\": [13, 0, 0, 65],\n+ \"structpqxx_1_1nullness_3_01std_1_1array_3_01T_00_01N_01_4_01_4.html\": [12, 0, 0, 66],\n \"structpqxx_1_1nullness_3_01std_1_1monostate_01_4.html\": [13, 0, 0, 66],\n \"structpqxx_1_1nullness_3_01std_1_1monostate_01_4.html\": [12, 0, 0, 67],\n- \"structpqxx_1_1nullness_3_01std_1_1nullopt__t_01_4.html\": [13, 0, 0, 67],\n \"structpqxx_1_1nullness_3_01std_1_1nullopt__t_01_4.html\": [12, 0, 0, 68],\n- \"structpqxx_1_1nullness_3_01std_1_1nullptr__t_01_4.html\": [13, 0, 0, 68],\n+ \"structpqxx_1_1nullness_3_01std_1_1nullopt__t_01_4.html\": [13, 0, 0, 67],\n \"structpqxx_1_1nullness_3_01std_1_1nullptr__t_01_4.html\": [12, 0, 0, 69],\n+ \"structpqxx_1_1nullness_3_01std_1_1nullptr__t_01_4.html\": [13, 0, 0, 68],\n \"structpqxx_1_1nullness_3_01std_1_1optional_3_01T_01_4_01_4.html\": [13, 0, 0, 69],\n \"structpqxx_1_1nullness_3_01std_1_1optional_3_01T_01_4_01_4.html\": [12, 0, 0, 70],\n \"structpqxx_1_1nullness_3_01std_1_1shared__ptr_3_01T_01_4_01_4.html\": [13, 0, 0, 70],\n \"structpqxx_1_1nullness_3_01std_1_1shared__ptr_3_01T_01_4_01_4.html\": [12, 0, 0, 71],\n \"structpqxx_1_1nullness_3_01std_1_1string_01_4.html\": [12, 0, 0, 72],\n \"structpqxx_1_1nullness_3_01std_1_1string_01_4.html\": [13, 0, 0, 71],\n- \"structpqxx_1_1nullness_3_01std_1_1string__view_01_4.html\": [13, 0, 0, 72],\n \"structpqxx_1_1nullness_3_01std_1_1string__view_01_4.html\": [12, 0, 0, 73],\n- \"structpqxx_1_1nullness_3_01std_1_1stringstream_01_4.html\": [12, 0, 0, 74],\n+ \"structpqxx_1_1nullness_3_01std_1_1string__view_01_4.html\": [13, 0, 0, 72],\n \"structpqxx_1_1nullness_3_01std_1_1stringstream_01_4.html\": [13, 0, 0, 73],\n- \"structpqxx_1_1nullness_3_01std_1_1unique__ptr_3_01T_01_4_01_4.html\": [12, 0, 0, 75],\n+ \"structpqxx_1_1nullness_3_01std_1_1stringstream_01_4.html\": [12, 0, 0, 74],\n \"structpqxx_1_1nullness_3_01std_1_1unique__ptr_3_01T_01_4_01_4.html\": [13, 0, 0, 74],\n- \"structpqxx_1_1nullness_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html\": [12, 0, 0, 76],\n+ \"structpqxx_1_1nullness_3_01std_1_1unique__ptr_3_01T_01_4_01_4.html\": [12, 0, 0, 75],\n \"structpqxx_1_1nullness_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html\": [13, 0, 0, 75],\n- \"structpqxx_1_1nullness_3_01std_1_1vector_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [12, 0, 0, 77],\n+ \"structpqxx_1_1nullness_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html\": [12, 0, 0, 76],\n \"structpqxx_1_1nullness_3_01std_1_1vector_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [13, 0, 0, 76],\n+ \"structpqxx_1_1nullness_3_01std_1_1vector_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [12, 0, 0, 77],\n \"structpqxx_1_1nullness_3_01zview_01_4.html\": [12, 0, 0, 79],\n \"structpqxx_1_1nullness_3_01zview_01_4.html\": [13, 0, 0, 78],\n- \"structpqxx_1_1string__traits.html\": [12, 0, 0, 104],\n \"structpqxx_1_1string__traits.html\": [13, 0, 0, 103],\n+ \"structpqxx_1_1string__traits.html\": [12, 0, 0, 104],\n \"structpqxx_1_1string__traits_3_01binarystring_01_4.html\": [13, 0, 0, 104],\n \"structpqxx_1_1string__traits_3_01binarystring_01_4.html\": [12, 0, 0, 105],\n \"structpqxx_1_1string__traits_3_01bool_01_4.html\": [13, 0, 0, 105],\n \"structpqxx_1_1string__traits_3_01bool_01_4.html\": [12, 0, 0, 106],\n \"structpqxx_1_1string__traits_3_01bytes_01_4.html\": [13, 0, 0, 106],\n \"structpqxx_1_1string__traits_3_01bytes_01_4.html\": [12, 0, 0, 107],\n \"structpqxx_1_1string__traits_3_01bytes__view_01_4.html\": [13, 0, 0, 107],\n \"structpqxx_1_1string__traits_3_01bytes__view_01_4.html\": [12, 0, 0, 108],\n- \"structpqxx_1_1string__traits_3_01char_01_4.html\": [13, 0, 0, 109],\n \"structpqxx_1_1string__traits_3_01char_01_4.html\": [12, 0, 0, 110],\n+ \"structpqxx_1_1string__traits_3_01char_01_4.html\": [13, 0, 0, 109],\n \"structpqxx_1_1string__traits_3_01char_01_5_01_4.html\": [13, 0, 0, 108],\n \"structpqxx_1_1string__traits_3_01char_01_5_01_4.html\": [12, 0, 0, 109],\n \"structpqxx_1_1string__traits_3_01char_01const_01_5_01_4.html\": [13, 0, 0, 110],\n \"structpqxx_1_1string__traits_3_01char_01const_01_5_01_4.html\": [12, 0, 0, 111],\n \"structpqxx_1_1string__traits_3_01char_0fN_0e_4.html\": [13, 0, 0, 111],\n \"structpqxx_1_1string__traits_3_01char_0fN_0e_4.html\": [12, 0, 0, 112],\n- \"structpqxx_1_1string__traits_3_01double_01_4.html\": [13, 0, 0, 112],\n \"structpqxx_1_1string__traits_3_01double_01_4.html\": [12, 0, 0, 113],\n+ \"structpqxx_1_1string__traits_3_01double_01_4.html\": [13, 0, 0, 112],\n \"structpqxx_1_1string__traits_3_01float_01_4.html\": [13, 0, 0, 113],\n \"structpqxx_1_1string__traits_3_01float_01_4.html\": [12, 0, 0, 114],\n \"structpqxx_1_1string__traits_3_01int_01_4.html\": [13, 0, 0, 114],\n \"structpqxx_1_1string__traits_3_01int_01_4.html\": [12, 0, 0, 115],\n- \"structpqxx_1_1string__traits_3_01long_01_4.html\": [13, 0, 0, 115],\n \"structpqxx_1_1string__traits_3_01long_01_4.html\": [12, 0, 0, 116],\n- \"structpqxx_1_1string__traits_3_01long_01double_01_4.html\": [13, 0, 0, 116],\n+ \"structpqxx_1_1string__traits_3_01long_01_4.html\": [13, 0, 0, 115],\n \"structpqxx_1_1string__traits_3_01long_01double_01_4.html\": [12, 0, 0, 117],\n- \"structpqxx_1_1string__traits_3_01long_01long_01_4.html\": [13, 0, 0, 117],\n+ \"structpqxx_1_1string__traits_3_01long_01double_01_4.html\": [13, 0, 0, 116],\n \"structpqxx_1_1string__traits_3_01long_01long_01_4.html\": [12, 0, 0, 118],\n- \"structpqxx_1_1string__traits_3_01pqxx_1_1internal_1_1encoding__group_01_4.html\": [13, 0, 0, 118],\n+ \"structpqxx_1_1string__traits_3_01long_01long_01_4.html\": [13, 0, 0, 117],\n \"structpqxx_1_1string__traits_3_01pqxx_1_1internal_1_1encoding__group_01_4.html\": [12, 0, 0, 119],\n- \"structpqxx_1_1string__traits_3_01range_3_01TYPE_01_4_01_4.html\": [13, 0, 0, 119],\n+ \"structpqxx_1_1string__traits_3_01pqxx_1_1internal_1_1encoding__group_01_4.html\": [13, 0, 0, 118],\n \"structpqxx_1_1string__traits_3_01range_3_01TYPE_01_4_01_4.html\": [12, 0, 0, 120],\n- \"structpqxx_1_1string__traits_3_01short_01_4.html\": [12, 0, 0, 121],\n+ \"structpqxx_1_1string__traits_3_01range_3_01TYPE_01_4_01_4.html\": [13, 0, 0, 119],\n \"structpqxx_1_1string__traits_3_01short_01_4.html\": [13, 0, 0, 120],\n+ \"structpqxx_1_1string__traits_3_01short_01_4.html\": [12, 0, 0, 121],\n \"structpqxx_1_1string__traits_3_01signed_01char_01_4.html\": [13, 0, 0, 121],\n \"structpqxx_1_1string__traits_3_01signed_01char_01_4.html\": [12, 0, 0, 122],\n- \"structpqxx_1_1string__traits_3_01std_1_1array_3_01T_00_01N_01_4_01_4.html\": [13, 0, 0, 122],\n \"structpqxx_1_1string__traits_3_01std_1_1array_3_01T_00_01N_01_4_01_4.html\": [12, 0, 0, 123],\n+ \"structpqxx_1_1string__traits_3_01std_1_1array_3_01T_00_01N_01_4_01_4.html\": [13, 0, 0, 122],\n \"structpqxx_1_1string__traits_3_01std_1_1byte_01_4.html\": [13, 0, 0, 123],\n \"structpqxx_1_1string__traits_3_01std_1_1byte_01_4.html\": [12, 0, 0, 124],\n- \"structpqxx_1_1string__traits_3_01std_1_1monostate_01_4.html\": [12, 0, 0, 125],\n \"structpqxx_1_1string__traits_3_01std_1_1monostate_01_4.html\": [13, 0, 0, 124],\n- \"structpqxx_1_1string__traits_3_01std_1_1nullopt__t_01_4.html\": [12, 0, 0, 126],\n+ \"structpqxx_1_1string__traits_3_01std_1_1monostate_01_4.html\": [12, 0, 0, 125],\n \"structpqxx_1_1string__traits_3_01std_1_1nullopt__t_01_4.html\": [13, 0, 0, 125],\n+ \"structpqxx_1_1string__traits_3_01std_1_1nullopt__t_01_4.html\": [12, 0, 0, 126],\n \"structpqxx_1_1string__traits_3_01std_1_1nullptr__t_01_4.html\": [13, 0, 0, 126],\n \"structpqxx_1_1string__traits_3_01std_1_1nullptr__t_01_4.html\": [12, 0, 0, 127],\n \"structpqxx_1_1string__traits_3_01std_1_1optional_3_01T_01_4_01_4.html\": [13, 0, 0, 127],\n \"structpqxx_1_1string__traits_3_01std_1_1optional_3_01T_01_4_01_4.html\": [12, 0, 0, 128],\n \"structpqxx_1_1string__traits_3_01std_1_1shared__ptr_3_01T_01_4_01_4.html\": [13, 0, 0, 128],\n \"structpqxx_1_1string__traits_3_01std_1_1shared__ptr_3_01T_01_4_01_4.html\": [12, 0, 0, 129],\n \"structpqxx_1_1string__traits_3_01std_1_1string_01_4.html\": [13, 0, 0, 129],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex6.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/navtreeindex6.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,28 +1,28 @@\n var NAVTREEINDEX6 = {\n- \"structpqxx_1_1string__traits_3_01std_1_1string__view_01_4.html\": [13, 0, 0, 130],\n \"structpqxx_1_1string__traits_3_01std_1_1string__view_01_4.html\": [12, 0, 0, 131],\n- \"structpqxx_1_1string__traits_3_01std_1_1stringstream_01_4.html\": [13, 0, 0, 131],\n+ \"structpqxx_1_1string__traits_3_01std_1_1string__view_01_4.html\": [13, 0, 0, 130],\n \"structpqxx_1_1string__traits_3_01std_1_1stringstream_01_4.html\": [12, 0, 0, 132],\n- \"structpqxx_1_1string__traits_3_01std_1_1unique__ptr_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [12, 0, 0, 133],\n+ \"structpqxx_1_1string__traits_3_01std_1_1stringstream_01_4.html\": [13, 0, 0, 131],\n \"structpqxx_1_1string__traits_3_01std_1_1unique__ptr_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [13, 0, 0, 132],\n- \"structpqxx_1_1string__traits_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html\": [12, 0, 0, 134],\n+ \"structpqxx_1_1string__traits_3_01std_1_1unique__ptr_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [12, 0, 0, 133],\n \"structpqxx_1_1string__traits_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html\": [13, 0, 0, 133],\n+ \"structpqxx_1_1string__traits_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html\": [12, 0, 0, 134],\n \"structpqxx_1_1string__traits_3_01std_1_1vector_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [12, 0, 0, 135],\n \"structpqxx_1_1string__traits_3_01std_1_1vector_3_01T_00_01Args_8_8_8_01_4_01_4.html\": [13, 0, 0, 134],\n \"structpqxx_1_1string__traits_3_01unsigned_01_4.html\": [12, 0, 0, 136],\n \"structpqxx_1_1string__traits_3_01unsigned_01_4.html\": [13, 0, 0, 135],\n- \"structpqxx_1_1string__traits_3_01unsigned_01char_01_4.html\": [13, 0, 0, 136],\n \"structpqxx_1_1string__traits_3_01unsigned_01char_01_4.html\": [12, 0, 0, 137],\n- \"structpqxx_1_1string__traits_3_01unsigned_01long_01_4.html\": [13, 0, 0, 137],\n+ \"structpqxx_1_1string__traits_3_01unsigned_01char_01_4.html\": [13, 0, 0, 136],\n \"structpqxx_1_1string__traits_3_01unsigned_01long_01_4.html\": [12, 0, 0, 138],\n- \"structpqxx_1_1string__traits_3_01unsigned_01long_01long_01_4.html\": [13, 0, 0, 138],\n+ \"structpqxx_1_1string__traits_3_01unsigned_01long_01_4.html\": [13, 0, 0, 137],\n \"structpqxx_1_1string__traits_3_01unsigned_01long_01long_01_4.html\": [12, 0, 0, 139],\n- \"structpqxx_1_1string__traits_3_01unsigned_01short_01_4.html\": [13, 0, 0, 139],\n+ \"structpqxx_1_1string__traits_3_01unsigned_01long_01long_01_4.html\": [13, 0, 0, 138],\n \"structpqxx_1_1string__traits_3_01unsigned_01short_01_4.html\": [12, 0, 0, 140],\n+ \"structpqxx_1_1string__traits_3_01unsigned_01short_01_4.html\": [13, 0, 0, 139],\n \"structpqxx_1_1string__traits_3_01zview_01_4.html\": [12, 0, 0, 141],\n \"structpqxx_1_1string__traits_3_01zview_01_4.html\": [13, 0, 0, 140],\n \"subtransaction_8hxx_source.html\": [14, 0, 0, 0, 31],\n \"thread-safety.html\": [9],\n \"time_8hxx_source.html\": [14, 0, 0, 0, 32],\n \"topics.html\": [11],\n \"transaction-sql__cursor_8hxx_source.html\": [14, 0, 0, 0, 0, 0, 15],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/parameters.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/parameters.html", "unified_diff": "@@ -101,15 +101,15 @@\n

Inserting the 101 in there is awkward and even dangerous. We'll get to that in a moment. Here's how you do it better, using parameters:

\n
pqxx::result r = tx.exec("SELECT name FROM employee WHERE id=$1", {101});
\n

That second argument to exec(), the {101}, constructs a pqxx::params object. The exec() call will fill this value in where the query says $1.

\n

Doing this saves you work. If you don't use statement parameters, you'll need to quote and escape your values (see connection::quote() and friends) as you insert them into your query as literal values.

\n

Or if you forget to do that, you leave yourself open to horrible SQL injection attacks. Trust me, I was born in a town whose name started with an apostrophe!

\n

With parameters you can pass your values as they are, and they will go across the wire to the database in a safe format.

\n

In some cases it may even be faster! When a parameter represents binary data (as in the SQL BYTEA type), libpqxx will send it directly as binary, which is a bit more efficient than the standard textual format in which the data normally gets sent to the database. If you insert the binary data directly in your query text, your CPU will have some extra work to do, converting the data into a text format, escaping it, and adding quotes; and the data will take up more bytes, which take time to transmit.

\n-

\n+

\n Multiple parameters

\n

The pqxx::params class is quite fleixble. It can contain any number of parameter values, of many different types.

\n

You can pass them in while constructing the params object:

\n
pqxx::params{23, "acceptance", 3.14159}
\n
Build a parameter list for a parameterised or prepared statement.
Definition params.hxx:33
\n

Or you can add them one by one:

\n
\n@@ -117,15 +117,15 @@\n
p.append("acceptance");
\n
p.append(3.14159);
\n
void append() &
Append a null value.
Definition params.cxx:32
\n

You can also combine the two, passing some values int the constructor and adding the rest later. You can even insert a params into a params:

\n
\n
p.append(params{"acceptance", 3.14159});
\n

Each of these examples will produce the same list of parameters.

\n-

\n+

\n Generating placeholders

\n

If your code gets particularly complex, it may sometimes happen that it becomes hard to track which parameter value belongs with which placeholder. Did you intend to pass this numeric value as $7, or as $8? The answer may depend on an if that happened earlier in a different function.

\n

(Generally if things get that complex, it's a good idea to look for simpler solutions. But especially when performance matters, sometimes you can't avoid complexity like that.)

\n

There's a little helper class called placeholders. You can use it as a counter which produces those placeholder strings, $1, $2, $3, et cetera. When you start generating a complex statement, you can create both a params and a placeholders:

\n
pqxx::params values;
\n \n
Generate parameter placeholders for use in an SQL statement.
Definition params.hxx:206
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/prepared.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/prepared.html", "unified_diff": "@@ -91,15 +91,15 @@\n \n
\n
Prepared statements
\n
\n
\n

Prepared statements are SQL queries that you define once and then invoke as many times as you like, typically with varying parameters. It's a lot like a function that you can define ad hoc, within the scope of one connection.

\n

If you have an SQL statement that you're going to execute many times in quick succession, it may (but see below!) be more efficient to prepare it once and reuse it. This saves the database backend the effort of parsing the SQL and figuring out an efficient execution plan.

\n-

\n+

\n Preparing a statement

\n

You create a prepared statement by preparing it on the connection (using the pqxx::connection::prepare functions), passing an identifying name for the statement, and its SQL text.

\n

The statement's name should consist of ASCII letters, digits, and underscores only, and start with an ASCII letter. The name is case-sensitive.

\n
void prepare_my_statement(pqxx::connection &cx)
\n
{
\n
cx.prepare(
\n
"my_statement",
\n@@ -112,15 +112,15 @@\n
{
\n
return t.exec(pqxx::prepped{"my_statement"});
\n
}
\n
A string that is the name of a prepared statement.
Definition prepared_statement.hxx:70
\n
Result set containing data returned by a query or command.
Definition result.hxx:92
\n
result exec(std::string_view query, std::string_view desc)
Execute a command.
Definition transaction_base.cxx:249
\n
Interface definition (and common code) for "transaction" classes.
Definition transaction_base.hxx:151
\n-

\n+

\n Parameters

\n

You can pass parameters to a prepared statemet, just like you can with a regular statement. The query text can contain $1, $2 etc. as placeholders for parameter values that you will provide when you invoke the prepared satement.

\n

See Statement parameters for more about this. And here's a simple example of preparing a statement and invoking it with parameters:

\n
void prepare_find(pqxx::connection &cx)
\n
{
\n
// Prepare a statement called "find" that looks for employees with a
\n
// given name (parameter 1) whose salary exceeds a given number
\n@@ -131,24 +131,24 @@\n
}
\n

This example looks up the prepared statement \"find,\" passes name and min_salary as parameters, and invokes the statement with those values:

\n
pqxx::result execute_find(
\n
pqxx::transaction_base &tx, std::string name, int min_salary)
\n
{
\n
return tx.exec(pqxx::prepped{"find"}, name, min_salary);
\n
}
\n-

\n+

\n A special prepared statement

\n

There is one special case: the nameless prepared statement. You may prepare a statement without a name, i.e. whose name is an empty string. The unnamed statement can be redefined at any time, without un-preparing it first.

\n-

\n+

\n Performance note

\n

Don't assume that using prepared statements will speed up your application. There are cases where prepared statements are actually slower than plain SQL.

\n

The reason is that the backend can often produce a better execution plan when it knows the statement's actual parameter values.

\n

For example, say you've got a web application and you're querying for users with status \"inactive\" who have email addresses in a given domain name X. If X is a very popular provider, the best way for the database engine to plan the query may be to list the inactive users first and then filter for the email addresses you're looking for. But in other cases, it may be much faster to find matching email addresses first and then see which of their owners are \"inactive.\" A prepared statement must be planned to fit either case, but a direct query will be optimised based on table statistics, partial indexes, etc.

\n

So, as with any optimisation... measure where your real performance problems are before you start making changes, and then afterwards, measure whether your changes actually helped. Don't complicate your code unless it solves a real problem. Knuth's Law applies.

\n-

\n+

\n Zero bytes

\n
Warning
Beware of zero (\"nul\") bytes!
\n

Since libpqxx is a wrapper around libpq, the C-level client library, most strings you pass to the library should be compatible with C-style strings. So they must end with a single byte with value 0, and the text within them cannot contain any such zero bytes.

\n

(The pqxx::zview type exists specifically to tell libpqxx: \"this is a\n C-compatible string, containing no zero bytes but ending in a zero byte.\")

\n

One example is prepared statement names. But the same also goes for the parameters values. Any string you pass as a parameter will end at the first char with value zero. If you pass a string that contains a zero byte, the last byte in the value will be the one just before the zero.

\n

So, if you need a zero byte in a string, consider that it's really a binary string, which is not the same thing as a text string. SQL represents binary data as the BYTEA type, or in binary large objects (\"blobs\").

\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/range_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/range_8hxx_source.html", "unified_diff": "@@ -554,15 +554,15 @@\n
477 static constexpr std::size_t last{1};
\n
478 // Current parsing position. We skip the opening parenthesis or bracket.
\n
479 std::size_t pos{1};
\n
480 // The string may leave out either bound to indicate that it's unlimited.
\n
481 std::optional<TYPE> lower, upper;
\n
482 // We reuse the same field parser we use for composite values and arrays.
\n
483 auto const field_parser{
\n-
484 pqxx::internal::specialize_parse_composite_field<std::optional<TYPE>>(
\n+\n
485 pqxx::internal::encoding_group::UTF8)};
\n
486 field_parser(index, text, pos, lower, last);
\n
487 field_parser(index, text, pos, upper, last);
\n
488
\n
489 // We need one more character: the closing parenthesis or bracket.
\n
490 if (pos != std::size(text))
\n
491 throw pqxx::conversion_error{err_bad_input(text)};
\n@@ -645,14 +645,15 @@\n
constexpr range() noexcept(noexcept(exclusive_bound< TYPE >{TYPE{}}))
Create an empty range.
Definition range.hxx:266
\n
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38
\n
Invalid argument passed to libpqxx, similar to std::invalid_argument.
Definition except.hxx:266
\n
Value conversion failed, e.g. when converting "Hello" to int.
Definition except.hxx:283
\n
Could not convert value to string: not enough buffer space.
Definition except.hxx:313
\n
Something is out of range, similar to std::out_of_range.
Definition except.hxx:326
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
T from_string(field const &value)
Convert a field's value to type T.
Definition field.hxx:548
\n
An unlimited boundary value to a pqxx::range.
Definition range.hxx:24
\n
Nullness traits describing a type which does not have a null value.
Definition strconv.hxx:113
\n
Traits describing a type's "null value," if any.
Definition strconv.hxx:91
\n
Traits class for use in string conversions.
Definition strconv.hxx:154
\n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -418,15 +418,15 @@\n 477 static constexpr std::size_t last{1};\n 478 // Current parsing position. We skip the opening parenthesis or bracket.\n 479 std::size_t pos{1};\n 480 // The string may leave out either bound to indicate that it's unlimited.\n 481 std::optional lower, upper;\n 482 // We reuse the same field parser we use for composite values and arrays.\n 483 auto const field_parser{\n-484 pqxx::internal::specialize_parse_composite_field>(\n+484 _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\bs_\bt_\bd_\b:_\b:_\bo_\bp_\bt_\bi_\bo_\bn_\ba_\bl_\b<_\bT_\bY_\bP_\bE_\b>>(\n 485 pqxx::internal::encoding_group::UTF8)};\n 486 field_parser(index, text, pos, lower, last);\n 487 field_parser(index, text, pos, upper, last);\n 488\n 489 // We need one more character: the closing parenthesis or bracket.\n 490 if (pos != std::size(text))\n 491 throw _\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br{err_bad_input(text)};\n@@ -584,14 +584,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\br_\ba_\bn_\bg_\be_\b__\be_\br_\br_\bo_\br\n Something is out of range, similar to std::out_of_range.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn except.hxx:326\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt\n std::string concat(TYPE... item)\n Efficiently combine a bunch of items into one big string.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn concat.hxx:31\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n _\bp_\bq_\bx_\bx_\b:_\b:_\bf_\br_\bo_\bm_\b__\bs_\bt_\br_\bi_\bn_\bg\n T from_string(field const &value)\n Convert a field's value to type T.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hxx:548\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/result_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/result_8hxx_source.html", "unified_diff": "@@ -149,15 +149,15 @@\n
49
\n
50namespace pqxx::internal
\n
51{
\n
52// 9.0: Remove this, just use the notice handler in connection/result.
\n
\n \n
55{
\n-
56 std::function<void(zview)> notice_handler;
\n+
56 std::function<void(zview)> notice_handler;
\n
57 std::list<errorhandler *> errorhandlers;
\n
58
\n
59 notice_waiters() = default;
\n
60 notice_waiters(notice_waiters const &) = delete;
\n
61 notice_waiters(notice_waiters &&) = delete;
\n
62 notice_waiters &operator=(notice_waiters const &) = delete;
\n
63 notice_waiters &operator=(notice_waiters &&) = delete;
\n@@ -423,14 +423,15 @@\n
result no_rows() const
Expect that result contains no rows. Return result for convenience.
Definition result.hxx:353
\n
Reference to one row in a result.
Definition row.hxx:47
\n
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38
\n
Query returned an unexpected number of rows.
Definition except.hxx:343
\n
Error in usage of libpqxx library, similar to std::logic_error.
Definition except.hxx:249
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
PQXX_LIBEXPORT void clear_result(pq::PGresult const *) noexcept
C++ wrapper for libpq's PQclear.
Definition result.cxx:42
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
int row_size_type
Number of fields in a row of database data.
Definition types.hxx:34
\n
int result_difference_type
Difference between result sizes.
Definition types.hxx:31
\n
int result_size_type
Number of rows in a result set.
Definition types.hxx:28
\n
unsigned int oid
PostgreSQL database row identifier.
Definition libpq-forward.hxx:33
\n
Various callbacks waiting for a notice to come in.
Definition result.hxx:55
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -54,15 +54,15 @@\n 48\n 49\n 50namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 51{\n 52// 9.0: Remove this, just use the notice handler in connection/result.\n _\b5_\b4struct _\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs\n 55{\n-56 std::function notice_handler;\n+56 std::function<_\bv_\bo_\bi_\bd(_\bz_\bv_\bi_\be_\bw)> notice_handler;\n 57 std::list errorhandlers;\n 58\n 59 _\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs() = default;\n 60 _\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs(_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs const &) = delete;\n 61 _\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs(_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &&) = delete;\n 62 _\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &operator=(_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs const &) = delete;\n 63 _\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &operator=(_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &&) = delete;\n@@ -358,14 +358,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt\n std::string concat(TYPE... item)\n Efficiently combine a bunch of items into one big string.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn concat.hxx:31\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bl_\be_\ba_\br_\b__\br_\be_\bs_\bu_\bl_\bt\n PQXX_LIBEXPORT void clear_result(pq::PGresult const *) noexcept\n C++ wrapper for libpq's PQclear.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn result.cxx:42\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/result__iter_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/result__iter_8hxx_source.html", "unified_diff": "@@ -112,25 +112,25 @@\n
19} // namespace pqxx
\n
20
\n
21
\n
22namespace pqxx::internal
\n
23{
\n
24// C++20: Replace with generator?
\n
\n-
26template<typename... TYPE> class result_iter
\n+
26template<typename... TYPE> class result_iter
\n
27{
\n
28public:
\n-
29 using value_type = std::tuple<TYPE...>;
\n+
29 using value_type = std::tuple<TYPE...>;
\n
30
\n
32 result_iter() = default;
\n
33
\n
34 explicit result_iter(result const &home) :
\n
35 m_home{&home}, m_size{std::size(home)}
\n
36 {
\n-
37 if (not std::empty(home))
\n+
37 if (not std::empty(home))
\n
38 read();
\n
39 }
\n
40 result_iter(result_iter const &) = default;
\n
41
\n
42 result_iter &operator++()
\n
43 {
\n
44 m_index++;
\n@@ -138,20 +138,20 @@\n
46 m_home = nullptr;
\n
47 else
\n
48 read();
\n
49 return *this;
\n
50 }
\n
51
\n
\n-
53 bool operator==(result_iter const &rhs) const
\n+
53 bool operator==(result_iter const &rhs) const
\n
54 {
\n-
55 return m_home == rhs.m_home;
\n+
55 return m_home == rhs.m_home;
\n
56 }
\n
\n-
57 bool operator!=(result_iter const &rhs) const { return not(*this == rhs); }
\n+
57 bool operator!=(result_iter const &rhs) const { return not(*this == rhs); }
\n
58
\n
59 value_type const &operator*() const { return m_value; }
\n
60
\n
61private:
\n
62 void read() { (*m_home)[m_index].convert(m_value); }
\n
63
\n
64 result const *m_home{nullptr};
\n@@ -159,22 +159,22 @@\n
66 result::size_type m_size;
\n
67 value_type m_value;
\n
68};
\n
\n
69
\n
70
\n
\n-
71template<typename... TYPE> class result_iteration
\n+
71template<typename... TYPE> class result_iteration
\n
72{
\n
73public:
\n-
74 using iterator = result_iter<TYPE...>;
\n+
74 using iterator = result_iter<TYPE...>;
\n
75
\n
76 explicit result_iteration(result const &home) : m_home{home}
\n
77 {
\n-
78 m_home.expect_columns(sizeof...(TYPE));
\n+
78 m_home.expect_columns(sizeof...(TYPE));
\n
79 }
\n
80
\n
81 iterator begin() const
\n
82 {
\n
83 if (std::size(m_home) == 0)
\n
84 return end();
\n
85 else
\n@@ -227,14 +227,15 @@\n
void for_each(CALLABLE &&func) const
Run func on each row, passing the row's fields as parameters.
Definition result_iter.hxx:103
\n
result expect_columns(row_size_type cols) const
Expect that result consists of exactly cols columns.
Definition result.hxx:363
\n
auto iter() const
Iterate rows, reading them directly into a tuple of "TYPE...".
Definition result_iter.hxx:96
\n
Error in usage of libpqxx library, similar to std::logic_error.
Definition except.hxx:249
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n
decltype(strip_types(std::declval< TYPES... >())) strip_types_t
Take a tuple type and apply strip_t to its component types.
Definition util.hxx:629
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
decltype(args_f(std::declval< CALLABLE >())) args_t
A callable's parameter types, as a tuple.
Definition util.hxx:616
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
strip_t< decltype(*std::begin(std::declval< CONTAINER >()))> value_type
The type of a container's elements.
Definition types.hxx:96
\n
\n
\n \n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -17,65 +17,65 @@\n 18class result;\n 19} // namespace pqxx\n 20\n 21\n 22namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 23{\n 24// C++20: Replace with generator?\n-_\b2_\b6template class _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br\n+_\b2_\b6template class _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br\n 27{\n 28public:\n-29 using value_type = std::tuple;\n+29 using value_type = std::tuple<_\bT_\bY_\bP_\bE...>;\n 30\n _\b3_\b2 _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br() = default;\n 33\n 34 explicit _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br(_\br_\be_\bs_\bu_\bl_\bt const &home) :\n 35 m_home{&home}, m_size{std::size(home)}\n 36 {\n-37 if (not std::empty(home))\n+37 if (_\bn_\bo_\bt std::empty(home))\n 38 read();\n 39 }\n 40 _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br(_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &) = default;\n 41\n 42 _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br &operator++()\n 43 {\n 44 m_index++;\n 45 if (m_index >= m_size)\n 46 m_home = nullptr;\n 47 else\n 48 read();\n 49 return *this;\n 50 }\n 51\n-_\b5_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &rhs) const\n+_\b5_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &_\br_\bh_\bs) const\n 54 {\n-55 return m_home == rhs.m_home;\n+55 return m_home == _\br_\bh_\bs.m_home;\n 56 }\n-57 bool operator!=(_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &rhs) const { return not(*this == rhs); }\n+57 bool operator!=(_\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br const &_\br_\bh_\bs) const { return _\bn_\bo_\bt(*this == _\br_\bh_\bs); }\n 58\n 59 _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be const &operator*() const { return m_value; }\n 60\n 61private:\n 62 void read() { (*m_home)[m_index].convert(m_value); }\n 63\n 64 result const *m_home{nullptr};\n 65 result::size_type m_index{0};\n 66 result::size_type m_size;\n 67 value_type m_value;\n 68};\n 69\n 70\n-_\b7_\b1template class _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bi_\bo_\bn\n+_\b7_\b1template class _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bi_\bo_\bn\n 72{\n 73public:\n-74 using _\bi_\bt_\be_\br_\ba_\bt_\bo_\br = _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br;\n+74 using _\bi_\bt_\be_\br_\ba_\bt_\bo_\br = _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br<_\bT_\bY_\bP_\bE...>;\n 75\n 76 explicit _\br_\be_\bs_\bu_\bl_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bi_\bo_\bn(_\br_\be_\bs_\bu_\bl_\bt const &home) : m_home{home}\n 77 {\n-78 m_home._\be_\bx_\bp_\be_\bc_\bt_\b__\bc_\bo_\bl_\bu_\bm_\bn_\bs(sizeof...(TYPE));\n+78 m_home._\be_\bx_\bp_\be_\bc_\bt_\b__\bc_\bo_\bl_\bu_\bm_\bn_\bs(sizeof...(_\bT_\bY_\bP_\bE));\n 79 }\n 80\n 81 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br begin() const\n 82 {\n 83 if (std::size(m_home) == 0)\n 84 return end();\n 85 else\n@@ -152,14 +152,19 @@\n std::string concat(TYPE... item)\n Efficiently combine a bunch of items into one big string.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn concat.hxx:31\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs_\b__\bt\n decltype(strip_types(std::declval< TYPES... >())) strip_types_t\n Take a tuple type and apply strip_t to its component types.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:629\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\ba_\br_\bg_\bs_\b__\bt\n decltype(args_f(std::declval< CALLABLE >())) args_t\n A callable's parameter types, as a tuple.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:616\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/row_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/row_8hxx_source.html", "unified_diff": "@@ -121,15 +121,15 @@\n
21#include "pqxx/field.hxx"
\n
22#include "pqxx/result.hxx"
\n
23
\n
24#include "pqxx/internal/concat.hxx"
\n
25
\n
26namespace pqxx::internal
\n
27{
\n-
28template<typename... T> class result_iter;
\n+
28template<typename... T> class result_iter;
\n
29} // namespace pqxx::internal
\n
30
\n
31
\n
32namespace pqxx
\n
33{
\n
35
\n
\n@@ -589,14 +589,15 @@\n
void to(Tuple &t) const
Extract entire row's values into a tuple.
Definition row.hxx:173
\n
size_type table_column(zview col_name) const
What column number in its table did this result column come from?
Definition row.hxx:153
\n
void convert(Tuple &t) const
Convert entire row to tuple fields, without checking row size.
Definition row.hxx:241
\n
oid column_table(zview col_name) const
What table did this column come from?
Definition row.hxx:137
\n
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38
\n
Error in usage of libpqxx library, similar to std::logic_error.
Definition except.hxx:249
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
int row_size_type
Number of fields in a row of database data.
Definition types.hxx:34
\n
int row_difference_type
Difference between row sizes.
Definition types.hxx:37
\n
int result_size_type
Number of rows in a result set.
Definition types.hxx:28
\n
unsigned int oid
PostgreSQL database row identifier.
Definition libpq-forward.hxx:33
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -27,15 +27,15 @@\n 21#include \"pqxx/field.hxx\"\n 22#include \"pqxx/result.hxx\"\n 23\n 24#include \"pqxx/internal/concat.hxx\"\n 25\n 26namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 27{\n-28template class result_iter;\n+28template class result_iter;\n 29} // namespace pqxx::internal\n 30\n 31\n 32namespace _\bp_\bq_\bx_\bx\n 33{\n 35\n _\b4_\b6class PQXX_LIBEXPORT _\br_\bo_\bw\n@@ -523,14 +523,19 @@\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn zview.hxx:38\n _\bp_\bq_\bx_\bx_\b:_\b:_\bu_\bs_\ba_\bg_\be_\b__\be_\br_\br_\bo_\br\n Error in usage of libpqxx library, similar to std::logic_error.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn except.hxx:249\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n _\bp_\bq_\bx_\bx_\b:_\b:_\br_\bo_\bw_\b__\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n int row_size_type\n Number of fields in a row of database data.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn types.hxx:34\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_0.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,13 +1,13 @@\n var searchData = [\n- ['a_20new_20type_0', ['Supporting a new type', ['../datatypes.html#autotoc_md2', 1, '']]],\n- ['a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md23', 1, '']]],\n- ['a_20special_20prepared_20statement_2', ['A special prepared statement', ['../prepared.html#autotoc_md19', 1, '']]],\n- ['a_20statement_3', ['Preparing a statement', ['../prepared.html#autotoc_md17', 1, '']]],\n- ['a_20table_20em_4', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['a_20new_20type_0', ['Supporting a new type', ['../datatypes.html#autotoc_md5', 1, '']]],\n+ ['a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['a_20special_20prepared_20statement_2', ['A special prepared statement', ['../prepared.html#autotoc_md22', 1, '']]],\n+ ['a_20statement_3', ['Preparing a statement', ['../prepared.html#autotoc_md20', 1, '']]],\n+ ['a_20table_20em_4', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['abort_5', ['abort', ['../group__transactions.html#a955f2497216d9eae268ac662b46d5a45', 1, 'pqxx::transaction_base']]],\n ['access_5fpolicy_6', ['access_policy', ['../classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2', 1, 'pqxx::cursor_base']]],\n ['accessing_20results_20and_20result_20rows_7', ['Accessing results and result rows', ['../accessing-results.html', 1, '']]],\n ['additional_20data_20types_8', ['Supporting additional data types', ['../datatypes.html', 1, '']]],\n ['adorn_5fname_9', ['adorn_name', ['../classpqxx_1_1connection.html#ab4cbd2e2d30694fcaf0969c33fbeaa8f', 1, 'pqxx::connection']]],\n ['affected_5frows_10', ['affected_rows', ['../classpqxx_1_1result.html#af73d036566ef69618f8b22ba9a220a2e', 1, 'pqxx::result']]],\n ['all_11', ['all', ['../classpqxx_1_1cursor__base.html#a8ce6273da334bfd0a571c47a7eece137', 1, 'pqxx::cursor_base']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_1.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -36,13 +36,13 @@\n ['../classpqxx_1_1blob.html#a3c1c5fcc157476dfe938c6901059502f', 1, 'pqxx::blob::blob()=default'],\n ['../classpqxx_1_1blob.html#aafa3ce93f6401c592f8985217be1d416', 1, 'pqxx::blob::blob(blob &&)']\n ]],\n ['broken_5fconnection_16', ['broken_connection', ['../group__exception.html#structpqxx_1_1broken__connection', 1, 'pqxx']]],\n ['byte_5fchar_5ftraits_17', ['byte_char_traits', ['../structpqxx_1_1byte__char__traits.html', 1, 'pqxx']]],\n ['bytes_18', ['bytes', ['../group__escaping-functions.html#a9c32ded06d7701f6aec265699b09a3d7', 1, 'pqxx::binarystring::bytes()'],\n ['../namespacepqxx.html#ac5e2f3e80ccc3a5f58bab7d699c9be05', 1, 'pqxx::bytes'],\n- ['../prepared.html#autotoc_md21', 1, 'Zero bytes']\n+ ['../prepared.html#autotoc_md24', 1, 'Zero bytes']\n ]],\n ['bytes_5fview_19', ['bytes_view', ['../group__escaping-functions.html#a896578493ce8e0a82e1b2de5fc786c17', 1, 'pqxx::binarystring::bytes_view()'],\n ['../namespacepqxx.html#adf98e8b2ed585c586f9575928421e07d', 1, 'pqxx::bytes_view']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_10.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_10.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -21,16 +21,16 @@\n ['register_5ftransaction_11', ['register_transaction', ['../group__transactions.html#aae93291a592dc93c7a569f922a8a10e0', 1, 'pqxx::transaction_base']]],\n ['release_5fraw_5fconnection_12', ['release_raw_connection', ['../classpqxx_1_1connection.html#a84ca9d29d5d2cb1d35fde324a7b3fc71', 1, 'pqxx::connection']]],\n ['remove_13', ['remove', ['../classpqxx_1_1blob.html#a04dba3c567afabaf21474a487ee16ed3', 1, 'pqxx::blob::remove()'],\n ['../classpqxx_1_1largeobject.html#a12f426d5cd7f173de01551fa1629ddf4', 1, 'pqxx::largeobject::remove()'],\n ['../classpqxx_1_1largeobjectaccess.html#a12f426d5cd7f173de01551fa1629ddf4', 1, 'pqxx::largeobjectaccess::remove()']\n ]],\n ['render_5fitem_14', ['render_item', ['../namespacepqxx_1_1internal.html#aad2e696d48b72821c43c7ee968fac155', 1, 'pqxx::internal']]],\n- ['reserve_15', ['reserve', ['../classpqxx_1_1params.html#af736445f5bb035a646ed84f8843c91e4', 1, 'pqxx::params::reserve()'],\n- ['../structpqxx_1_1internal_1_1c__params.html#aa0700df147dee1b1a38c37c43f268ba3', 1, 'pqxx::internal::c_params::reserve()']\n+ ['reserve_15', ['reserve', ['../structpqxx_1_1internal_1_1c__params.html#aa0700df147dee1b1a38c37c43f268ba3', 1, 'pqxx::internal::c_params::reserve()'],\n+ ['../classpqxx_1_1params.html#af736445f5bb035a646ed84f8843c91e4', 1, 'pqxx::params::reserve()']\n ]],\n ['resize_16', ['resize', ['../classpqxx_1_1blob.html#a2066f1b112029d66c2a7880592a199e2', 1, 'pqxx::blob']]],\n ['restrict_5fviolation_17', ['restrict_violation', ['../group__exception.html#structpqxx_1_1restrict__violation', 1, 'pqxx']]],\n ['result_18', ['result', ['../classpqxx_1_1result.html', 1, 'pqxx']]],\n ['result_20rows_19', ['Accessing results and result rows', ['../accessing-results.html', 1, '']]],\n ['result_5fconnection_20', ['result_connection', ['../classpqxx_1_1internal_1_1gate_1_1result__connection.html', 1, 'pqxx::internal::gate']]],\n ['result_5fcreation_21', ['result_creation', ['../classpqxx_1_1internal_1_1gate_1_1result__creation.html', 1, 'pqxx::internal::gate']]],\n@@ -39,31 +39,31 @@\n ['../classpqxx_1_1internal_1_1result__iter.html#a0c920149f5043b7d03b7ac765447a929', 1, 'pqxx::internal::result_iter::result_iter()']\n ]],\n ['result_5fiteration_24', ['result_iteration', ['../classpqxx_1_1internal_1_1result__iteration.html', 1, 'pqxx::internal']]],\n ['result_5fpipeline_25', ['result_pipeline', ['../classpqxx_1_1internal_1_1gate_1_1result__pipeline.html', 1, 'pqxx::internal::gate']]],\n ['result_5fsize_5ftype_26', ['result_size_type', ['../namespacepqxx.html#a937d9f67d0bc04774b85efa58736852b', 1, 'pqxx']]],\n ['result_5fsql_5fcursor_27', ['result_sql_cursor', ['../classpqxx_1_1internal_1_1gate_1_1result__sql__cursor.html', 1, 'pqxx::internal::gate']]],\n ['results_20and_20result_20rows_28', ['Accessing results and result rows', ['../accessing-results.html', 1, '']]],\n- ['results_20with_20metadata_29', ['Results with metadata', ['../accessing-results.html#autotoc_md32', 1, '']]],\n+ ['results_20with_20metadata_29', ['Results with metadata', ['../accessing-results.html#autotoc_md2', 1, '']]],\n ['resume_30', ['resume', ['../classpqxx_1_1pipeline.html#a06667e2e73b597586e61cae8533a2874', 1, 'pqxx::pipeline']]],\n ['retain_31', ['retain', ['../classpqxx_1_1pipeline.html#a5de968e394d7d9b68cfd84f9ae93f5bb', 1, 'pqxx::pipeline']]],\n ['retrieve_32', ['retrieve', ['../classpqxx_1_1pipeline.html#a5f8dfe951c18c19f24dd2e7a30ef276d', 1, 'pqxx::pipeline::retrieve()'],\n ['../classpqxx_1_1pipeline.html#a19c508710d0025993e41512f23de56be', 1, 'pqxx::pipeline::retrieve(query_id qid)'],\n ['../classpqxx_1_1stateless__cursor.html#a97046479f709ae621473c48ed7a0932d', 1, 'pqxx::stateless_cursor::retrieve()']\n ]],\n- ['right_20for_20my_20query_33', ['Is streaming right for my query?', ['../streams.html#autotoc_md24', 1, '']]],\n- ['row_34', ['row', ['../classpqxx_1_1row.html', 1, 'pqxx::row'],\n- ['../classpqxx_1_1row.html#a5bd8864f453d45f83984ed858fb68880', 1, 'pqxx::row::row()']\n+ ['right_20for_20my_20query_33', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n+ ['row_34', ['row', ['../classpqxx_1_1row.html#a5bd8864f453d45f83984ed858fb68880', 1, 'pqxx::row::row()'],\n+ ['../classpqxx_1_1row.html', 1, 'pqxx::row']\n ]],\n ['row_5fdifference_5ftype_35', ['row_difference_type', ['../namespacepqxx.html#a3269cdd94e1966b5d9e5d175f27741db', 1, 'pqxx']]],\n ['row_5fend_36', ['row_end', ['../classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189eab11c3eff6dd36f1f7136020d32b38051', 1, 'pqxx::array_parser']]],\n ['row_5fsize_5ftype_37', ['row_size_type', ['../namespacepqxx.html#a2dedde27863671a16a59f2625bf03d03', 1, 'pqxx']]],\n ['row_5fstart_38', ['row_start', ['../classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea776234b9f0a5c0e802f2790824042092', 1, 'pqxx::array_parser']]],\n ['rownumber_39', ['rownumber', ['../classpqxx_1_1const__reverse__result__iterator.html#aadd30c2141060d954c16301e3711a02c', 1, 'pqxx::const_reverse_result_iterator::rownumber()'],\n ['../classpqxx_1_1const__result__iterator.html#aadd30c2141060d954c16301e3711a02c', 1, 'pqxx::const_result_iterator::rownumber()'],\n ['../classpqxx_1_1row.html#aadd30c2141060d954c16301e3711a02c', 1, 'pqxx::row::rownumber()']\n ]],\n ['rows_40', ['rows', ['../accessing-results.html', 1, 'Accessing results and result rows'],\n- ['../accessing-results.html#autotoc_md31', 1, 'Streaming rows']\n+ ['../accessing-results.html#autotoc_md1', 1, 'Streaming rows']\n ]],\n- ['rows_20of_20data_41', ['Querying rows of data', ['../accessing-results.html#autotoc_md30', 1, '']]]\n+ ['rows_20of_20data_41', ['Querying rows of data', ['../accessing-results.html#autotoc_md0', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_11.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_11.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -6,117 +6,117 @@\n ['scan_5funquoted_5fstring_4', ['scan_unquoted_string', ['../namespacepqxx_1_1internal.html#aa04370763622b6a3a101c9f3a9094f31', 1, 'pqxx::internal']]],\n ['seek_5', ['seek', ['../classpqxx_1_1largeobjectaccess.html#ae74922e23584d6410cf37f89f10c1a53', 1, 'pqxx::largeobjectaccess']]],\n ['seek_5fabs_6', ['seek_abs', ['../classpqxx_1_1blob.html#aca130d3433032b610ea94136968d16e5', 1, 'pqxx::blob']]],\n ['seek_5fend_7', ['seek_end', ['../classpqxx_1_1blob.html#aff777e2a1736d1a24b07e410e846181e', 1, 'pqxx::blob']]],\n ['seek_5frel_8', ['seek_rel', ['../classpqxx_1_1blob.html#ac95d070901a97d46659806edd6687f53', 1, 'pqxx::blob']]],\n ['seekdir_9', ['seekdir', ['../classpqxx_1_1largeobjectaccess.html#a9230026566fa1f7c32d2abcc2a5571eb', 1, 'pqxx::largeobjectaccess']]],\n ['seize_5fraw_5fconnection_10', ['seize_raw_connection', ['../classpqxx_1_1connection.html#a9636dca79690132730383a663aab52c8', 1, 'pqxx::connection']]],\n- ['sensitivity_11', ['Case sensitivity', ['../classpqxx_1_1connection.html#autotoc_md26', 1, '']]],\n- ['separated_5flist_12', ['separated_list', ['../namespacepqxx.html#a20d624ee29b5c66c68a515da3a56d5e8', 1, 'pqxx::separated_list(std::string_view sep, ITER begin, ITER end, ACCESS access)'],\n- ['../namespacepqxx.html#a043b0acb60e5e805b5d6af403da4fafc', 1, 'pqxx::separated_list(std::string_view sep, ITER begin, ITER end)'],\n+ ['sensitivity_11', ['Case sensitivity', ['../classpqxx_1_1connection.html#autotoc_md29', 1, '']]],\n+ ['separated_5flist_12', ['separated_list', ['../namespacepqxx.html#a2645d7a8c25d93e6b573cb4055dbb7a4', 1, 'pqxx::separated_list(std::string_view, TUPLE const &t, ACCESS const &access)'],\n ['../namespacepqxx.html#a6923c65ab691ca5039a5f391119e63ae', 1, 'pqxx::separated_list(std::string_view sep, CONTAINER const &c) -> typename std::enable_if<(not std::is_void< decltype(std::begin(c))>::value and not std::is_void< decltype(std::end(c))>::value), std::string >::type'],\n- ['../namespacepqxx.html#a2645d7a8c25d93e6b573cb4055dbb7a4', 1, 'pqxx::separated_list(std::string_view, TUPLE const &t, ACCESS const &access)']\n+ ['../namespacepqxx.html#a043b0acb60e5e805b5d6af403da4fafc', 1, 'pqxx::separated_list(std::string_view sep, ITER begin, ITER end)'],\n+ ['../namespacepqxx.html#a20d624ee29b5c66c68a515da3a56d5e8', 1, 'pqxx::separated_list(std::string_view sep, ITER begin, ITER end, ACCESS access)']\n ]],\n ['serialization_5ffailure_13', ['serialization_failure', ['../group__exception.html#structpqxx_1_1serialization__failure', 1, 'pqxx']]],\n ['server_5fversion_14', ['server_version', ['../classpqxx_1_1connection.html#ae217a0eb7197724be22beeb01b841a5a', 1, 'pqxx::connection']]],\n- ['set_5fclient_5fencoding_15', ['set_client_encoding', ['../classpqxx_1_1connection.html#a3b8266efbb47eb4be0acae9ba198459d', 1, 'pqxx::connection::set_client_encoding(zview encoding) &'],\n- ['../classpqxx_1_1connection.html#a2da006fb42b49b72f1261b774aaf6e10', 1, 'pqxx::connection::set_client_encoding(char const encoding[]) &']\n+ ['set_5fclient_5fencoding_15', ['set_client_encoding', ['../classpqxx_1_1connection.html#a2da006fb42b49b72f1261b774aaf6e10', 1, 'pqxx::connection::set_client_encoding(char const encoding[]) &'],\n+ ['../classpqxx_1_1connection.html#a3b8266efbb47eb4be0acae9ba198459d', 1, 'pqxx::connection::set_client_encoding(zview encoding) &']\n ]],\n ['set_5fnotice_5fhandler_16', ['set_notice_handler', ['../classpqxx_1_1connection.html#a3eb2374848e1ddf85fe8dfa5f58826f3', 1, 'pqxx::connection']]],\n ['set_5frollback_5fcmd_17', ['set_rollback_cmd', ['../group__transactions.html#a35e81ec0048df68ba4a5e1c0a2ece777', 1, 'pqxx::transaction_base']]],\n ['set_5fsession_5fvar_18', ['set_session_var', ['../classpqxx_1_1connection.html#ae23a5c19af62349c1924ec26d93c81d5', 1, 'pqxx::connection']]],\n- ['set_5fvariable_19', ['set_variable', ['../classpqxx_1_1connection.html#a59295a47049b03ab949b3781dd60ed42', 1, 'pqxx::connection::set_variable()'],\n- ['../group__transactions.html#ae3983af92a76767c75b9889ac9c52a8b', 1, 'pqxx::transaction_base::set_variable()']\n+ ['set_5fvariable_19', ['set_variable', ['../group__transactions.html#ae3983af92a76767c75b9889ac9c52a8b', 1, 'pqxx::transaction_base::set_variable()'],\n+ ['../classpqxx_1_1connection.html#a59295a47049b03ab949b3781dd60ed42', 1, 'pqxx::connection::set_variable(std::string_view var, std::string_view value) &']\n ]],\n ['set_5fverbosity_20', ['set_verbosity', ['../classpqxx_1_1connection.html#a024851ed6f2ee32fa00e0fcf53cf37ac', 1, 'pqxx::connection']]],\n ['size_21', ['size', ['../group__escaping-functions.html#afa6be7a52ce16a143ce6ebf640ff3aea', 1, 'pqxx::binarystring::size()'],\n- ['../classpqxx_1_1stateless__cursor.html#ae278f24bab98d3946061934a48992067', 1, 'pqxx::stateless_cursor::size()'],\n- ['../classpqxx_1_1field.html#a20ceb9e1dd63c481e412af866e88ccaa', 1, 'pqxx::field::size()'],\n ['../classpqxx_1_1params.html#a1a3ca8939fbeec4db4f7d69c8014a937', 1, 'pqxx::params::size()'],\n- ['../classpqxx_1_1array.html#a592afe2ec16fbb793501e84d805c87eb', 1, 'pqxx::array::size()']\n+ ['../classpqxx_1_1field.html#a20ceb9e1dd63c481e412af866e88ccaa', 1, 'pqxx::field::size()'],\n+ ['../classpqxx_1_1array.html#a592afe2ec16fbb793501e84d805c87eb', 1, 'pqxx::array::size()'],\n+ ['../classpqxx_1_1stateless__cursor.html#ae278f24bab98d3946061934a48992067', 1, 'pqxx::stateless_cursor::size()']\n ]],\n ['size_5fbuffer_22', ['size_buffer', ['../structpqxx_1_1string__traits.html#a16b9aef87d46bafdcfcfdaca42f2f73f', 1, 'pqxx::string_traits']]],\n- ['size_5fbuffer_20tt_23', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n+ ['size_5fbuffer_20tt_23', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md13', 1, '']]],\n ['size_5fcomposite_5ffield_5fbuffer_24', ['size_composite_field_buffer', ['../namespacepqxx_1_1internal.html#a28ae4ea69fdef1f1eba5a771ccd1dc2f', 1, 'pqxx::internal']]],\n ['size_5fesc_5fbin_25', ['size_esc_bin', ['../namespacepqxx_1_1internal.html#a297e2d7f026b9baf4b8a57872ea345fc', 1, 'pqxx::internal']]],\n ['size_5funesc_5fbin_26', ['size_unesc_bin', ['../namespacepqxx_1_1internal.html#aff5de6ade6ae7234093bac118bf7ab8c', 1, 'pqxx::internal']]],\n ['sizes_27', ['sizes', ['../classpqxx_1_1array.html#ad0bf0e010691f056bebaa506f9e034dc', 1, 'pqxx::array']]],\n ['skip_5finit_28', ['skip_init', ['../namespacepqxx.html#adabe80e8385e85d663acc6e44332070d', 1, 'pqxx']]],\n ['skip_5finit_5fssl_29', ['skip_init_ssl', ['../namespacepqxx_1_1internal.html#a2ff078037fe1e6ca2b76fd9e0ac94b87', 1, 'pqxx::internal::skip_init_ssl()'],\n ['../namespacepqxx.html#a71f4fd3d06b6e0a849c58a8160380a86', 1, 'pqxx::skip_init_ssl()']\n ]],\n ['slice_30', ['slice', ['../classpqxx_1_1row.html#a4195a594e4f11829637820cd89e39c7b', 1, 'pqxx::row']]],\n- ['sock_31', ['sock', ['../classpqxx_1_1connecting.html#a26fe754177b77ce5d62a7de871d79b7b', 1, 'pqxx::connecting::sock()'],\n- ['../classpqxx_1_1connection.html#af312d26f21b1cfd4d063e3b591fb7579', 1, 'pqxx::connection::sock()']\n+ ['sock_31', ['sock', ['../classpqxx_1_1connection.html#af312d26f21b1cfd4d063e3b591fb7579', 1, 'pqxx::connection::sock()'],\n+ ['../classpqxx_1_1connecting.html#a26fe754177b77ce5d62a7de871d79b7b', 1, 'pqxx::connecting::sock()']\n ]],\n- ['special_20prepared_20statement_32', ['A special prepared statement', ['../prepared.html#autotoc_md19', 1, '']]],\n- ['specialise_20tt_20is_5funquoted_5fsafe_20tt_33', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n- ['specialise_20tt_20nullness_20tt_34', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md5', 1, '']]],\n- ['specialise_20tt_20param_5fformat_20tt_35', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n- ['specialise_20tt_20string_5ftraits_20tt_36', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md6', 1, '']]],\n- ['specialise_20tt_20type_5fname_20tt_37', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md4', 1, '']]],\n+ ['special_20prepared_20statement_32', ['A special prepared statement', ['../prepared.html#autotoc_md22', 1, '']]],\n+ ['specialise_20tt_20is_5funquoted_5fsafe_20tt_33', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md14', 1, '']]],\n+ ['specialise_20tt_20nullness_20tt_34', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md8', 1, '']]],\n+ ['specialise_20tt_20param_5fformat_20tt_35', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md15', 1, '']]],\n+ ['specialise_20tt_20string_5ftraits_20tt_36', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n+ ['specialise_20tt_20type_5fname_20tt_37', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md7', 1, '']]],\n ['specialize_5fparse_5fcomposite_5ffield_38', ['specialize_parse_composite_field', ['../namespacepqxx_1_1internal.html#ab1007038de5942f048d5da32e49b6b07', 1, 'pqxx::internal']]],\n- ['sql_20injection_39', ['SQL injection', ['../escaping.html#autotoc_md13', 1, '']]],\n+ ['sql_20injection_39', ['SQL injection', ['../escaping.html#autotoc_md16', 1, '']]],\n ['sql_5fcursor_40', ['sql_cursor', ['../classpqxx_1_1internal_1_1sql__cursor.html', 1, 'pqxx::internal']]],\n ['sql_5ferror_41', ['sql_error', ['../group__exception.html#classpqxx_1_1sql__error', 1, 'pqxx']]],\n ['sqlstate_42', ['sqlstate', ['../group__exception.html#a31ffc7a42e9a388eb2b7cb46647e4282', 1, 'pqxx::sql_error']]],\n ['ssize_43', ['ssize', ['../classpqxx_1_1params.html#ab23b2a3b2a58bfd03fca36022ebce8b4', 1, 'pqxx::params::ssize()'],\n- ['../classpqxx_1_1array.html#a707b514df7835fa198a29ae68897efd8', 1, 'pqxx::array::ssize()'],\n- ['../namespacepqxx_1_1internal.html#af21d8461eaf6d185ed98ab88b2edac6e', 1, 'pqxx::internal::ssize()']\n+ ['../namespacepqxx_1_1internal.html#af21d8461eaf6d185ed98ab88b2edac6e', 1, 'pqxx::internal::ssize()'],\n+ ['../classpqxx_1_1array.html#a707b514df7835fa198a29ae68897efd8', 1, 'pqxx::array::ssize()']\n ]],\n ['started_44', ['Getting started', ['../getting-started.html', 1, '']]],\n ['state_5fbuffer_5foverrun_45', ['state_buffer_overrun', ['../namespacepqxx_1_1internal.html#ac32dacb4b6c712d3d7b1de9ebad0e1d5', 1, 'pqxx::internal']]],\n- ['stateless_5fcursor_46', ['stateless_cursor', ['../classpqxx_1_1stateless__cursor.html#afe5492d726a1765647985874d17f4149', 1, 'pqxx::stateless_cursor::stateless_cursor()'],\n- ['../classpqxx_1_1stateless__cursor.html', 1, 'pqxx::stateless_cursor< up, op >'],\n- ['../classpqxx_1_1stateless__cursor.html#ad77d68832afb8572fd976fc816bec89a', 1, 'pqxx::stateless_cursor::stateless_cursor()']\n+ ['stateless_5fcursor_46', ['stateless_cursor', ['../classpqxx_1_1stateless__cursor.html#afe5492d726a1765647985874d17f4149', 1, 'pqxx::stateless_cursor::stateless_cursor(transaction_base &tx, std::string_view adopted_cursor)'],\n+ ['../classpqxx_1_1stateless__cursor.html#ad77d68832afb8572fd976fc816bec89a', 1, 'pqxx::stateless_cursor::stateless_cursor(transaction_base &tx, std::string_view query, std::string_view cname, bool hold)'],\n+ ['../classpqxx_1_1stateless__cursor.html', 1, 'pqxx::stateless_cursor< up, op >']\n ]],\n- ['statement_47', ['statement', ['../prepared.html#autotoc_md19', 1, 'A special prepared statement'],\n- ['../prepared.html#autotoc_md17', 1, 'Preparing a statement']\n+ ['statement_47', ['statement', ['../prepared.html#autotoc_md22', 1, 'A special prepared statement'],\n+ ['../prepared.html#autotoc_md20', 1, 'Preparing a statement']\n ]],\n ['statement_20parameters_48', ['Statement parameters', ['../parameters.html', 1, '']]],\n ['statement_5fcompletion_5funknown_49', ['statement_completion_unknown', ['../group__exception.html#structpqxx_1_1statement__completion__unknown', 1, 'pqxx']]],\n ['statements_50', ['Prepared statements', ['../prepared.html', 1, '']]],\n ['str_51', ['str', ['../group__escaping-functions.html#a9686dbe184806d5e115d9842aa3484dd', 1, 'pqxx::binarystring']]],\n- ['stream_52', ['stream', ['../group__transactions.html#aec4d0f102c2c0fab8fa1a48f452abc0f', 1, 'pqxx::transaction_base::stream(std::string_view query) &'],\n- ['../group__transactions.html#a742319e1c35632e9e3b14b91b64d5b4b', 1, 'pqxx::transaction_base::stream(std::string_view query, params parms) &']\n+ ['stream_52', ['stream', ['../group__transactions.html#a742319e1c35632e9e3b14b91b64d5b4b', 1, 'pqxx::transaction_base::stream(std::string_view query, params parms) &'],\n+ ['../group__transactions.html#aec4d0f102c2c0fab8fa1a48f452abc0f', 1, 'pqxx::transaction_base::stream(std::string_view query) &']\n ]],\n- ['stream_5ffrom_53', ['stream_from', ['../classpqxx_1_1stream__from.html', 1, 'pqxx::stream_from'],\n+ ['stream_5ffrom_53', ['stream_from', ['../classpqxx_1_1stream__from.html#a832fe2b217cf7e1a5496d35f75dcd15c', 1, 'pqxx::stream_from::stream_from(transaction_base &tx, from_table_t, std::string_view table, Columns const &columns)'],\n ['../classpqxx_1_1stream__from.html#a11a6e30a28260f10fa9bfbd6f7ea36c4', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_query_t, std::string_view query)'],\n ['../classpqxx_1_1stream__from.html#a3c4cd42c50e3e90282ea5570ddb19e70', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_table_t, std::string_view table)'],\n ['../classpqxx_1_1stream__from.html#a0f32402331d7f2b8ed73419f1eed22ba', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_table_t, std::string_view table, Iter columns_begin, Iter columns_end)'],\n- ['../classpqxx_1_1stream__from.html#a832fe2b217cf7e1a5496d35f75dcd15c', 1, 'pqxx::stream_from::stream_from(transaction_base &tx, from_table_t, std::string_view table, Columns const &columns)'],\n ['../classpqxx_1_1stream__from.html#abcfe96b18d9e2c4177799248fe143807', 1, 'pqxx::stream_from::stream_from(transaction_base &tx, std::string_view table)'],\n ['../classpqxx_1_1stream__from.html#a38b17b7198ed153d01e42d5873cdf070', 1, 'pqxx::stream_from::stream_from(transaction_base &tx, std::string_view table, Columns const &columns)'],\n- ['../classpqxx_1_1stream__from.html#a6afe5f8cdb8f158b46fa9c616c7864bf', 1, 'pqxx::stream_from::stream_from(transaction_base &, std::string_view table, Iter columns_begin, Iter columns_end)']\n+ ['../classpqxx_1_1stream__from.html#a6afe5f8cdb8f158b46fa9c616c7864bf', 1, 'pqxx::stream_from::stream_from(transaction_base &, std::string_view table, Iter columns_begin, Iter columns_end)'],\n+ ['../classpqxx_1_1stream__from.html', 1, 'pqxx::stream_from']\n ]],\n- ['stream_5ffrom_5finput_5fiterator_54', ['stream_from_input_iterator', ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a6ee371294bb42b9e604d7313d0878a61', 1, 'pqxx::internal::stream_from_input_iterator::stream_from_input_iterator()'],\n- ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html', 1, 'pqxx::internal::stream_from_input_iterator< TYPE >']\n+ ['stream_5ffrom_5finput_5fiterator_54', ['stream_from_input_iterator', ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html', 1, 'pqxx::internal::stream_from_input_iterator< TYPE >'],\n+ ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a6ee371294bb42b9e604d7313d0878a61', 1, 'pqxx::internal::stream_from_input_iterator::stream_from_input_iterator()']\n ]],\n ['stream_5finput_5fiteration_55', ['stream_input_iteration', ['../classpqxx_1_1internal_1_1stream__input__iteration.html', 1, 'pqxx::internal']]],\n- ['stream_5fquery_56', ['stream_query', ['../classpqxx_1_1internal_1_1stream__query.html#a82a1a8435b756b9cb075f4a9a2fc6c09', 1, 'pqxx::internal::stream_query::stream_query()'],\n- ['../namespacepqxx.html#classpqxx_1_1stream__query', 1, 'pqxx::stream_query< TYPE >'],\n+ ['stream_5fquery_56', ['stream_query', ['../namespacepqxx.html#classpqxx_1_1stream__query', 1, 'pqxx::stream_query< TYPE >'],\n ['../classpqxx_1_1internal_1_1stream__query.html', 1, 'pqxx::internal::stream_query< TYPE >'],\n- ['../classpqxx_1_1internal_1_1stream__query.html#ab7226acb2456b26777af0dd772e94bc9', 1, 'pqxx::internal::stream_query::stream_query()']\n+ ['../classpqxx_1_1internal_1_1stream__query.html#ab7226acb2456b26777af0dd772e94bc9', 1, 'pqxx::internal::stream_query::stream_query(transaction_base &tx, std::string_view query, params const &)'],\n+ ['../classpqxx_1_1internal_1_1stream__query.html#a82a1a8435b756b9cb075f4a9a2fc6c09', 1, 'pqxx::internal::stream_query::stream_query(transaction_base &tx, std::string_view query)']\n ]],\n ['stream_5fquery_5fend_5fiterator_57', ['stream_query_end_iterator', ['../namespacepqxx_1_1internal.html#classpqxx_1_1internal_1_1stream__query__end__iterator', 1, 'pqxx::internal']]],\n ['stream_5fquery_5finput_5fiterator_58', ['stream_query_input_iterator', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html', 1, 'pqxx::internal']]],\n- ['stream_5fto_59', ['stream_to', ['../classpqxx_1_1stream__to.html#a3491f56118589adff7b7fc214689ad67', 1, 'pqxx::stream_to::stream_to(transaction_base &, std::string_view table_name, Columns const &columns)'],\n- ['../classpqxx_1_1stream__to.html#a726187a18a93a4c5cc2343bcb9e97da8', 1, 'pqxx::stream_to::stream_to(transaction_base &tx, std::string_view table_name)'],\n- ['../classpqxx_1_1stream__to.html', 1, 'pqxx::stream_to']\n- ]],\n- ['streaming_20data_20em_20from_20a_20query_20em_60', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md23', 1, '']]],\n- ['streaming_20data_20em_20into_20a_20table_20em_61', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md25', 1, '']]],\n- ['streaming_20right_20for_20my_20query_62', ['Is streaming right for my query?', ['../streams.html#autotoc_md24', 1, '']]],\n- ['streaming_20rows_63', ['Streaming rows', ['../accessing-results.html#autotoc_md31', 1, '']]],\n+ ['stream_5fto_59', ['stream_to', ['../classpqxx_1_1stream__to.html', 1, 'pqxx::stream_to'],\n+ ['../classpqxx_1_1stream__to.html#a3491f56118589adff7b7fc214689ad67', 1, 'pqxx::stream_to::stream_to(transaction_base &, std::string_view table_name, Columns const &columns)'],\n+ ['../classpqxx_1_1stream__to.html#a726187a18a93a4c5cc2343bcb9e97da8', 1, 'pqxx::stream_to::stream_to(transaction_base &tx, std::string_view table_name)']\n+ ]],\n+ ['streaming_20data_20em_20from_20a_20query_20em_60', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['streaming_20data_20em_20into_20a_20table_20em_61', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n+ ['streaming_20right_20for_20my_20query_62', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n+ ['streaming_20rows_63', ['Streaming rows', ['../accessing-results.html#autotoc_md1', 1, '']]],\n ['streams_64', ['Streams', ['../streams.html', 1, '']]],\n ['string_20conversion_65', ['String conversion', ['../group__stringconversion.html', 1, '']]],\n ['string_20escaping_66', ['String escaping', ['../escaping.html', 1, '']]],\n ['string_20escaping_20functions_67', ['String-escaping functions', ['../group__escaping-functions.html', 1, '']]],\n ['string_5ftraits_68', ['string_traits', ['../structpqxx_1_1string__traits.html', 1, 'pqxx']]],\n- ['string_5ftraits_20tt_69', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md6', 1, '']]],\n+ ['string_5ftraits_20tt_69', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n ['string_5ftraits_3c_20binarystring_20_3e_70', ['string_traits< binarystring >', ['../structpqxx_1_1string__traits_3_01binarystring_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20bool_20_3e_71', ['string_traits< bool >', ['../structpqxx_1_1string__traits_3_01bool_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20bytes_20_3e_72', ['string_traits< bytes >', ['../structpqxx_1_1string__traits_3_01bytes_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20bytes_5fview_20_3e_73', ['string_traits< bytes_view >', ['../structpqxx_1_1string__traits_3_01bytes__view_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20char_20_2a_20_3e_74', ['string_traits< char * >', ['../structpqxx_1_1string__traits_3_01char_01_5_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20char_20_3e_75', ['string_traits< char >', ['../structpqxx_1_1string__traits_3_01char_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20char_20const_20_2a_20_3e_76', ['string_traits< char const * >', ['../structpqxx_1_1string__traits_3_01char_01const_01_5_01_4.html', 1, 'pqxx']]],\n@@ -155,15 +155,15 @@\n ['strip_5ftypes_109', ['strip_types', ['../namespacepqxx_1_1internal.html#a9b4647a83a27f2d3adc9add80c55dec3', 1, 'pqxx::internal']]],\n ['strip_5ftypes_5ft_110', ['strip_types_t', ['../namespacepqxx_1_1internal.html#a8e0a910c85d42eaa8d5948fae092cf16', 1, 'pqxx::internal']]],\n ['subtransaction_111', ['subtransaction', ['../group__transactions.html#abec3848ca61ae755fab531e791ce89d8', 1, 'pqxx::subtransaction::subtransaction(dbtransaction &t, std::string_view tname=""sv)'],\n ['../group__transactions.html#aa351325206ada1be7f3db4fa69145c4d', 1, 'pqxx::subtransaction::subtransaction(subtransaction &t, std::string_view name=""sv)'],\n ['../group__transactions.html#classpqxx_1_1subtransaction', 1, 'pqxx::subtransaction']\n ]],\n ['super_112', ['super', ['../classpqxx_1_1internal_1_1callgate.html#afb620090453fc901f4fa147ee60bde36', 1, 'pqxx::internal::callgate']]],\n- ['supporting_20a_20new_20type_113', ['Supporting a new type', ['../datatypes.html#autotoc_md2', 1, '']]],\n+ ['supporting_20a_20new_20type_113', ['Supporting a new type', ['../datatypes.html#autotoc_md5', 1, '']]],\n ['supporting_20additional_20data_20types_114', ['Supporting additional data types', ['../datatypes.html', 1, '']]],\n- ['swap_115', ['swap', ['../classpqxx_1_1result.html#ad1d929a8c555ef0e4e84d4dbcf56c05e', 1, 'pqxx::result::swap()'],\n- ['../classpqxx_1_1const__result__iterator.html#a3a7cd99d4e801fca6a538dbad3c7bba6', 1, 'pqxx::const_result_iterator::swap()'],\n- ['../group__escaping-functions.html#ad6e5000885dd6f0b7bdf1f5d7f365dd9', 1, 'pqxx::binarystring::swap()']\n+ ['swap_115', ['swap', ['../group__escaping-functions.html#ad6e5000885dd6f0b7bdf1f5d7f365dd9', 1, 'pqxx::binarystring::swap()'],\n+ ['../classpqxx_1_1result.html#ad1d929a8c555ef0e4e84d4dbcf56c05e', 1, 'pqxx::result::swap()'],\n+ ['../classpqxx_1_1const__result__iterator.html#a3a7cd99d4e801fca6a538dbad3c7bba6', 1, 'pqxx::const_result_iterator::swap()']\n ]],\n ['syntax_5ferror_116', ['syntax_error', ['../group__exception.html#structpqxx_1_1syntax__error', 1, 'pqxx']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_12.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_12.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,39 +1,39 @@\n var searchData = [\n ['table_0', ['table', ['../classpqxx_1_1field.html#aee9267454dca1a3457fb86e2f0046feb', 1, 'pqxx::field::table()'],\n ['../classpqxx_1_1stream__from.html#a8bd03db93560766414f74258202f86fd', 1, 'pqxx::stream_from::table()'],\n ['../classpqxx_1_1stream__to.html#a34d7ca93963c0b5733a9ebcc10f2429b', 1, 'pqxx::stream_to::table()']\n ]],\n- ['table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['table_5fcolumn_2', ['table_column', ['../classpqxx_1_1field.html#a884880e40a43bad2733a167340896192', 1, 'pqxx::field::table_column()'],\n ['../classpqxx_1_1result.html#ae65c4fb3934978bba367ab61811aabec', 1, 'pqxx::result::table_column(row_size_type col_num) const'],\n ['../classpqxx_1_1result.html#a22161b4bebb52ef85a51509302b5a8a9', 1, 'pqxx::result::table_column(zview col_name) const'],\n ['../classpqxx_1_1row.html#a0cc2133611f007e7390988f6110245c8', 1, 'pqxx::row::table_column(size_type) const'],\n ['../classpqxx_1_1row.html#add6bd3b28ccb8178a072e8d3d19b9616', 1, 'pqxx::row::table_column(zview col_name) const']\n ]],\n ['table_5fpath_3', ['table_path', ['../namespacepqxx.html#a7f913d1e427c805856ac303db75c1e57', 1, 'pqxx']]],\n ['tell_4', ['tell', ['../classpqxx_1_1largeobjectaccess.html#a972d8559cae789984a194c98a88b943b', 1, 'pqxx::largeobjectaccess::tell()'],\n ['../classpqxx_1_1blob.html#a88f116eb30c662386e02a1a47fd859b8', 1, 'pqxx::blob::tell()']\n ]],\n- ['the_20esc_20functions_5', ['Using the esc functions', ['../escaping.html#autotoc_md14', 1, '']]],\n+ ['the_20esc_20functions_5', ['Using the esc functions', ['../escaping.html#autotoc_md17', 1, '']]],\n ['thread_20safety_6', ['Thread safety', ['../thread-safety.html', 1, '']]],\n ['thread_5fsafety_5fmodel_7', ['thread_safety_model', ['../namespacepqxx.html#structpqxx_1_1thread__safety__model', 1, 'pqxx']]],\n ['throw_5fnull_5fconversion_8', ['throw_null_conversion', ['../namespacepqxx_1_1internal.html#ab228c862d33c75405472dccf8a34dfa3', 1, 'pqxx::internal::throw_null_conversion(std::string_view type)'],\n ['../namespacepqxx_1_1internal.html#a14aec6b418ba2b5867987eb22bd867ce', 1, 'pqxx::internal::throw_null_conversion(std::string const &type)']\n ]],\n ['to_9', ['to', ['../classpqxx_1_1field.html#a31433b3a426646a23e1d11f3242a3885', 1, 'pqxx::field::to(T &obj, T const &default_value) const -> typename std::enable_if_t<(not std::is_pointer< T >::value or std::is_same< T, char const * >::value), bool >'],\n ['../classpqxx_1_1field.html#a1e87e9981c60d37516326e7ab6b26da6', 1, 'pqxx::field::to(char const *&obj) const'],\n ['../classpqxx_1_1row.html#ac478a252d2bac75e1fe0d65fd99f9042', 1, 'pqxx::row::to()'],\n ['../classpqxx_1_1field.html#a5c13391d9f288b83419cca7865b5be62', 1, 'pqxx::field::to()']\n ]],\n ['to_5fbuf_10', ['to_buf', ['../classpqxx_1_1blob.html#abfc3b8c4faeab1f394422d474114e121', 1, 'pqxx::blob::to_buf()'],\n ['../structpqxx_1_1internal_1_1float__traits.html#ad1728a05cf18dfe9e200b54b9d8fb38d', 1, 'pqxx::internal::float_traits::to_buf()'],\n ['../structpqxx_1_1string__traits.html#a81b2526f70d7191c37e36fb78530b977', 1, 'pqxx::string_traits::to_buf()']\n ]],\n- ['to_5fbuf_20tt_11', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md8', 1, '']]],\n+ ['to_5fbuf_20tt_11', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n ['to_5ffile_12', ['to_file', ['../classpqxx_1_1blob.html#a373c4d3df0068d18e75f8bdbf619ac90', 1, 'pqxx::blob::to_file()'],\n ['../classpqxx_1_1largeobject.html#a4fb862c252771c8ad4449f8badf2b26f', 1, 'pqxx::largeobject::to_file()'],\n ['../classpqxx_1_1largeobjectaccess.html#acdbc859cf3afd0ddcc4aa555ef36c35a', 1, 'pqxx::largeobjectaccess::to_file(std::string_view file) const'],\n ['../classpqxx_1_1largeobjectaccess.html#a4fb862c252771c8ad4449f8badf2b26f', 1, 'pqxx::largeobjectaccess::to_file(dbtransaction &t, std::string_view file) const']\n ]],\n ['to_5fstring_13', ['to_string', ['../namespacepqxx.html#accab0ae142ee4c6789f5252578d0d478', 1, 'pqxx']]],\n ['to_5fstring_5ffloat_14', ['to_string_float', ['../namespacepqxx_1_1internal.html#acc9749f398f41d29c41e5b4475735f3d', 1, 'pqxx::internal::to_string_float(T)'],\n@@ -48,28 +48,28 @@\n ['../group__transactions.html#classpqxx_1_1transaction__base', 1, 'pqxx::transaction_base']\n ]],\n ['transaction_5fbase_3a_3aquery_5fvalue_3c_20std_3a_3astring_5fview_20_3e_19', ['query_value< std::string_view >', ['../namespacepqxx.html#a8f5d10354025255ae20e29fa024d22b3', 1, 'pqxx']]],\n ['transaction_5ffocus_20', ['transaction_focus', ['../classpqxx_1_1transaction__focus.html', 1, 'pqxx']]],\n ['transaction_5frollback_21', ['transaction_rollback', ['../group__exception.html#structpqxx_1_1transaction__rollback', 1, 'pqxx']]],\n ['transaction_5fsql_5fcursor_22', ['transaction_sql_cursor', ['../classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor.html', 1, 'pqxx::internal::gate']]],\n ['transaction_5ftransaction_5ffocus_23', ['transaction_transaction_focus', ['../classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus.html', 1, 'pqxx::internal::gate']]],\n- ['transactions_24', ['Transactions', ['../classpqxx_1_1connection.html#autotoc_md27', 1, '']]],\n+ ['transactions_24', ['Transactions', ['../classpqxx_1_1connection.html#autotoc_md30', 1, '']]],\n ['transactor_20framework_25', ['Transactor framework', ['../group__transactor.html', 1, '']]],\n- ['tt_20from_5fstring_20tt_26', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md7', 1, '']]],\n- ['tt_20into_5fbuf_20tt_27', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n- ['tt_20is_5funquoted_5fsafe_20tt_28', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n- ['tt_20nullness_20tt_29', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md5', 1, '']]],\n- ['tt_20param_5fformat_20tt_30', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n- ['tt_20size_5fbuffer_20tt_31', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n- ['tt_20string_5ftraits_20tt_32', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md6', 1, '']]],\n- ['tt_20to_5fbuf_20tt_33', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md8', 1, '']]],\n- ['tt_20type_5fname_20tt_34', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md4', 1, '']]],\n- ['type_35', ['type', ['../datatypes.html#autotoc_md2', 1, 'Supporting a new type'],\n+ ['tt_20from_5fstring_20tt_26', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n+ ['tt_20into_5fbuf_20tt_27', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n+ ['tt_20is_5funquoted_5fsafe_20tt_28', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md14', 1, '']]],\n+ ['tt_20nullness_20tt_29', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md8', 1, '']]],\n+ ['tt_20param_5fformat_20tt_30', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md15', 1, '']]],\n+ ['tt_20size_5fbuffer_20tt_31', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md13', 1, '']]],\n+ ['tt_20string_5ftraits_20tt_32', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n+ ['tt_20to_5fbuf_20tt_33', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n+ ['tt_20type_5fname_20tt_34', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md7', 1, '']]],\n+ ['type_35', ['type', ['../datatypes.html#autotoc_md5', 1, 'Supporting a new type'],\n ['../classpqxx_1_1field.html#ad2da9b613fdf2b38a36e92eafd9b223a', 1, 'pqxx::field::type()'],\n- ['../datatypes.html#autotoc_md3', 1, 'Your type']\n+ ['../datatypes.html#autotoc_md6', 1, 'Your type']\n ]],\n ['type_5fname_36', ['type_name', ['../namespacepqxx.html#a03b51dc175989959be170596670dafa4', 1, 'pqxx']]],\n- ['type_5fname_20tt_37', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md4', 1, '']]],\n- ['types_38', ['types', ['../datatypes.html#autotoc_md1', 1, 'Converting types'],\n+ ['type_5fname_20tt_37', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md7', 1, '']]],\n+ ['types_38', ['types', ['../datatypes.html#autotoc_md4', 1, 'Converting types'],\n ['../datatypes.html', 1, 'Supporting additional data types']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_13.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_13.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -18,10 +18,10 @@\n ['unexpected_5frows_7', ['unexpected_rows', ['../group__exception.html#structpqxx_1_1unexpected__rows', 1, 'pqxx']]],\n ['unique_5fviolation_8', ['unique_violation', ['../group__exception.html#structpqxx_1_1unique__violation', 1, 'pqxx']]],\n ['unprepare_9', ['unprepare', ['../classpqxx_1_1connection.html#a5cbd8240e3c74b595ccb535c941433ae', 1, 'pqxx::connection']]],\n ['update_10', ['update', ['../classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083a12fa229ee3e760f1ca86d66304554b63', 1, 'pqxx::cursor_base']]],\n ['update_5fpolicy_11', ['update_policy', ['../classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083', 1, 'pqxx::cursor_base']]],\n ['usage_5ferror_12', ['usage_error', ['../group__exception.html#structpqxx_1_1usage__error', 1, 'pqxx']]],\n ['username_13', ['username', ['../classpqxx_1_1connection.html#a9d7c7ab0c54a258ac4fab0d562fdbacd', 1, 'pqxx::connection']]],\n- ['using_20the_20esc_20functions_14', ['Using the esc functions', ['../escaping.html#autotoc_md14', 1, '']]],\n+ ['using_20the_20esc_20functions_14', ['Using the esc functions', ['../escaping.html#autotoc_md17', 1, '']]],\n ['utility_20functions_15', ['Utility functions', ['../group__utility.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_14.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_14.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,11 +1,11 @@\n var searchData = [\n ['value_0', ['value', ['../classpqxx_1_1range__bound.html#a76d25b17ed6af78070b888f5effe70ba', 1, 'pqxx::range_bound']]],\n ['value_5ftype_1', ['value_type', ['../namespacepqxx.html#a934fca7aa1250b4c488ac2f09ac2bf1b', 1, 'pqxx']]],\n- ['values_2', ['values', ['../streams.html#autotoc_md22', 1, 'Interlude: null values'],\n+ ['values_2', ['values', ['../streams.html#autotoc_md25', 1, 'Interlude: null values'],\n ['../structpqxx_1_1internal_1_1c__params.html#aad4eb2f440fe907fcf11467effbbff15', 1, 'pqxx::internal::c_params::values']\n ]],\n ['variable_5fset_5fto_5fnull_3', ['variable_set_to_null', ['../group__exception.html#structpqxx_1_1variable__set__to__null', 1, 'pqxx']]],\n ['view_4', ['view', ['../group__escaping-functions.html#a882b8988b2b48a9d3d254a25c559871e', 1, 'pqxx::binarystring::view()'],\n ['../classpqxx_1_1field.html#aa05908e8ed320fac8c96b9eb4cf46813', 1, 'pqxx::field::view()'],\n ['../classpqxx_1_1placeholders.html#a92d006575732b3ead81cbaf4892197ae', 1, 'pqxx::placeholders::view()']\n ]]\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_15.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_15.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,13 +1,13 @@\n var searchData = [\n ['wait_5ffd_0', ['wait_fd', ['../namespacepqxx_1_1internal.html#ae8a3cb88d2e0bc1f1125bee862fe100b', 1, 'pqxx::internal']]],\n ['wait_5ffor_1', ['wait_for', ['../namespacepqxx_1_1internal.html#ae95ba6e41e051ca26d13855aa2b512cb', 1, 'pqxx::internal']]],\n ['wait_5fto_5fread_2', ['wait_to_read', ['../classpqxx_1_1connecting.html#aa60ab98dc5a2702929765f05229bf160', 1, 'pqxx::connecting']]],\n ['wait_5fto_5fwrite_3', ['wait_to_write', ['../classpqxx_1_1connecting.html#a4b39dd46b61ea3e39242213bd4245eb0', 1, 'pqxx::connecting']]],\n- ['with_20metadata_4', ['Results with metadata', ['../accessing-results.html#autotoc_md32', 1, '']]],\n+ ['with_20metadata_4', ['Results with metadata', ['../accessing-results.html#autotoc_md2', 1, '']]],\n ['write_5', ['write', ['../classpqxx_1_1blob.html#a28ff055c22102e0d1bda250d20d265e8', 1, 'pqxx::blob::write()'],\n ['../classpqxx_1_1largeobjectaccess.html#a60ff3072349074e732d0c00e2aefc498', 1, 'pqxx::largeobjectaccess::write(char const buf[], std::size_t len)'],\n ['../classpqxx_1_1largeobjectaccess.html#addc309fe11d4d3e29547b149e4600199', 1, 'pqxx::largeobjectaccess::write(std::string_view buf)']\n ]],\n ['write_5fpolicy_6', ['write_policy', ['../namespacepqxx.html#a3a8103e375bc507b6e9df93e24121912', 1, 'pqxx']]],\n ['write_5frow_7', ['write_row', ['../classpqxx_1_1stream__to.html#ae628c71679b4ec6ebb4378b487e4f543', 1, 'pqxx::stream_to']]],\n ['write_5fvalues_8', ['write_values', ['../classpqxx_1_1stream__to.html#a41ffa59e4f36803f1e9473ed83b3c41d', 1, 'pqxx::stream_to']]]\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_16.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_16.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n- ['your_20type_0', ['Your type', ['../datatypes.html#autotoc_md3', 1, '']]]\n+ ['your_20type_0', ['Your type', ['../datatypes.html#autotoc_md6', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_17.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_17.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,9 @@\n var searchData = [\n- ['zero_20bytes_0', ['Zero bytes', ['../prepared.html#autotoc_md21', 1, '']]],\n+ ['zero_20bytes_0', ['Zero bytes', ['../prepared.html#autotoc_md24', 1, '']]],\n ['zview_1', ['zview', ['../classpqxx_1_1zview.html', 1, 'pqxx::zview'],\n ['../classpqxx_1_1zview.html#a766cc45a178d43b1471fdc025f01535d', 1, 'pqxx::zview::zview(char const text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)}))'],\n ['../classpqxx_1_1zview.html#a581b8c75e8c2c0de579debfca37cd725', 1, 'pqxx::zview::zview(char text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)}))'],\n ['../classpqxx_1_1zview.html#aa713ad5896e247699dcb5be68528b0e8', 1, 'pqxx::zview::zview(std::string_view other) noexcept'],\n ['../classpqxx_1_1zview.html#a3ddf4e0ff127e96f8f68361088f96d2e', 1, 'pqxx::zview::zview(Args &&...args)'],\n ['../classpqxx_1_1zview.html#ad5928543720ef457a1ca229920f33de6', 1, 'pqxx::zview::zview(std::string const &str) noexcept'],\n ['../classpqxx_1_1zview.html#a9297b1b431ea593ea2ec6c8f0beaefa9', 1, 'pqxx::zview::zview(char const str[]) noexcept(noexcept(std::string_view{str}))'],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_2.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -12,17 +12,17 @@\n ['callgate_3c_20errorhandler_20_3e_6', ['callgate< errorhandler >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['callgate_3c_20icursor_5fiterator_20_3e_7', ['callgate< icursor_iterator >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['callgate_3c_20icursorstream_20_3e_8', ['callgate< icursorstream >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['callgate_3c_20result_20const_20_3e_9', ['callgate< result const >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['callgate_3c_20transaction_5fbase_20_3e_10', ['callgate< transaction_base >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['cancel_11', ['cancel', ['../classpqxx_1_1pipeline.html#ab375b0b4e02c7f1a48602c4186fbbbd7', 1, 'pqxx::pipeline']]],\n ['cancel_5fquery_12', ['cancel_query', ['../classpqxx_1_1connection.html#ad1719d51a24c5aa6bd58f03a328a3833', 1, 'pqxx::connection']]],\n- ['case_20sensitivity_13', ['Case sensitivity', ['../classpqxx_1_1connection.html#autotoc_md26', 1, '']]],\n+ ['case_20sensitivity_13', ['Case sensitivity', ['../classpqxx_1_1connection.html#autotoc_md29', 1, '']]],\n ['cat2_14', ['cat2', ['../namespacepqxx_1_1internal.html#ae3d8bb14c1d7c63c57c59b61cf63ff09', 1, 'pqxx::internal']]],\n- ['caveats_15', ['Caveats', ['../binary.html#autotoc_md0', 1, '']]],\n+ ['caveats_15', ['Caveats', ['../binary.html#autotoc_md3', 1, '']]],\n ['cbegin_16', ['cbegin', ['../classpqxx_1_1array.html#aa091e8641639a3802f44b565194d1119', 1, 'pqxx::array']]],\n ['cend_17', ['cend', ['../classpqxx_1_1array.html#a14d57111c8af2324a8e9e8e3df162d9d', 1, 'pqxx::array']]],\n ['channel_18', ['channel', ['../classpqxx_1_1notification__receiver.html#a57732bae437844782bdfe6314f829d9a', 1, 'pqxx::notification_receiver::channel()'],\n ['../namespacepqxx.html#adb60a62bb5ba0afac027989fe3f0869b', 1, 'pqxx::notification::channel']\n ]],\n ['char_5ffinder_5ffunc_19', ['char_finder_func', ['../namespacepqxx_1_1internal.html#a93267405e140acb909fe17d58746f113', 1, 'pqxx::internal']]],\n ['check_5fcast_20', ['check_cast', ['../namespacepqxx.html#af61c9b8bf784c48b540deb2fe1c1f90c', 1, 'pqxx']]],\n@@ -115,15 +115,15 @@\n ['contains_70', ['contains', ['../classpqxx_1_1range.html#a3f5071556ce9c0b77e6e4a006b6c51fe', 1, 'pqxx::range::contains(range< TYPE > const &other) const noexcept(noexcept((*this &other)==other))'],\n ['../classpqxx_1_1range.html#a2fa03d4ad40c545610bdc382e2aff187', 1, 'pqxx::range::contains(TYPE value) const noexcept(noexcept(m_lower.extends_down_to(value)) and noexcept(m_upper.extends_up_to(value)))']\n ]],\n ['conversion_71', ['String conversion', ['../group__stringconversion.html', 1, '']]],\n ['conversion_5ferror_72', ['conversion_error', ['../group__exception.html#structpqxx_1_1conversion__error', 1, 'pqxx']]],\n ['conversion_5foverrun_73', ['conversion_overrun', ['../group__exception.html#structpqxx_1_1conversion__overrun', 1, 'pqxx']]],\n ['convert_74', ['convert', ['../classpqxx_1_1row.html#af81dc44f173ab151bd052f339c10521f', 1, 'pqxx::row']]],\n- ['converting_20types_75', ['Converting types', ['../datatypes.html#autotoc_md1', 1, '']]],\n+ ['converting_20types_75', ['Converting types', ['../datatypes.html#autotoc_md4', 1, '']]],\n ['converts_5ffrom_5fstring_76', ['converts_from_string', ['../structpqxx_1_1string__traits.html#afc7783fd1fd1020f8d400b318f1a0c10', 1, 'pqxx::string_traits']]],\n ['converts_5fto_5fstring_77', ['converts_to_string', ['../structpqxx_1_1string__traits.html#ac537955384e39377e84fd71ad6c80bfd', 1, 'pqxx::string_traits']]],\n ['count_78', ['count', ['../classpqxx_1_1placeholders.html#a254b9519ce26aee58826afcd4dadb778', 1, 'pqxx::placeholders']]],\n ['crbegin_79', ['crbegin', ['../classpqxx_1_1array.html#a2499a20fcc7d9da7e7f303b6e16fb254', 1, 'pqxx::array']]],\n ['cread_80', ['cread', ['../classpqxx_1_1largeobjectaccess.html#ac43433ab08b3ccb34fc72ea4975bcda2', 1, 'pqxx::largeobjectaccess']]],\n ['create_81', ['create', ['../classpqxx_1_1blob.html#a008264c527d6806ea2b190dd8b75dc11', 1, 'pqxx::blob']]],\n ['crend_82', ['crend', ['../classpqxx_1_1array.html#ac2f300e0917b8e0afbc9d77bbc26534a', 1, 'pqxx::array']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_3.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,14 +1,14 @@\n var searchData = [\n ['data_0', ['data', ['../binary.html', 1, 'Binary data'],\n ['../group__escaping-functions.html#aa8e2854a33324620fb8ba3bb0176fa51', 1, 'pqxx::binarystring::data()'],\n- ['../accessing-results.html#autotoc_md30', 1, 'Querying rows of data']\n+ ['../accessing-results.html#autotoc_md0', 1, 'Querying rows of data']\n ]],\n- ['data_20em_20from_20a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md23', 1, '']]],\n- ['data_20em_20into_20a_20table_20em_2', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['data_20em_20from_20a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['data_20em_20into_20a_20table_20em_2', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['data_20types_3', ['Supporting additional data types', ['../datatypes.html', 1, '']]],\n ['data_5fexception_4', ['data_exception', ['../group__exception.html#structpqxx_1_1data__exception', 1, 'pqxx']]],\n ['dbname_5', ['dbname', ['../classpqxx_1_1connection.html#a286e275a7701a8ac96f839cbf8205258', 1, 'pqxx::connection']]],\n ['dbtransaction_6', ['dbtransaction', ['../group__transactions.html#classpqxx_1_1dbtransaction', 1, 'pqxx::dbtransaction'],\n ['../group__transactions.html#a1a93f046a44aa6018495a537ee06e0db', 1, 'pqxx::dbtransaction::dbtransaction(connection &cx, std::string_view tname, std::shared_ptr< std::string > rollback_cmd)'],\n ['../group__transactions.html#ae58d1c6a70b3d5c87ae066c49b2cd671', 1, 'pqxx::dbtransaction::dbtransaction(connection &cx, std::string_view tname)'],\n ['../group__transactions.html#a1d75492f91f1e0de3d970af6e6127a05', 1, 'pqxx::dbtransaction::dbtransaction(connection &cx)']\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_4.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_4.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,18 +1,18 @@\n var searchData = [\n- ['em_20from_20a_20query_20em_0', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md23', 1, '']]],\n- ['em_20into_20a_20table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['em_20from_20a_20query_20em_0', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['em_20into_20a_20table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['empty_2', ['empty', ['../classpqxx_1_1row.html#a05994def0b6c7b426bb13a7a95e9e035', 1, 'pqxx::row::empty()'],\n ['../classpqxx_1_1range.html#ac91cd0e74ae28042d8f887107f0aef76', 1, 'pqxx::range::empty()']\n ]],\n ['empty_5fresult_3', ['empty_result', ['../classpqxx_1_1internal_1_1sql__cursor.html#aa081894fff9516d7dc26a8f724db21aa', 1, 'pqxx::internal::sql_cursor']]],\n ['enc_5fgroup_4', ['enc_group', ['../namespacepqxx_1_1internal.html#a6a4fef10718297b22be8627e18e20fe0', 1, 'pqxx::internal::enc_group(std::string_view encoding_name)'],\n ['../namespacepqxx_1_1internal.html#aef85ea1bf0ba64165cf2719dc25b0424', 1, 'pqxx::internal::enc_group(int)']\n ]],\n- ['encoding_5', ['Encoding', ['../classpqxx_1_1connection.html#autotoc_md29', 1, '']]],\n+ ['encoding_5', ['Encoding', ['../classpqxx_1_1connection.html#autotoc_md32', 1, '']]],\n ['encoding_5fid_6', ['encoding_id', ['../classpqxx_1_1connection.html#a975747afe8d451004680741492b76ae5', 1, 'pqxx::connection']]],\n ['encrypt_5fpassword_7', ['encrypt_password', ['../namespacepqxx.html#a204a7f521845d2fa16035b60eab9ddbb', 1, 'pqxx::encrypt_password()'],\n ['../classpqxx_1_1connection.html#a0724de6ed0e9b65267967adaa34c4f78', 1, 'pqxx::connection::encrypt_password(zview user, zview password, zview algorithm)'],\n ['../classpqxx_1_1connection.html#aecfa98ec5ec1e783ed8e8737b587a9f0', 1, 'pqxx::connection::encrypt_password(char const user[], char const password[], char const *algorithm=nullptr)'],\n ['../namespacepqxx.html#abb5e089e78f78ecb49a5da2c802113bd', 1, 'pqxx::encrypt_password()']\n ]],\n ['end_8', ['end', ['../classpqxx_1_1internal_1_1stream__query.html#afccfe3b559c68913f5161f3a8ee0ad80', 1, 'pqxx::internal::stream_query']]],\n@@ -30,29 +30,29 @@\n ]],\n ['errorhandler_5fconnection_18', ['errorhandler_connection', ['../classpqxx_1_1internal_1_1gate_1_1errorhandler__connection.html', 1, 'pqxx::internal::gate']]],\n ['esc_19', ['esc', ['../classpqxx_1_1connection.html#a6e6bc476091af546f880c9c572f05375', 1, 'pqxx::connection::esc(std::string_view text) const'],\n ['../classpqxx_1_1connection.html#aa29f2e36001c4715e898f2c1a2ca9d5a', 1, 'pqxx::connection::esc(char const text[]) const'],\n ['../classpqxx_1_1connection.html#ab2fd28a1d384854642cc84dcd54cd450', 1, 'pqxx::connection::esc(char const text[], std::size_t maxlen) const'],\n ['../group__escaping-functions.html#ga6710c7298c40ae41b5d8326cbf2ad20e', 1, 'pqxx::transaction_base::esc()']\n ]],\n- ['esc_20functions_20', ['Using the esc functions', ['../escaping.html#autotoc_md14', 1, '']]],\n+ ['esc_20functions_20', ['Using the esc functions', ['../escaping.html#autotoc_md17', 1, '']]],\n ['esc_5fbin_21', ['esc_bin', ['../namespacepqxx_1_1internal.html#a842929aed32b7ff0f3178a7539b595d9', 1, 'pqxx::internal::esc_bin(bytes_view binary_data)'],\n ['../namespacepqxx_1_1internal.html#a89a78387ec5faabb426e0f519cad2b56', 1, 'pqxx::internal::esc_bin(bytes_view binary_data, char buffer[]) noexcept']\n ]],\n ['esc_5flike_22', ['esc_like', ['../classpqxx_1_1connection.html#a7e8f054f91d4e61879039bfdff9b2889', 1, 'pqxx::connection::esc_like()'],\n ['../group__transactions.html#abb28d39ae66b1f36f7297b1e9d1c4e1a', 1, 'pqxx::transaction_base::esc_like(std::string_view bin, char escape_char='\\\\') const']\n ]],\n ['esc_5fraw_23', ['esc_raw', ['../group__transactions.html#a7a64a944468f732eb1a78301ec940e29', 1, 'pqxx::transaction_base::esc_raw()'],\n ['../classpqxx_1_1connection.html#a72b6b843cbeb8555ade27ab831e6d6e9', 1, 'pqxx::connection::esc_raw(bytes_view) const'],\n ['../classpqxx_1_1connection.html#a22d2c852a4e1c159c021b04efc04f8e1', 1, 'pqxx::connection::esc_raw(unsigned char const bin[], std::size_t len) const']\n ]],\n ['escaping_24', ['String escaping', ['../escaping.html', 1, '']]],\n ['escaping_20functions_25', ['String-escaping functions', ['../group__escaping-functions.html', 1, '']]],\n ['exception_20classes_26', ['Exception classes', ['../group__exception.html', 1, '']]],\n- ['exceptions_27', ['Exceptions', ['../classpqxx_1_1connection.html#autotoc_md28', 1, '']]],\n+ ['exceptions_27', ['Exceptions', ['../classpqxx_1_1connection.html#autotoc_md31', 1, '']]],\n ['exclusive_5fbound_28', ['exclusive_bound', ['../classpqxx_1_1exclusive__bound.html', 1, 'pqxx']]],\n ['exec_29', ['exec', ['../group__transactions.html#a85f787b49568288912c3af52e29277dd', 1, 'pqxx::transaction_base::exec(std::stringstream const &query, std::string_view desc)'],\n ['../group__transactions.html#adae522da46299d4cd7c48128403e7c93', 1, 'pqxx::transaction_base::exec(std::string_view query, std::string_view desc)'],\n ['../group__transactions.html#ad453aadd28bda097281b15e1a7f6053f', 1, 'pqxx::transaction_base::exec(std::string_view query)'],\n ['../group__transactions.html#a0a8f8f741d218e84360a5d05e32d0358', 1, 'pqxx::transaction_base::exec(prepped statement)'],\n ['../group__transactions.html#ae64996a5e022cda4c9107fb70d05687f', 1, 'pqxx::transaction_base::exec(prepped statement, params const &parms)']\n ]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_5.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_5.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -15,15 +15,15 @@\n ['find_5fchar_8', ['find_char', ['../namespacepqxx_1_1internal.html#ac7f47e680c4aba12c395e1a854966a8e', 1, 'pqxx::internal']]],\n ['find_5fs_5fascii_5fchar_9', ['find_s_ascii_char', ['../namespacepqxx_1_1internal.html#a47911290f09c40ca080108ea376ffca9', 1, 'pqxx::internal']]],\n ['float_5ftraits_10', ['float_traits', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['float_5ftraits_3c_20double_20_3e_11', ['float_traits< double >', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['float_5ftraits_3c_20float_20_3e_12', ['float_traits< float >', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['float_5ftraits_3c_20long_20double_20_3e_13', ['float_traits< long double >', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['flush_14', ['flush', ['../classpqxx_1_1pipeline.html#a33a890c64efc37d76f3c649f145ff950', 1, 'pqxx::pipeline']]],\n- ['for_20my_20query_15', ['Is streaming right for my query?', ['../streams.html#autotoc_md24', 1, '']]],\n+ ['for_20my_20query_15', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n ['for_5feach_16', ['for_each', ['../classpqxx_1_1result.html#a9302f9b61826f8b7b213f13b30453c0b', 1, 'pqxx::result']]],\n ['for_5fglyphs_17', ['for_glyphs', ['../namespacepqxx_1_1internal.html#a6d813d2723b73f1e674a9aa3229ab060', 1, 'pqxx::internal']]],\n ['for_5fquery_18', ['for_query', ['../group__transactions.html#aed05d9bf4a4d29e8f13ef92174489d86', 1, 'pqxx::transaction_base::for_query(zview query, CALLABLE &&func)'],\n ['../group__transactions.html#a2b72c8c8dec3714ba9bda0c4546e9c2f', 1, 'pqxx::transaction_base::for_query(zview query, CALLABLE &&func, params const &parms)'],\n ['../group__transactions.html#a08e4d94abccb520af509c2923d113c96', 1, 'pqxx::transaction_base::for_query(prepped statement, CALLABLE &&func, params const &parms={})']\n ]],\n ['for_5fstream_19', ['for_stream', ['../group__transactions.html#aaf86f83eff8c7ca945c9921bddb75b14', 1, 'pqxx::transaction_base']]],\n@@ -33,32 +33,32 @@\n ['forbidden_5fconversion_3c_20std_3a_3abyte_20_3e_23', ['forbidden_conversion< std::byte >', ['../structpqxx_1_1forbidden__conversion.html', 1, 'pqxx']]],\n ['forbidden_5fconversion_3c_20unsigned_20char_20_3e_24', ['forbidden_conversion< unsigned char >', ['../structpqxx_1_1forbidden__conversion.html', 1, 'pqxx']]],\n ['foreign_5fkey_5fviolation_25', ['foreign_key_violation', ['../group__exception.html#structpqxx_1_1foreign__key__violation', 1, 'pqxx']]],\n ['format_26', ['format', ['../namespacepqxx.html#afac7ada3a82bcd0e70131f9aede360ce', 1, 'pqxx']]],\n ['formats_27', ['formats', ['../structpqxx_1_1internal_1_1c__params.html#a9a6d51da90f51c90d3044ad9261616b8', 1, 'pqxx::internal::c_params']]],\n ['forward_5fonly_28', ['forward_only', ['../classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2af440221f717464c87f043899cc117cbf', 1, 'pqxx::cursor_base']]],\n ['framework_29', ['Transactor framework', ['../group__transactor.html', 1, '']]],\n- ['from_20a_20query_20em_30', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md23', 1, '']]],\n+ ['from_20a_20query_20em_30', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n ['from_5fbuf_31', ['from_buf', ['../classpqxx_1_1blob.html#ab1f3e5e083f3c69ecc32cc87aa4d8f90', 1, 'pqxx::blob']]],\n ['from_5ffile_32', ['from_file', ['../classpqxx_1_1blob.html#a41ea99b2f59cf0946986c14371915980', 1, 'pqxx::blob::from_file(dbtransaction &, char const path[])'],\n ['../classpqxx_1_1blob.html#acd468aa64cdd17c3dec34cb059721842', 1, 'pqxx::blob::from_file(dbtransaction &, char const path[], oid)']\n ]],\n ['from_5fquery_33', ['from_query', ['../namespacepqxx.html#a31fff381823ee2bc5af1f47139b3b48c', 1, 'pqxx']]],\n ['from_5fquery_5ft_34', ['from_query_t', ['../namespacepqxx.html#structpqxx_1_1from__query__t', 1, 'pqxx']]],\n ['from_5fstring_35', ['from_string', ['../structpqxx_1_1string__traits.html#a09bce703d8e0234e84605038189381e8', 1, 'pqxx::string_traits::from_string()'],\n ['../structpqxx_1_1string__traits_3_01zview_01_4.html#a3b78a0d0dfbd5bf56c18d02e8a2ae184', 1, 'pqxx::string_traits< zview >::from_string()'],\n ['../structpqxx_1_1string__traits_3_01std_1_1string__view_01_4.html#a98acdd0a20f834be7670763ae0f93bcb', 1, 'pqxx::string_traits< std::string_view >::from_string()'],\n ['../namespacepqxx.html#ae3697fd4a0fc1fcdb40937e16e1ec878', 1, 'pqxx::from_string()'],\n ['../structpqxx_1_1string__traits_3_01char_0fN_0e_4.html#a45384953864d4858e8fa8549e4eeabf7', 1, 'pqxx::string_traits< char[N]>::from_string()'],\n ['../structpqxx_1_1string__traits_3_01char_01_5_01_4.html#af0ea80b9d8301a1a3211a1a5891521ea', 1, 'pqxx::string_traits< char * >::from_string()'],\n ['../structpqxx_1_1string__traits_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html#a2672f0ae1c9d445d7c63929d8278b727', 1, 'pqxx::string_traits< std::variant< T... > >::from_string()']\n ]],\n- ['from_5fstring_20tt_36', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md7', 1, '']]],\n+ ['from_5fstring_20tt_36', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n ['from_5fstring_3c_20std_3a_3anullptr_5ft_20_3e_37', ['from_string< std::nullptr_t >', ['../namespacepqxx.html#ac676a8d392370a92f0a2ef0f0bbf2043', 1, 'pqxx']]],\n ['from_5ftable_38', ['from_table', ['../namespacepqxx.html#a66648ed503eb162846c41247daa32660', 1, 'pqxx']]],\n ['from_5ftable_5ft_39', ['from_table_t', ['../namespacepqxx.html#structpqxx_1_1from__table__t', 1, 'pqxx']]],\n ['front_40', ['front', ['../classpqxx_1_1array.html#af0f6cbf8e3621dc46e59b9563ed436b1', 1, 'pqxx::array']]],\n ['functions_41', ['functions', ['../group__escaping-functions.html', 1, 'String-escaping functions'],\n- ['../escaping.html#autotoc_md14', 1, 'Using the esc functions'],\n+ ['../escaping.html#autotoc_md17', 1, 'Using the esc functions'],\n ['../group__utility.html', 1, 'Utility functions']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_6.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_6.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,9 @@\n var searchData = [\n- ['generating_20placeholders_0', ['Generating placeholders', ['../parameters.html#autotoc_md16', 1, '']]],\n+ ['generating_20placeholders_0', ['Generating placeholders', ['../parameters.html#autotoc_md19', 1, '']]],\n ['generic_5finto_5fbuf_1', ['generic_into_buf', ['../namespacepqxx_1_1internal.html#ad36377dfe85994d97cb1aaa942100b6b', 1, 'pqxx::internal']]],\n ['get_2', ['get', ['../classpqxx_1_1placeholders.html#a4bdc5f0c544e544a62af6d2fc2309c58', 1, 'pqxx::placeholders::get()'],\n ['../classpqxx_1_1field.html#adb7ec4ecef586ebbab147b5b181dfff3', 1, 'pqxx::field::get()'],\n ['../group__escaping-functions.html#a22a65469db21930a72c82178f37b568a', 1, 'pqxx::binarystring::get()']\n ]],\n ['get_5fchar_5ffinder_3', ['get_char_finder', ['../namespacepqxx_1_1internal.html#a16e6f54fdf88d18355e1a3a570fa175f', 1, 'pqxx::internal']]],\n ['get_5fclient_5fencoding_4', ['get_client_encoding', ['../classpqxx_1_1connection.html#a777daa7f80f3e55df9ee50e236f74653', 1, 'pqxx::connection']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_8.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_8.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -3,47 +3,47 @@\n ['icursorstream_5ficursor_5fiterator_1', ['icursorstream_icursor_iterator', ['../classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator.html', 1, 'pqxx::internal::gate']]],\n ['id_2', ['id', ['../classpqxx_1_1largeobjectaccess.html#af210c3d0b39442a5ce9b3b1508d96c84', 1, 'pqxx::largeobjectaccess::id()'],\n ['../classpqxx_1_1largeobject.html#af210c3d0b39442a5ce9b3b1508d96c84', 1, 'pqxx::largeobject::id()']\n ]],\n ['ignore_5funused_3', ['ignore_unused', ['../namespacepqxx.html#a9dd8124be2fccf97ece84ae958c175a0', 1, 'pqxx']]],\n ['in_5fdoubt_5ferror_4', ['in_doubt_error', ['../group__exception.html#structpqxx_1_1in__doubt__error', 1, 'pqxx']]],\n ['inclusive_5fbound_5', ['inclusive_bound', ['../classpqxx_1_1inclusive__bound.html', 1, 'pqxx']]],\n- ['injection_6', ['SQL injection', ['../escaping.html#autotoc_md13', 1, '']]],\n+ ['injection_6', ['SQL injection', ['../escaping.html#autotoc_md16', 1, '']]],\n ['insert_7', ['insert', ['../classpqxx_1_1pipeline.html#a808f4fc39c77e490171d54a5554b337d', 1, 'pqxx::pipeline']]],\n ['inserted_5foid_8', ['inserted_oid', ['../classpqxx_1_1result.html#a5094a7be5f02f0f4c641fbd5ccb1a4da', 1, 'pqxx::result']]],\n ['insufficient_5fprivilege_9', ['insufficient_privilege', ['../group__exception.html#structpqxx_1_1insufficient__privilege', 1, 'pqxx']]],\n ['insufficient_5fresources_10', ['insufficient_resources', ['../group__exception.html#structpqxx_1_1insufficient__resources', 1, 'pqxx']]],\n ['integral_5ftraits_11', ['integral_traits', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20int_20_3e_12', ['integral_traits< int >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20long_20_3e_13', ['integral_traits< long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20long_20long_20_3e_14', ['integral_traits< long long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20short_20_3e_15', ['integral_traits< short >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20_3e_16', ['integral_traits< unsigned >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20long_20_3e_17', ['integral_traits< unsigned long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20long_20long_20_3e_18', ['integral_traits< unsigned long long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20short_20_3e_19', ['integral_traits< unsigned short >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integrity_5fconstraint_5fviolation_20', ['integrity_constraint_violation', ['../group__exception.html#structpqxx_1_1integrity__constraint__violation', 1, 'pqxx']]],\n- ['interlude_3a_20null_20values_21', ['Interlude: null values', ['../streams.html#autotoc_md22', 1, '']]],\n+ ['interlude_3a_20null_20values_21', ['Interlude: null values', ['../streams.html#autotoc_md25', 1, '']]],\n ['internal_5ferror_22', ['internal_error', ['../group__exception.html#structpqxx_1_1internal__error', 1, 'pqxx']]],\n- ['into_20a_20table_20em_23', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['into_20a_20table_20em_23', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['into_5fbuf_24', ['into_buf', ['../structpqxx_1_1string__traits.html#ad0fa1a3d75ba56a58c39822d25c14a0c', 1, 'pqxx::string_traits']]],\n- ['into_5fbuf_20tt_25', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n+ ['into_5fbuf_20tt_25', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n ['invalid_5fcursor_5fname_26', ['invalid_cursor_name', ['../group__exception.html#structpqxx_1_1invalid__cursor__name', 1, 'pqxx']]],\n ['invalid_5fcursor_5fstate_27', ['invalid_cursor_state', ['../group__exception.html#structpqxx_1_1invalid__cursor__state', 1, 'pqxx']]],\n ['invalid_5fsql_5fstatement_5fname_28', ['invalid_sql_statement_name', ['../group__exception.html#structpqxx_1_1invalid__sql__statement__name', 1, 'pqxx']]],\n- ['is_20streaming_20right_20for_20my_20query_29', ['Is streaming right for my query?', ['../streams.html#autotoc_md24', 1, '']]],\n+ ['is_20streaming_20right_20for_20my_20query_29', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n ['is_5fdigit_30', ['is_digit', ['../namespacepqxx_1_1internal.html#ace1c90d8dab0dafc4764c89ff09fa938', 1, 'pqxx::internal']]],\n ['is_5fexclusive_31', ['is_exclusive', ['../classpqxx_1_1range__bound.html#a5e36faad60586213187bbe1735f00c5b', 1, 'pqxx::range_bound']]],\n ['is_5ffinished_32', ['is_finished', ['../classpqxx_1_1pipeline.html#adb318eea9147fb82d67c43a430722283', 1, 'pqxx::pipeline']]],\n ['is_5finclusive_33', ['is_inclusive', ['../classpqxx_1_1range__bound.html#abe993384f178fe7ac1143e88a3dbcaeb', 1, 'pqxx::range_bound']]],\n ['is_5flimited_34', ['is_limited', ['../classpqxx_1_1range__bound.html#a62434321bfbc5f66bf3921ea2fb31274', 1, 'pqxx::range_bound']]],\n ['is_5fnull_35', ['is_null', ['../structpqxx_1_1no__null.html#ab53a311556c321a9dd10229b5b64773b', 1, 'pqxx::no_null::is_null()'],\n ['../structpqxx_1_1nullness.html#a309fcad467f815a9fbccbea0c2a6608a', 1, 'pqxx::nullness::is_null()'],\n ['../classpqxx_1_1field.html#ad3f84cc67637ba99b7128db75603d03c', 1, 'pqxx::field::is_null()']\n ]],\n ['is_5fopen_36', ['is_open', ['../classpqxx_1_1connection.html#a1e401dd0dbd1be80176a691a864f652b', 1, 'pqxx::connection']]],\n- ['is_5funquoted_5fsafe_20tt_37', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n+ ['is_5funquoted_5fsafe_20tt_37', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md14', 1, '']]],\n ['isolation_5flevel_38', ['isolation_level', ['../namespacepqxx.html#a8f05a60f9e1f7dc4e4af5dce6b987c8c', 1, 'pqxx']]],\n ['iter_39', ['iter', ['../classpqxx_1_1stream__from.html#acb595a8190351f2a8b594518351c40f3', 1, 'pqxx::stream_from::iter()'],\n ['../classpqxx_1_1result.html#afb672c73ca193aaf2fc5ba4d5c8a96f8', 1, 'pqxx::result::iter()']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_b.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_b.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -4,11 +4,11 @@\n ['m_5fend_2', ['m_end', ['../classpqxx_1_1row.html#a0ec7d11b9721ab7bb54ec5df113ab8f5', 1, 'pqxx::row']]],\n ['m_5findex_3', ['m_index', ['../classpqxx_1_1row.html#a859f508b95f424531247427189a529ef', 1, 'pqxx::row']]],\n ['m_5fresult_4', ['m_result', ['../classpqxx_1_1row.html#a83a21b69ee9c581fc449d24dc33d8e65', 1, 'pqxx::row']]],\n ['make_5fc_5fparams_5', ['make_c_params', ['../classpqxx_1_1params.html#a6ecf59a6ac483fe23e051ae654abc2b0', 1, 'pqxx::params']]],\n ['map_5fascii_5fsearch_5fgroup_6', ['map_ascii_search_group', ['../namespacepqxx_1_1internal.html#ae26a85861af19d77bcc12ae448531d32', 1, 'pqxx::internal']]],\n ['max_5fparams_7', ['max_params', ['../classpqxx_1_1placeholders.html#a066068da0d7ca3d0b38ee47ce0098843', 1, 'pqxx::placeholders']]],\n ['member_5fargs_5ff_8', ['member_args_f', ['../namespacepqxx_1_1internal.html#a70ec299b53c60d248d0766cc11faacf1', 1, 'pqxx::internal']]],\n- ['metadata_9', ['Results with metadata', ['../accessing-results.html#autotoc_md32', 1, '']]],\n- ['multiple_20parameters_10', ['Multiple parameters', ['../parameters.html#autotoc_md15', 1, '']]],\n- ['my_20query_11', ['Is streaming right for my query?', ['../streams.html#autotoc_md24', 1, '']]]\n+ ['metadata_9', ['Results with metadata', ['../accessing-results.html#autotoc_md2', 1, '']]],\n+ ['multiple_20parameters_10', ['Multiple parameters', ['../parameters.html#autotoc_md18', 1, '']]],\n+ ['my_20query_11', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_c.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_c.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -2,15 +2,15 @@\n ['name_0', ['name', ['../classpqxx_1_1cursor__base.html#a580405381178880d7804180c0c396fe5', 1, 'pqxx::cursor_base::name()'],\n ['../classpqxx_1_1stateless__cursor.html#a0be6e4435c96296ab1f91f4769235dae', 1, 'pqxx::stateless_cursor::name()'],\n ['../classpqxx_1_1field.html#accb1b29590adaf1c265279fc410b2e59', 1, 'pqxx::field::name()'],\n ['../group__transactions.html#ae59455e1e8da50f0cb5901c1f72ff66e', 1, 'pqxx::transaction_base::name()'],\n ['../classpqxx_1_1transaction__focus.html#a4ccffff2688e9e7757acc385be1d781c', 1, 'pqxx::transaction_focus::name()']\n ]],\n ['name_5fencoding_1', ['name_encoding', ['../namespacepqxx_1_1internal.html#a51e0c4e1a45c85a3b625dc3d764684f5', 1, 'pqxx::internal']]],\n- ['new_20type_2', ['Supporting a new type', ['../datatypes.html#autotoc_md2', 1, '']]],\n+ ['new_20type_2', ['Supporting a new type', ['../datatypes.html#autotoc_md5', 1, '']]],\n ['next_3', ['next', ['../classpqxx_1_1cursor__base.html#a8084649c4f6be54a3c688908c1b9edf9', 1, 'pqxx::cursor_base::next()'],\n ['../classpqxx_1_1placeholders.html#aef09cd2fcb858917f33752a85e063bde', 1, 'pqxx::placeholders::next()']\n ]],\n ['no_5fbound_4', ['no_bound', ['../structpqxx_1_1no__bound.html', 1, 'pqxx']]],\n ['no_5fnull_5', ['no_null', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n ['no_5fnull_3c_20binarystring_20_3e_6', ['no_null< binarystring >', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n ['no_5fnull_3c_20bytes_20_3e_7', ['no_null< bytes >', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n@@ -27,32 +27,32 @@\n ['no_5fnull_3c_20zview_20_3e_18', ['no_null< zview >', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n ['no_5frows_19', ['no_rows', ['../classpqxx_1_1result.html#aee29dae44071175c8c6dd4a046a060c5', 1, 'pqxx::result']]],\n ['nontransaction_20', ['nontransaction', ['../group__transactions.html#classpqxx_1_1nontransaction', 1, 'pqxx::nontransaction'],\n ['../group__transactions.html#ab9cf41ee092dff1c6f1e07df23ba0cfd', 1, 'pqxx::nontransaction::nontransaction()']\n ]],\n ['not_5feof_21', ['not_eof', ['../structpqxx_1_1byte__char__traits.html#a7c89d44e821a11f8336b70dc7891d7ac', 1, 'pqxx::byte_char_traits']]],\n ['not_5fnull_5fviolation_22', ['not_null_violation', ['../group__exception.html#structpqxx_1_1not__null__violation', 1, 'pqxx']]],\n- ['note_23', ['Performance note', ['../prepared.html#autotoc_md20', 1, '']]],\n+ ['note_23', ['Performance note', ['../prepared.html#autotoc_md23', 1, '']]],\n ['nothing_24', ['nothing', ['../namespacepqxx.html#adabe80e8385e85d663acc6e44332070da867e5843857acbeb150fcaf025825a6f', 1, 'pqxx']]],\n ['notice_5fwaiters_25', ['notice_waiters', ['../structpqxx_1_1internal_1_1notice__waiters.html', 1, 'pqxx::internal']]],\n ['notification_26', ['notification', ['../namespacepqxx.html#structpqxx_1_1notification', 1, 'pqxx']]],\n ['notification_5fhandler_27', ['notification_handler', ['../classpqxx_1_1connection.html#a5c68dd44c2a9e64eb2022623659ebc09', 1, 'pqxx::connection']]],\n ['notification_5freceiver_28', ['notification_receiver', ['../classpqxx_1_1notification__receiver.html#a44ffe1ed8ec8020f4106ef8427e09d17', 1, 'pqxx::notification_receiver::notification_receiver(notification_receiver const &)=delete'],\n ['../classpqxx_1_1notification__receiver.html#a4779f6b712bf7a1d5ab3253b8d274db9', 1, 'pqxx::notification_receiver::notification_receiver(connection &cx, std::string_view channel)'],\n ['../classpqxx_1_1notification__receiver.html', 1, 'pqxx::notification_receiver']\n ]],\n ['notifications_20and_20receivers_29', ['Notifications and Receivers', ['../group__notification.html', 1, '']]],\n ['notify_30', ['notify', ['../group__transactions.html#aff9f3e6d1e0479d8c6774db391bf9b8a', 1, 'pqxx::transaction_base']]],\n ['null_31', ['null', ['../structpqxx_1_1nullness.html#a475f5e490aabd4934aa63a621ecfd0ab', 1, 'pqxx::nullness::null()'],\n ['../structpqxx_1_1nullness_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html#a62b23c197cb393e146d9720ed4aed004', 1, 'pqxx::nullness< std::variant< T... > >::null()']\n ]],\n- ['null_20values_32', ['Interlude: null values', ['../streams.html#autotoc_md22', 1, '']]],\n+ ['null_20values_32', ['Interlude: null values', ['../streams.html#autotoc_md25', 1, '']]],\n ['null_5fvalue_33', ['null_value', ['../classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea9e374dadbd88854fd5b2631a6b83a295', 1, 'pqxx::array_parser']]],\n ['nullness_34', ['nullness', ['../structpqxx_1_1nullness.html', 1, 'pqxx']]],\n- ['nullness_20tt_35', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md5', 1, '']]],\n+ ['nullness_20tt_35', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md8', 1, '']]],\n ['nullness_3c_20binarystring_20_3e_36', ['nullness< binarystring >', ['../structpqxx_1_1nullness_3_01binarystring_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20bytes_20_3e_37', ['nullness< bytes >', ['../structpqxx_1_1nullness_3_01bytes_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20bytes_5fview_20_3e_38', ['nullness< bytes_view >', ['../structpqxx_1_1nullness_3_01bytes__view_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20char_20_2a_20_3e_39', ['nullness< char * >', ['../structpqxx_1_1nullness_3_01char_01_5_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20char_20const_20_2a_20_3e_40', ['nullness< char const * >', ['../structpqxx_1_1nullness_3_01char_01const_01_5_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20char_5bn_5d_3e_41', ['nullness< char[N]>', ['../structpqxx_1_1nullness_3_01char_0fN_0e_4.html', 1, 'pqxx']]],\n ['nullness_3c_20enum_2c_20std_3a_3aenable_5fif_5ft_3c_20std_3a_3ais_5fenum_5fv_3c_20enum_20_3e_20_3e_20_3e_42', ['nullness< ENUM, std::enable_if_t< std::is_enum_v< ENUM > > >', ['../structpqxx_1_1nullness_3_01ENUM_00_01std_1_1enable__if__t_3_01std_1_1is__enum__v_3_01ENUM_01_4_01_4_01_4.html', 1, 'pqxx']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_d.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_d.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,9 @@\n var searchData = [\n- ['of_20data_0', ['Querying rows of data', ['../accessing-results.html#autotoc_md30', 1, '']]],\n+ ['of_20data_0', ['Querying rows of data', ['../accessing-results.html#autotoc_md0', 1, '']]],\n ['oid_1', ['oid', ['../namespacepqxx.html#ac9eb697318d27a5b023609e0160f1ade', 1, 'pqxx']]],\n ['oid_5fnone_2', ['oid_none', ['../namespacepqxx.html#aea8d8e21558dad5b03ac2f73910c93e1', 1, 'pqxx']]],\n ['one_5ffield_3', ['one_field', ['../classpqxx_1_1result.html#a2caa168a1984a277b29d70ccbbdf50c4', 1, 'pqxx::result']]],\n ['one_5frow_4', ['one_row', ['../classpqxx_1_1result.html#a0c06b4a276d79960cfdbbfb1be070b48', 1, 'pqxx::result']]],\n ['oops_5fforbidden_5fconversion_5', ['oops_forbidden_conversion', ['../namespacepqxx.html#a807bfd03b5fb6cf1bbcd9d728f2dd4e0', 1, 'pqxx']]],\n ['open_5fr_6', ['open_r', ['../classpqxx_1_1blob.html#a0d4a50c0d8862f98ce728647987f6d51', 1, 'pqxx::blob']]],\n ['openmode_7', ['openmode', ['../classpqxx_1_1largeobjectaccess.html#a6b09598014eca3c4c4b8a0c1495185d3', 1, 'pqxx::largeobjectaccess']]],\n@@ -11,53 +11,53 @@\n ['operator_20bool_9', ['operator bool', ['../classpqxx_1_1stream__from.html#a049c94dcc710918f0b5c7416b638aefa', 1, 'pqxx::stream_from::operator bool()'],\n ['../classpqxx_1_1stream__to.html#a46f5520a97cc4eecbc75e4fbbfc2e9e3', 1, 'pqxx::stream_to::operator bool()']\n ]],\n ['operator_20range_3c_20dest_20_3e_10', ['operator range< DEST >', ['../classpqxx_1_1range.html#a9fd52675604651358ccc941bcf0c63fc', 1, 'pqxx::range']]],\n ['operator_21_11', ['operator!', ['../classpqxx_1_1stream__to.html#a12b525e57012cb5c2ba3481c959af914', 1, 'pqxx::stream_to::operator!()'],\n ['../classpqxx_1_1stream__from.html#afdb9ffc4e6baa48bd6f2169cba7020d0', 1, 'pqxx::stream_from::operator!()']\n ]],\n- ['operator_21_3d_12', ['operator!=', ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a30bf5388b274d3e8b27568a03f061762', 1, 'pqxx::internal::stream_from_input_iterator::operator!=()'],\n+ ['operator_21_3d_12', ['operator!=', ['../classpqxx_1_1field.html#a768ec9ffee118b5eb5a4c371afbacc5a', 1, 'pqxx::field::operator!=()'],\n+ ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a30bf5388b274d3e8b27568a03f061762', 1, 'pqxx::internal::stream_from_input_iterator::operator!=()'],\n ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a207326fe0c7f51eccfa61be42d20188e', 1, 'pqxx::internal::stream_query_input_iterator::operator!=()'],\n ['../classpqxx_1_1largeobject.html#ad326bef1920744c3d450406f43dbc6b5', 1, 'pqxx::largeobject::operator!=()'],\n ['../classpqxx_1_1result.html#a4e047a3746e1e9f37efd0cedfc4a891b', 1, 'pqxx::result::operator!=()'],\n- ['../classpqxx_1_1largeobjectaccess.html#ad326bef1920744c3d450406f43dbc6b5', 1, 'pqxx::largeobjectaccess::operator!=()'],\n- ['../classpqxx_1_1field.html#a768ec9ffee118b5eb5a4c371afbacc5a', 1, 'pqxx::field::operator!=()']\n+ ['../classpqxx_1_1largeobjectaccess.html#ad326bef1920744c3d450406f43dbc6b5', 1, 'pqxx::largeobjectaccess::operator!=()']\n ]],\n ['operator_22_22_5fzv_13', ['operator""_zv', ['../namespacepqxx.html#ab7084d1a68918eb90a59bb75cc1b78e6', 1, 'pqxx']]],\n ['operator_26_14', ['operator&', ['../classpqxx_1_1range.html#a2e0b08f5564191f8c0bdc9fbdb273d62', 1, 'pqxx::range']]],\n- ['operator_28_29_15', ['operator()', ['../classpqxx_1_1notification__receiver.html#abb6fd7dd38319fc35e354e23d7f337d0', 1, 'pqxx::notification_receiver::operator()()'],\n+ ['operator_28_29_15', ['operator()', ['../classpqxx_1_1errorhandler.html#a8404c336eaefab488ab326cbcb704993', 1, 'pqxx::errorhandler::operator()()'],\n ['../classpqxx_1_1quiet__errorhandler.html#a051f8a9a1019974daffc47c75addc46e', 1, 'pqxx::quiet_errorhandler::operator()()'],\n- ['../classpqxx_1_1errorhandler.html#a8404c336eaefab488ab326cbcb704993', 1, 'pqxx::errorhandler::operator()()']\n+ ['../classpqxx_1_1notification__receiver.html#abb6fd7dd38319fc35e354e23d7f337d0', 1, 'pqxx::notification_receiver::operator()()']\n ]],\n- ['operator_2a_16', ['operator*', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a9c57abc31dc9b272b395c6b2c216ad7a', 1, 'pqxx::internal::stream_query_input_iterator::operator*()'],\n- ['../classpqxx_1_1const__reverse__result__iterator.html#ae87d3164c4be3ececdde872582aacc61', 1, 'pqxx::const_reverse_result_iterator::operator*()'],\n+ ['operator_2a_16', ['operator*', ['../classpqxx_1_1const__reverse__result__iterator.html#ae87d3164c4be3ececdde872582aacc61', 1, 'pqxx::const_reverse_result_iterator::operator*()'],\n+ ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a9c57abc31dc9b272b395c6b2c216ad7a', 1, 'pqxx::internal::stream_query_input_iterator::operator*()'],\n ['../classpqxx_1_1const__result__iterator.html#ae87d3164c4be3ececdde872582aacc61', 1, 'pqxx::const_result_iterator::operator*()']\n ]],\n- ['operator_2b_2b_17', ['operator++', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a0c261e07d71c54c3df1873bd7682f141', 1, 'pqxx::internal::stream_query_input_iterator::operator++() &'],\n- ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#abc1cf24fa7ceff09abe835eeeffdb4e2', 1, 'pqxx::internal::stream_query_input_iterator::operator++(int)']\n+ ['operator_2b_2b_17', ['operator++', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#abc1cf24fa7ceff09abe835eeeffdb4e2', 1, 'pqxx::internal::stream_query_input_iterator::operator++(int)'],\n+ ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a0c261e07d71c54c3df1873bd7682f141', 1, 'pqxx::internal::stream_query_input_iterator::operator++() &']\n ]],\n- ['operator_2d_18', ['operator-', ['../classpqxx_1_1const__reverse__result__iterator.html#a4ce5bf0280d6dce47212969b614c483a', 1, 'pqxx::const_reverse_result_iterator::operator-(difference_type) const'],\n- ['../classpqxx_1_1const__reverse__result__iterator.html#ab3a7ba13b137fbd1b12748b788c7b3d7', 1, 'pqxx::const_reverse_result_iterator::operator-(const_result_iterator const &) const']\n+ ['operator_2d_18', ['operator-', ['../classpqxx_1_1const__reverse__result__iterator.html#ab3a7ba13b137fbd1b12748b788c7b3d7', 1, 'pqxx::const_reverse_result_iterator::operator-(const_result_iterator const &) const'],\n+ ['../classpqxx_1_1const__reverse__result__iterator.html#a4ce5bf0280d6dce47212969b614c483a', 1, 'pqxx::const_reverse_result_iterator::operator-(difference_type) const']\n ]],\n ['operator_2d_3e_19', ['operator->', ['../classpqxx_1_1const__result__iterator.html#a858d47eebdb1b6055a9f75c32d19d4d2', 1, 'pqxx::const_result_iterator']]],\n- ['operator_3c_20', ['operator<', ['../classpqxx_1_1largeobjectaccess.html#a90efd57a423686ee47c4dbb6b5c3b187', 1, 'pqxx::largeobjectaccess::operator<()'],\n- ['../classpqxx_1_1largeobject.html#a90efd57a423686ee47c4dbb6b5c3b187', 1, 'pqxx::largeobject::operator<()']\n+ ['operator_3c_20', ['operator<', ['../classpqxx_1_1largeobject.html#a90efd57a423686ee47c4dbb6b5c3b187', 1, 'pqxx::largeobject::operator<()'],\n+ ['../classpqxx_1_1largeobjectaccess.html#a90efd57a423686ee47c4dbb6b5c3b187', 1, 'pqxx::largeobjectaccess::operator<()']\n ]],\n- ['operator_3c_3c_21', ['operator<<', ['../classpqxx_1_1stream__to.html#aa42e3e2ce5942b5d106356fe196a00a0', 1, 'pqxx::stream_to::operator<<()'],\n- ['../namespacepqxx.html#a2dbd9e7b5cda93feff6cde1629e73ff2', 1, 'pqxx::operator<<()'],\n- ['../classpqxx_1_1stream__to.html#ac25d66567d17ddd648abe02c4583d981', 1, 'pqxx::stream_to::operator<<()']\n+ ['operator_3c_3c_21', ['operator<<', ['../classpqxx_1_1stream__to.html#ac25d66567d17ddd648abe02c4583d981', 1, 'pqxx::stream_to::operator<<(Row const &row)'],\n+ ['../classpqxx_1_1stream__to.html#aa42e3e2ce5942b5d106356fe196a00a0', 1, 'pqxx::stream_to::operator<<(stream_from &)'],\n+ ['../namespacepqxx.html#a2dbd9e7b5cda93feff6cde1629e73ff2', 1, 'pqxx::operator<<()']\n ]],\n ['operator_3c_3d_22', ['operator<=', ['../classpqxx_1_1largeobject.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab', 1, 'pqxx::largeobject::operator<=()'],\n ['../classpqxx_1_1largeobjectaccess.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab', 1, 'pqxx::largeobjectaccess::operator<=()']\n ]],\n- ['operator_3d_23', ['operator=', ['../classpqxx_1_1notification__receiver.html#afcf701e264edd9a14513765f542b446d', 1, 'pqxx::notification_receiver::operator=()'],\n+ ['operator_3d_23', ['operator=', ['../classpqxx_1_1blob.html#a95c07a00765b77f9835ca869fe43287a', 1, 'pqxx::blob::operator=()'],\n ['../classpqxx_1_1result.html#a399cde6713d4b415e229d67bfba4eccd', 1, 'pqxx::result::operator=(result &&rhs) noexcept=default'],\n ['../classpqxx_1_1result.html#ada6d82fe35f72cb45623fba4f8066279', 1, 'pqxx::result::operator=(result const &rhs) noexcept=default'],\n- ['../classpqxx_1_1connection.html#a73e86c75f2d23788c83ce931b74ec108', 1, 'pqxx::connection::operator=()'],\n- ['../classpqxx_1_1blob.html#a95c07a00765b77f9835ca869fe43287a', 1, 'pqxx::blob::operator=()']\n+ ['../classpqxx_1_1notification__receiver.html#afcf701e264edd9a14513765f542b446d', 1, 'pqxx::notification_receiver::operator=()'],\n+ ['../classpqxx_1_1connection.html#a73e86c75f2d23788c83ce931b74ec108', 1, 'pqxx::connection::operator=()']\n ]],\n ['operator_3d_3d_24', ['operator==', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a27cb5d24969b0b2102987fb8f3ec3b62', 1, 'pqxx::internal::stream_query_input_iterator::operator==()'],\n ['../classpqxx_1_1internal_1_1result__iter.html#ace9b554271a8b57ab7230da00ef319ea', 1, 'pqxx::internal::result_iter::operator==()'],\n ['../classpqxx_1_1field.html#a0724bd55b4cccf26db6960ef27851fe8', 1, 'pqxx::field::operator==()'],\n ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a23573499bd91d017c08dd9438bc49ad4', 1, 'pqxx::internal::stream_from_input_iterator::operator==()'],\n ['../classpqxx_1_1largeobjectaccess.html#a00f0df981995f7ca9991ba7162bdaa16', 1, 'pqxx::largeobjectaccess::operator==()'],\n ['../classpqxx_1_1result.html#a47fef290e0e6db165a4d73b52874fd1c', 1, 'pqxx::result::operator==()'],\n@@ -74,13 +74,13 @@\n ['../classpqxx_1_1stream__from.html#a0ea468c0d02f2a2c9c2c7ff41dbece3c', 1, 'pqxx::stream_from::operator>>(std::variant< Vs... > &)=delete']\n ]],\n ['operator_5b_5d_28', ['operator[]', ['../classpqxx_1_1result.html#a501bfb79335ea4c51bc55f9c0aa6c75f', 1, 'pqxx::result::operator[]()'],\n ['../classpqxx_1_1row.html#aee26781d8c0000bdc1d80c1624b17c81', 1, 'pqxx::row::operator[]()'],\n ['../classpqxx_1_1array.html#a36d27b1f7e366a07944115a382aa4087', 1, 'pqxx::array::operator[]()']\n ]],\n ['opt_5frow_29', ['opt_row', ['../classpqxx_1_1result.html#a5d0d4d8714ea814f1d80d11578976098', 1, 'pqxx::result']]],\n- ['optional_3a_20specialise_20tt_20is_5funquoted_5fsafe_20tt_30', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n- ['optional_3a_20specialise_20tt_20param_5fformat_20tt_31', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n+ ['optional_3a_20specialise_20tt_20is_5funquoted_5fsafe_20tt_30', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md14', 1, '']]],\n+ ['optional_3a_20specialise_20tt_20param_5fformat_20tt_31', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md15', 1, '']]],\n ['out_5fof_5fmemory_32', ['out_of_memory', ['../group__exception.html#structpqxx_1_1out__of__memory', 1, 'pqxx']]],\n ['owned_33', ['owned', ['../classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a3ace6a7a5ca4ec3b486f2f35fd2420b0', 1, 'pqxx::cursor_base']]],\n ['ownership_5fpolicy_34', ['ownership_policy', ['../classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490', 1, 'pqxx::cursor_base']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_e.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_e.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,16 +1,16 @@\n var searchData = [\n ['param_5fformat_0', ['param_format', ['../namespacepqxx.html#a9a3f3a97fd46497a008aaca323cc1958', 1, 'pqxx::param_format(std::vector< T, Args... > const &)'],\n ['../namespacepqxx.html#a194db2bb59425a2ff10187d2e81189d3', 1, 'pqxx::param_format(std::vector< std::byte, Args... > const &)'],\n ['../namespacepqxx.html#a5a183a730292cabcf9e64fdc6eb0faa5', 1, 'pqxx::param_format(std::array< T, args... > const &)'],\n ['../namespacepqxx.html#a0eaf71a6f4744e3d401d2f179d477e4a', 1, 'pqxx::param_format(std::array< std::byte, args... > const &)']\n ]],\n- ['param_5fformat_20tt_1', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n- ['parameters_2', ['parameters', ['../parameters.html#autotoc_md15', 1, 'Multiple parameters'],\n- ['../prepared.html#autotoc_md18', 1, 'Parameters'],\n+ ['param_5fformat_20tt_1', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md15', 1, '']]],\n+ ['parameters_2', ['parameters', ['../parameters.html#autotoc_md18', 1, 'Multiple parameters'],\n+ ['../prepared.html#autotoc_md21', 1, 'Parameters'],\n ['../parameters.html', 1, 'Statement parameters']\n ]],\n ['params_3', ['params', ['../classpqxx_1_1params.html', 1, 'pqxx::params'],\n ['../classpqxx_1_1params.html#ad15fdabb428bc93cdb0a6c4354a9069c', 1, 'pqxx::params::params()']\n ]],\n ['parse_5fcomposite_4', ['parse_composite', ['../namespacepqxx.html#a0cd702e0c9b6172bf07f0253b238506b', 1, 'pqxx::parse_composite(std::string_view text, T &...fields)'],\n ['../namespacepqxx.html#ac634686eb086118eade113cd71c7d5a4', 1, 'pqxx::parse_composite(pqxx::internal::encoding_group enc, std::string_view text, T &...fields)']\n@@ -18,20 +18,20 @@\n ['parse_5fcomposite_5ffield_5', ['parse_composite_field', ['../namespacepqxx_1_1internal.html#a1689cd1502106403a998bd0b2a283432', 1, 'pqxx::internal']]],\n ['parse_5fdouble_5fquoted_5fstring_6', ['parse_double_quoted_string', ['../namespacepqxx_1_1internal.html#ad24fb98e5aa3beaecd91d4631321fd4d', 1, 'pqxx::internal']]],\n ['parse_5fline_7', ['parse_line', ['../classpqxx_1_1internal_1_1stream__query.html#aad5061fd7b06c89a98e317ce6901ab58', 1, 'pqxx::internal::stream_query']]],\n ['parse_5funquoted_5fstring_8', ['parse_unquoted_string', ['../namespacepqxx_1_1internal.html#a93188da7c79d025bae155202f2facb18', 1, 'pqxx::internal']]],\n ['payload_9', ['payload', ['../namespacepqxx.html#af4420ee3d9ce36513a5b026903d4b191', 1, 'pqxx::notification']]],\n ['perform_10', ['perform', ['../namespacepqxx.html#a9c2faadd143f7c48353eb23b2aa24134', 1, 'pqxx']]],\n ['performance_20features_11', ['Performance features', ['../performance.html', 1, '']]],\n- ['performance_20note_12', ['Performance note', ['../prepared.html#autotoc_md20', 1, '']]],\n+ ['performance_20note_12', ['Performance note', ['../prepared.html#autotoc_md23', 1, '']]],\n ['pipeline_13', ['pipeline', ['../classpqxx_1_1pipeline.html', 1, 'pqxx::pipeline'],\n ['../classpqxx_1_1pipeline.html#a0c80a5e68052b2c35089e384e3c842ce', 1, 'pqxx::pipeline::pipeline(transaction_base &t)'],\n ['../classpqxx_1_1pipeline.html#a92463b4b599f681a372016d5dbbe016d', 1, 'pqxx::pipeline::pipeline(transaction_base &t, std::string_view tname)']\n ]],\n- ['placeholders_14', ['placeholders', ['../parameters.html#autotoc_md16', 1, 'Generating placeholders'],\n+ ['placeholders_14', ['placeholders', ['../parameters.html#autotoc_md19', 1, 'Generating placeholders'],\n ['../classpqxx_1_1placeholders.html', 1, 'pqxx::placeholders< COUNTER >']\n ]],\n ['plpgsql_5ferror_15', ['plpgsql_error', ['../group__exception.html#structpqxx_1_1plpgsql__error', 1, 'pqxx']]],\n ['plpgsql_5fno_5fdata_5ffound_16', ['plpgsql_no_data_found', ['../group__exception.html#structpqxx_1_1plpgsql__no__data__found', 1, 'pqxx']]],\n ['plpgsql_5fraise_17', ['plpgsql_raise', ['../group__exception.html#structpqxx_1_1plpgsql__raise', 1, 'pqxx']]],\n ['plpgsql_5ftoo_5fmany_5frows_18', ['plpgsql_too_many_rows', ['../group__exception.html#structpqxx_1_1plpgsql__too__many__rows', 1, 'pqxx']]],\n ['port_19', ['port', ['../classpqxx_1_1connection.html#aa517b7352ea7d8aed937281c295d1f8d', 1, 'pqxx::connection']]],\n@@ -41,17 +41,17 @@\n ['pqxx_3a_3ainternal_23', ['internal', ['../namespacepqxx_1_1internal.html', 1, 'pqxx']]],\n ['pqxx_3a_3ainternal_3a_3apq_24', ['pq', ['../namespacepqxx_1_1internal_1_1pq.html', 1, 'pqxx::internal']]],\n ['pqxx_3a_3aprepare_25', ['prepare', ['../namespacepqxx_1_1prepare.html', 1, 'pqxx']]],\n ['prepare_26', ['prepare', ['../classpqxx_1_1connection.html#ac6888103e47fc344e18d17878cdc2bc7', 1, 'pqxx::connection::prepare(char const name[], char const definition[]) &'],\n ['../classpqxx_1_1connection.html#a140337eada7fe60e15d8b113b8599f0d', 1, 'pqxx::connection::prepare(char const definition[]) &'],\n ['../classpqxx_1_1connection.html#add8ab06057cfd57e509c1e4e1f26e944', 1, 'pqxx::connection::prepare(zview name, zview definition) &']\n ]],\n- ['prepared_20statement_27', ['A special prepared statement', ['../prepared.html#autotoc_md19', 1, '']]],\n+ ['prepared_20statement_27', ['A special prepared statement', ['../prepared.html#autotoc_md22', 1, '']]],\n ['prepared_20statements_28', ['Prepared statements', ['../prepared.html', 1, '']]],\n- ['preparing_20a_20statement_29', ['Preparing a statement', ['../prepared.html#autotoc_md17', 1, '']]],\n+ ['preparing_20a_20statement_29', ['Preparing a statement', ['../prepared.html#autotoc_md20', 1, '']]],\n ['prepped_30', ['prepped', ['../classpqxx_1_1prepped.html', 1, 'pqxx']]],\n ['prior_31', ['prior', ['../classpqxx_1_1cursor__base.html#a94899901ead639033a816cb4aa0fdcd4', 1, 'pqxx::cursor_base']]],\n ['process_32', ['process', ['../classpqxx_1_1connecting.html#a58084f41892e19eb2a603a95de4f7dd9', 1, 'pqxx::connecting']]],\n ['process_5fnotice_33', ['process_notice', ['../group__transactions.html#a319425c4f02975fa2d5807963ba3dc08', 1, 'pqxx::transaction_base::process_notice(zview msg) const'],\n ['../group__transactions.html#afecae4ed72e50dd2a14fbc9c7d365297', 1, 'pqxx::transaction_base::process_notice(char const msg[]) const'],\n ['../classpqxx_1_1largeobject__streambuf.html#a9c9d53a14e148dec15f632fcb8f51366', 1, 'pqxx::largeobject_streambuf::process_notice()'],\n ['../classpqxx_1_1largeobjectaccess.html#ad539bb1d48ea71532455f56bf118a3ff', 1, 'pqxx::largeobjectaccess::process_notice()'],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_f.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_f.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,39 +1,39 @@\n var searchData = [\n- ['query_0', ['query', ['../streams.html#autotoc_md24', 1, 'Is streaming right for my query?'],\n+ ['query_0', ['query', ['../streams.html#autotoc_md27', 1, 'Is streaming right for my query?'],\n ['../group__exception.html#af011efdf2ba4459774e1e146a50c398d', 1, 'pqxx::sql_error::query()'],\n- ['../classpqxx_1_1result.html#a9d28f84628b9e8a8fecf7849f31bf1a0', 1, 'pqxx::result::query()'],\n- ['../classpqxx_1_1stream__from.html#a062c20b73f6c9d019bfc35806c432ec0', 1, 'pqxx::stream_from::query()'],\n- ['../group__transactions.html#a2b8b6bcc152f542e8cbe8e227db2ef62', 1, 'pqxx::transaction_base::query(zview query)'],\n+ ['../group__transactions.html#a41080a9f7c8cbf27a888c3cbf3e9c974', 1, 'pqxx::transaction_base::query(prepped statement, params const &parms={})'],\n ['../group__transactions.html#ad765133f6133ea8de8255af804e8f81b', 1, 'pqxx::transaction_base::query(zview query, params const &parms)'],\n- ['../group__transactions.html#a41080a9f7c8cbf27a888c3cbf3e9c974', 1, 'pqxx::transaction_base::query(prepped statement, params const &parms={})']\n+ ['../classpqxx_1_1stream__from.html#a062c20b73f6c9d019bfc35806c432ec0', 1, 'pqxx::stream_from::query()'],\n+ ['../classpqxx_1_1result.html#a9d28f84628b9e8a8fecf7849f31bf1a0', 1, 'pqxx::result::query()'],\n+ ['../group__transactions.html#a2b8b6bcc152f542e8cbe8e227db2ef62', 1, 'pqxx::transaction_base::query()']\n ]],\n- ['query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md23', 1, '']]],\n- ['query01_2', ['query01', ['../group__transactions.html#a40ddd8e96d1dbd58b8e1355d24de5898', 1, 'pqxx::transaction_base::query01(zview query, params const &parms)'],\n- ['../group__transactions.html#aa5929c0f9068f6569c246063a6428c99', 1, 'pqxx::transaction_base::query01(zview query)']\n+ ['query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['query01_2', ['query01', ['../group__transactions.html#aa5929c0f9068f6569c246063a6428c99', 1, 'pqxx::transaction_base::query01(zview query)'],\n+ ['../group__transactions.html#a40ddd8e96d1dbd58b8e1355d24de5898', 1, 'pqxx::transaction_base::query01(zview query, params const &parms)']\n ]],\n ['query1_3', ['query1', ['../group__transactions.html#ad2e069e118bd8b5332e37fecf6648020', 1, 'pqxx::transaction_base::query1(zview query)'],\n ['../group__transactions.html#a551bbeaed97a9c3797257dc127e2c3ab', 1, 'pqxx::transaction_base::query1(zview query, params const &parms)']\n ]],\n ['query_5fid_4', ['query_id', ['../classpqxx_1_1pipeline.html#af21cf61fd1c13a6729f48a241cbeba37', 1, 'pqxx::pipeline']]],\n- ['query_5fn_5', ['query_n', ['../group__transactions.html#a3ddff300844031c184bceea4cf55c9dd', 1, 'pqxx::transaction_base::query_n(result::size_type rows, zview query)'],\n- ['../group__transactions.html#acfde62bb97de6c6112624acc7880b0e2', 1, 'pqxx::transaction_base::query_n(result::size_type rows, zview query, params const &parms)']\n+ ['query_5fn_5', ['query_n', ['../group__transactions.html#acfde62bb97de6c6112624acc7880b0e2', 1, 'pqxx::transaction_base::query_n(result::size_type rows, zview query, params const &parms)'],\n+ ['../group__transactions.html#a3ddff300844031c184bceea4cf55c9dd', 1, 'pqxx::transaction_base::query_n(result::size_type rows, zview query)']\n ]],\n- ['query_5fvalue_6', ['query_value', ['../group__transactions.html#a3cd56db0a41e5a08649b3f86e3c3e738', 1, 'pqxx::transaction_base::query_value(prepped statement, params const &parms={})'],\n- ['../group__transactions.html#a9088693e2337da4d75f8f624ac4fb9bc', 1, 'pqxx::transaction_base::query_value(zview query, std::string_view desc)=delete'],\n+ ['query_5fvalue_6', ['query_value', ['../group__transactions.html#a4a7e907112201a77641d775fcbe49153', 1, 'pqxx::transaction_base::query_value(zview query, std::string_view desc)'],\n+ ['../group__transactions.html#a7167da8b1ac61caa7e2caa0a9b0244c8', 1, 'pqxx::transaction_base::query_value(zview query)'],\n ['../group__transactions.html#a2f2f530ab83df00027ad7b09716b3bac', 1, 'pqxx::transaction_base::query_value(zview query, params const &parms)'],\n- ['../group__transactions.html#a4a7e907112201a77641d775fcbe49153', 1, 'pqxx::transaction_base::query_value(zview query, std::string_view desc)'],\n- ['../group__transactions.html#a7167da8b1ac61caa7e2caa0a9b0244c8', 1, 'pqxx::transaction_base::query_value(zview query)']\n+ ['../group__transactions.html#a3cd56db0a41e5a08649b3f86e3c3e738', 1, 'pqxx::transaction_base::query_value(prepped statement, params const &parms={})'],\n+ ['../group__transactions.html#a9088693e2337da4d75f8f624ac4fb9bc', 1, 'pqxx::transaction_base::query_value(zview query, std::string_view desc)=delete']\n ]],\n- ['querying_20rows_20of_20data_7', ['Querying rows of data', ['../accessing-results.html#autotoc_md30', 1, '']]],\n- ['quiet_5ferrorhandler_8', ['quiet_errorhandler', ['../classpqxx_1_1quiet__errorhandler.html#ac89d9cb68e28649ed53ec9d00ad75550', 1, 'pqxx::quiet_errorhandler::quiet_errorhandler()'],\n- ['../classpqxx_1_1quiet__errorhandler.html', 1, 'pqxx::quiet_errorhandler']\n+ ['querying_20rows_20of_20data_7', ['Querying rows of data', ['../accessing-results.html#autotoc_md0', 1, '']]],\n+ ['quiet_5ferrorhandler_8', ['quiet_errorhandler', ['../classpqxx_1_1quiet__errorhandler.html', 1, 'pqxx::quiet_errorhandler'],\n+ ['../classpqxx_1_1quiet__errorhandler.html#ac89d9cb68e28649ed53ec9d00ad75550', 1, 'pqxx::quiet_errorhandler::quiet_errorhandler()']\n ]],\n- ['quote_9', ['quote', ['../classpqxx_1_1connection.html#aa8dd0b5e748b96a2c82152b8001bdc69', 1, 'pqxx::connection::quote()'],\n- ['../group__transactions.html#a6476b6d27bb27a6eb8767080cc3e6a49', 1, 'pqxx::transaction_base::quote()'],\n+ ['quote_9', ['quote', ['../group__transactions.html#a6476b6d27bb27a6eb8767080cc3e6a49', 1, 'pqxx::transaction_base::quote()'],\n+ ['../classpqxx_1_1connection.html#aa8dd0b5e748b96a2c82152b8001bdc69', 1, 'pqxx::connection::quote(bytes_view bytes) const'],\n ['../classpqxx_1_1connection.html#ae871e3c436af0ed50e1373d9157e7340', 1, 'pqxx::connection::quote(T const &t) const']\n ]],\n ['quote_5fcolumns_10', ['quote_columns', ['../classpqxx_1_1connection.html#a6f0d42562cf2e37c1673738bf330b2b7', 1, 'pqxx::connection']]],\n ['quote_5fname_11', ['quote_name', ['../classpqxx_1_1connection.html#a98f0397793e45b0ea2d9fa4e7a454167', 1, 'pqxx::connection::quote_name()'],\n ['../group__transactions.html#ade6d268d6b59cd8684be5d127746d99f', 1, 'pqxx::transaction_base::quote_name()']\n ]],\n ['quote_5fraw_12', ['quote_raw', ['../classpqxx_1_1connection.html#a276b3fe0ae9d3cc8e5a04f5e9b2bf1cf', 1, 'pqxx::connection::quote_raw(bytes_view) const'],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/statement__parameters_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/statement__parameters_8hxx_source.html", "unified_diff": "@@ -112,62 +112,62 @@\n
23#include "pqxx/util.hxx"
\n
24
\n
25
\n
26namespace pqxx::internal
\n
27{
\n
28template<typename ITERATOR>
\n
29constexpr inline auto const iterator_identity{
\n-
30 [](decltype(*std::declval<ITERATOR>()) x) { return x; }};
\n+
30 [](decltype(*std::declval<ITERATOR>()) x) { return x; }};
\n
31
\n
32
\n
34template<typename IT, typename ACCESSOR = decltype(iterator_identity<IT>)>
\n
\n \n
36{
\n
37public:
\n
\n-
39 constexpr dynamic_params(IT begin, IT end) :
\n-
40 m_begin(begin), m_end(end), m_accessor(iterator_identity<IT>)
\n+
39 constexpr dynamic_params(IT begin, IT end) :
\n+
40 m_begin(begin), m_end(end), m_accessor(iterator_identity<IT>)
\n
41 {}
\n
\n
42
\n
44
\n
\n-
48 constexpr dynamic_params(IT begin, IT end, ACCESSOR &acc) :
\n-
49 m_begin(begin), m_end(end), m_accessor(acc)
\n+
48 constexpr dynamic_params(IT begin, IT end, ACCESSOR &acc) :
\n+
49 m_begin(begin), m_end(end), m_accessor(acc)
\n
50 {}
\n
\n
51
\n
53 template<typename C>
\n
\n-
54 explicit constexpr dynamic_params(C &container) :
\n-
55 dynamic_params(std::begin(container), std::end(container))
\n+
54 explicit constexpr dynamic_params(C &container) :
\n+
55 dynamic_params(std::begin(container), std::end(container))
\n
56 {}
\n
\n
57
\n
59
\n
63 template<typename C>
\n
\n-
64 explicit constexpr dynamic_params(C &container, ACCESSOR &acc) :
\n-
65 dynamic_params(std::begin(container), std::end(container), acc)
\n+
64 explicit constexpr dynamic_params(C &container, ACCESSOR &acc) :
\n+
65 dynamic_params(std::begin(container), std::end(container), acc)
\n
66 {}
\n
\n
67
\n-
68 constexpr IT begin() const noexcept { return m_begin; }
\n-
69 constexpr IT end() const noexcept { return m_end; }
\n+
68 constexpr IT begin() const noexcept { return m_begin; }
\n+
69 constexpr IT end() const noexcept { return m_end; }
\n
70
\n
71 constexpr auto access(decltype(*std::declval<IT>()) value) const
\n
72 -> decltype(std::declval<ACCESSOR>()(value))
\n
73 {
\n
74 return m_accessor(value);
\n
75 }
\n
76
\n
77private:
\n-
78 IT const m_begin, m_end;
\n-
79 ACCESSOR m_accessor = iterator_identity<IT>;
\n+
78 IT const m_begin, m_end;
\n+\n
80};
\n
\n
81
\n
82
\n
84
\n
\n
94struct PQXX_LIBEXPORT c_params
\n@@ -187,14 +187,15 @@\n
112#endif
\n
Definition statement_parameters.hxx:36
\n
constexpr dynamic_params(C &container)
Wrap a container.
Definition statement_parameters.hxx:54
\n
constexpr dynamic_params(IT begin, IT end)
Wrap a sequence of pointers or iterators.
Definition statement_parameters.hxx:39
\n
constexpr dynamic_params(C &container, ACCESSOR &acc)
Wrap a container.
Definition statement_parameters.hxx:64
\n
constexpr dynamic_params(IT begin, IT end, ACCESSOR &acc)
Wrap a sequence of pointers or iterators.
Definition statement_parameters.hxx:48
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
Internal type: encode statement parameters.
Definition statement_parameters.hxx:95
\n
c_params(c_params const &)=delete
Copying these objects is pointless and expensive. Don't do it.
\n
std::vector< int > lengths
As used by libpq: lengths of non-null arguments, in bytes.
Definition statement_parameters.hxx:107
\n
std::vector< format > formats
As used by libpq: effectively boolean "is this a binary parameter?".
Definition statement_parameters.hxx:109
\n
std::vector< char const * > values
As used by libpq: pointers to parameter values.
Definition statement_parameters.hxx:105
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -18,53 +18,53 @@\n 23#include \"pqxx/util.hxx\"\n 24\n 25\n 26namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 27{\n 28template\n 29constexpr inline auto const iterator_identity{\n-30 [](decltype(*std::declval()) x) { return x; }};\n+30 [](decltype(*std::declval()) _\bx) { return _\bx; }};\n 31\n 32\n 34template)>\n _\b3_\b5class _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs\n 36{\n 37public:\n-_\b3_\b9 constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(IT begin, IT end) :\n-40 m_begin(begin), m_end(end), m_accessor(iterator_identity)\n+_\b3_\b9 constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(_\bI_\bT begin, _\bI_\bT end) :\n+40 m_begin(begin), m_end(end), m_accessor(iterator_identity<_\bI_\bT>)\n 41 {}\n 42\n 44\n-_\b4_\b8 constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(IT begin, IT end, ACCESSOR &acc) :\n-49 m_begin(begin), m_end(end), m_accessor(acc)\n+_\b4_\b8 constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(_\bI_\bT begin, _\bI_\bT end, _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR &_\ba_\bc_\bc) :\n+49 m_begin(begin), m_end(end), m_accessor(_\ba_\bc_\bc)\n 50 {}\n 51\n 53 template\n-_\b5_\b4 explicit constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(C &container) :\n-55 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(std::begin(container), std::end(container))\n+_\b5_\b4 explicit constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(_\bC &_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br) :\n+55 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(std::begin(_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br), std::end(_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br))\n 56 {}\n 57\n 59\n 63 template\n-_\b6_\b4 explicit constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(C &container, ACCESSOR &acc) :\n-65 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(std::begin(container), std::end(container), acc)\n+_\b6_\b4 explicit constexpr _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(_\bC &_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br, _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR &_\ba_\bc_\bc) :\n+65 _\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs(std::begin(_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br), std::end(_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br), _\ba_\bc_\bc)\n 66 {}\n 67\n-68 constexpr IT begin() const noexcept { return m_begin; }\n-69 constexpr IT end() const noexcept { return m_end; }\n+68 constexpr _\bI_\bT begin() _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt { return m_begin; }\n+69 constexpr _\bI_\bT end() _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt { return m_end; }\n 70\n 71 constexpr auto access(decltype(*std::declval()) value) const\n 72 -> decltype(std::declval()(value))\n 73 {\n 74 return m_accessor(value);\n 75 }\n 76\n 77private:\n-78 IT const m_begin, m_end;\n-79 ACCESSOR m_accessor = iterator_identity;\n+78 _\bI_\bT const m_begin, m_end;\n+79 _\bA_\bC_\bC_\bE_\bS_\bS_\bO_\bR m_accessor = _\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b__\bi_\bd_\be_\bn_\bt_\bi_\bt_\by_\b<_\bI_\bT_\b>;\n 80};\n 81\n 82\n 84\n _\b9_\b4struct PQXX_LIBEXPORT _\bc_\b__\bp_\ba_\br_\ba_\bm_\bs\n 95{\n 96 _\bc_\b__\bp_\ba_\br_\ba_\bm_\bs() = default;\n@@ -96,14 +96,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs_\b:_\b:_\bd_\by_\bn_\ba_\bm_\bi_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs\n constexpr dynamic_params(IT begin, IT end, ACCESSOR &acc)\n Wrap a sequence of pointers or iterators.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn statement_parameters.hxx:48\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs\n Internal type: encode statement parameters.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn statement_parameters.hxx:95\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs_\b:_\b:_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs\n c_params(c_params const &)=delete\n Copying these objects is pointless and expensive. Don't do it.\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs_\b:_\b:_\bl_\be_\bn_\bg_\bt_\bh_\bs\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/strconv_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/strconv_8hxx_source.html", "unified_diff": "@@ -298,38 +298,38 @@\n
361{
\n
362 using impl_type = std::underlying_type_t<ENUM>;
\n \n
364
\n
365 static constexpr bool converts_to_string{true};
\n
366 static constexpr bool converts_from_string{true};
\n
367
\n-
368 [[nodiscard]] static constexpr zview
\n-
369 to_buf(char *begin, char *end, ENUM const &value)
\n+
368 [[nodiscard]] static constexpr zview
\n+
369 to_buf(char *begin, char *end, ENUM const &value)
\n
370 {
\n
371 return impl_traits::to_buf(begin, end, to_underlying(value));
\n
372 }
\n
373
\n-
374 static constexpr char *into_buf(char *begin, char *end, ENUM const &value)
\n+
374 static constexpr char *into_buf(char *begin, char *end, ENUM const &value)
\n
375 {
\n
376 return impl_traits::into_buf(begin, end, to_underlying(value));
\n
377 }
\n
378
\n-
379 [[nodiscard]] static ENUM from_string(std::string_view text)
\n+
379 [[nodiscard]] static ENUM from_string(std::string_view text)
\n
380 {
\n-
381 return static_cast<ENUM>(impl_traits::from_string(text));
\n+
381 return static_cast<ENUM>(impl_traits::from_string(text));
\n
382 }
\n
383
\n-
384 [[nodiscard]] static std::size_t size_buffer(ENUM const &value) noexcept
\n+
384 [[nodiscard]] static std::size_t size_buffer(ENUM const &value) noexcept
\n
385 {
\n
386 return impl_traits::size_buffer(to_underlying(value));
\n
387 }
\n
388
\n
389private:
\n
390 // C++23: Replace with std::to_underlying.
\n-
391 static constexpr impl_type to_underlying(ENUM const &value) noexcept
\n+
391 static constexpr impl_type to_underlying(ENUM const &value) noexcept
\n
392 {
\n
393 return static_cast<impl_type>(value);
\n
394 }
\n
395};
\n \n
396} // namespace pqxx::internal
\n
397
\n@@ -453,14 +453,15 @@\n
612} // namespace pqxx
\n
613
\n
614
\n
615#include "pqxx/internal/conversions.hxx"
\n
616#endif
\n
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
std::string demangle_type_name(char const raw[])
Attempt to demangle std::type_info::name() to something human-readable.
Definition strconv.cxx:226
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
std::string const type_name
A human-readable name for a type, used in error messages and such.
Definition strconv.hxx:80
\n
void oops_forbidden_conversion() noexcept
Nonexistent function to indicate a disallowed type conversion.
\n
PQXX_LIBEXPORT std::string to_string(field const &value)
Convert a field to a string.
Definition result.cxx:628
\n
T from_string(field const &value)
Convert a field's value to type T.
Definition field.hxx:548
\n
format
Format code: is data text or binary?
Definition types.hxx:70
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -186,38 +186,38 @@\n 361{\n 362 using impl_type = std::underlying_type_t;\n 363 using _\bi_\bm_\bp_\bl_\b__\bt_\br_\ba_\bi_\bt_\bs = _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs_\b<_\bi_\bm_\bp_\bl_\b__\bt_\by_\bp_\be_\b>;\n 364\n 365 static constexpr bool converts_to_string{true};\n 366 static constexpr bool converts_from_string{true};\n 367\n-368 [[nodiscard]] static constexpr _\bz_\bv_\bi_\be_\bw\n-369 to_buf(char *begin, char *end, ENUM const &value)\n+368 [[_\bn_\bo_\bd_\bi_\bs_\bc_\ba_\br_\bd]] static constexpr _\bz_\bv_\bi_\be_\bw\n+369 to_buf(char *begin, char *end, _\bE_\bN_\bU_\bM const &value)\n 370 {\n 371 return _\bi_\bm_\bp_\bl_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bt_\bo_\b__\bb_\bu_\bf(begin, end, to_underlying(value));\n 372 }\n 373\n-374 static constexpr char *into_buf(char *begin, char *end, ENUM const &value)\n+374 static constexpr char *into_buf(char *begin, char *end, _\bE_\bN_\bU_\bM const &value)\n 375 {\n 376 return _\bi_\bm_\bp_\bl_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bi_\bn_\bt_\bo_\b__\bb_\bu_\bf(begin, end, to_underlying(value));\n 377 }\n 378\n-379 [[nodiscard]] static ENUM from_string(std::string_view text)\n+379 [[_\bn_\bo_\bd_\bi_\bs_\bc_\ba_\br_\bd]] static _\bE_\bN_\bU_\bM from_string(std::string_view text)\n 380 {\n-381 return static_cast(_\bi_\bm_\bp_\bl_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bf_\br_\bo_\bm_\b__\bs_\bt_\br_\bi_\bn_\bg(text));\n+381 return static_cast<_\bE_\bN_\bU_\bM>(_\bi_\bm_\bp_\bl_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bf_\br_\bo_\bm_\b__\bs_\bt_\br_\bi_\bn_\bg(text));\n 382 }\n 383\n-384 [[nodiscard]] static std::size_t size_buffer(ENUM const &value) noexcept\n+384 [[_\bn_\bo_\bd_\bi_\bs_\bc_\ba_\br_\bd]] static std::size_t size_buffer(_\bE_\bN_\bU_\bM const &value) noexcept\n 385 {\n 386 return _\bi_\bm_\bp_\bl_\b__\bt_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be_\b__\bb_\bu_\bf_\bf_\be_\br(to_underlying(value));\n 387 }\n 388\n 389private:\n 390 // C++23: Replace with std::to_underlying.\n-391 static constexpr impl_type to_underlying(ENUM const &value) noexcept\n+391 static constexpr impl_type to_underlying(_\bE_\bN_\bU_\bM const &value) noexcept\n 392 {\n 393 return static_cast(value);\n 394 }\n 395};\n 396} // namespace pqxx::internal\n 397\n 398\n@@ -347,14 +347,19 @@\n 616#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\bz_\bv_\bi_\be_\bw\n Marker-type wrapper: zero-terminated std::string_view.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn zview.hxx:38\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bd_\be_\bm_\ba_\bn_\bg_\bl_\be_\b__\bt_\by_\bp_\be_\b__\bn_\ba_\bm_\be\n std::string demangle_type_name(char const raw[])\n Attempt to demangle std::type_info::name() to something human-readable.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn strconv.cxx:226\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/stream__iterator_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/stream__iterator_8hxx_source.html", "unified_diff": "@@ -111,20 +111,20 @@\n
18
\n
19
\n
20namespace pqxx::internal
\n
21{
\n
22// C++20: Replace with generator?
\n
24
\n
\n-
27template<typename... TYPE> class stream_from_input_iterator
\n+
27template<typename... TYPE> class stream_from_input_iterator
\n
28{
\n
29 using stream_t = stream_from;
\n
30
\n
31public:
\n-
32 using value_type = std::tuple<TYPE...>;
\n+
32 using value_type = std::tuple<TYPE...>;
\n
33
\n \n
36
\n
37 explicit stream_from_input_iterator(stream_t &home) : m_home(&home)
\n
38 {
\n
39 advance();
\n
40 }
\n@@ -135,48 +135,48 @@\n
45 advance();
\n
46 return *this;
\n
47 }
\n
48
\n
49 value_type const &operator*() const { return m_value; }
\n
50
\n
\n-\n+\n
53 {
\n-
54 return m_home == rhs.m_home;
\n+
54 return m_home == rhs.m_home;
\n
55 }
\n
\n
\n-\n+\n
58 {
\n-
59 return not(*this == rhs);
\n+
59 return not(*this == rhs);
\n
60 }
\n
\n
61
\n
62private:
\n
63 void advance()
\n
64 {
\n
65 if (m_home == nullptr)
\n
66 throw usage_error{"Moving stream_from iterator beyond end()."};
\n-
67 if (not((*m_home) >> m_value))
\n+
67 if (not((*m_home) >> m_value))
\n
68 m_home = nullptr;
\n
69 }
\n
70
\n
71 stream_t *m_home{nullptr};
\n
72 value_type m_value;
\n
73};
\n
\n
74
\n
75
\n
76// C++20: Replace with generator?
\n
\n-
78template<typename... TYPE> class stream_input_iteration
\n+
78template<typename... TYPE> class stream_input_iteration
\n
79{
\n
80public:
\n
81 using stream_t = stream_from;
\n-
82 using iterator = stream_from_input_iterator<TYPE...>;
\n+\n
83 explicit stream_input_iteration(stream_t &home) : m_home{home} {}
\n
84 iterator begin() const { return iterator{m_home}; }
\n
85 iterator end() const { return {}; }
\n
86
\n
87private:
\n
88 stream_t &m_home;
\n
89};
\n@@ -187,14 +187,15 @@\n
bool operator==(stream_from_input_iterator const &rhs) const
Comparison only works for comparing to end().
Definition stream_iterator.hxx:52
\n
bool operator!=(stream_from_input_iterator const &rhs) const
Comparison only works for comparing to end().
Definition stream_iterator.hxx:57
\n
stream_from_input_iterator()=default
Construct an "end" iterator.
\n
Iteration over a stream_query.
Definition stream_iterator.hxx:79
\n
Stream data from the database.
Definition stream_from.hxx:79
\n
Error in usage of libpqxx library, similar to std::logic_error.
Definition except.hxx:249
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
strip_t< decltype(*std::begin(std::declval< CONTAINER >()))> value_type
The type of a container's elements.
Definition types.hxx:96
\n
Definition stream_iterator.hxx:16
\n
\n \n \n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -16,20 +16,20 @@\n 17}\n 18\n 19\n 20namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 21{\n 22// C++20: Replace with generator?\n 24\n-_\b2_\b7template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b2_\b7template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n 28{\n 29 using _\bs_\bt_\br_\be_\ba_\bm_\b__\bt = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm;\n 30\n 31public:\n-32 using value_type = std::tuple;\n+32 using value_type = std::tuple<_\bT_\bY_\bP_\bE...>;\n 33\n _\b3_\b5 _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br() = default;\n 36\n 37 explicit _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br(_\bs_\bt_\br_\be_\ba_\bm_\b__\bt &home) : m_home(&home)\n 38 {\n 39 advance();\n 40 }\n@@ -39,43 +39,43 @@\n 44 {\n 45 advance();\n 46 return *this;\n 47 }\n 48\n 49 _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be const &operator*() const { return m_value; }\n 50\n-_\b5_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const &rhs) const\n+_\b5_\b2 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const &_\br_\bh_\bs) const\n 53 {\n-54 return m_home == rhs.m_home;\n+54 return m_home == _\br_\bh_\bs.m_home;\n 55 }\n-_\b5_\b7 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const &rhs) const\n+_\b5_\b7 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const &_\br_\bh_\bs) const\n 58 {\n-59 return not(*this == rhs);\n+59 return _\bn_\bo_\bt(*this == _\br_\bh_\bs);\n 60 }\n 61\n 62private:\n 63 void advance()\n 64 {\n 65 if (m_home == nullptr)\n 66 throw _\bu_\bs_\ba_\bg_\be_\b__\be_\br_\br_\bo_\br{\"Moving stream_from iterator beyond end().\"};\n-67 if (not((*m_home) >> m_value))\n+67 if (_\bn_\bo_\bt((*m_home) >> m_value))\n 68 m_home = nullptr;\n 69 }\n 70\n 71 stream_t *m_home{nullptr};\n 72 value_type m_value;\n 73};\n 74\n 75\n 76// C++20: Replace with generator?\n-_\b7_\b8template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bi_\bo_\bn\n+_\b7_\b8template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bi_\bo_\bn\n 79{\n 80public:\n 81 using _\bs_\bt_\br_\be_\ba_\bm_\b__\bt = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm;\n-82 using _\bi_\bt_\be_\br_\ba_\bt_\bo_\br = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n+82 using _\bi_\bt_\be_\br_\ba_\bt_\bo_\br = _\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br<_\bT_\bY_\bP_\bE...>;\n 83 explicit _\bs_\bt_\br_\be_\ba_\bm_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bi_\bo_\bn(_\bs_\bt_\br_\be_\ba_\bm_\b__\bt &home) : m_home{home} {}\n 84 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br begin() const { return _\bi_\bt_\be_\br_\ba_\bt_\bo_\br{m_home}; }\n 85 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br end() const { return {}; }\n 86\n 87private:\n 88 _\bs_\bt_\br_\be_\ba_\bm_\b__\bt &m_home;\n 89};\n@@ -103,14 +103,19 @@\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn stream_from.hxx:79\n _\bp_\bq_\bx_\bx_\b:_\b:_\bu_\bs_\ba_\bg_\be_\b__\be_\br_\br_\bo_\br\n Error in usage of libpqxx library, similar to std::logic_error.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn except.hxx:249\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n _\bp_\bq_\bx_\bx_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be\n strip_t< decltype(*std::begin(std::declval< CONTAINER >()))> value_type\n The type of a container's elements.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn types.hxx:96\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/stream__query_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/stream__query_8hxx_source.html", "unified_diff": "@@ -147,202 +147,202 @@\n
47{};
\n
\n
48
\n
49
\n
50// C++20: Can we use generators, and maybe get speedup from HALO?
\n
52
\n
\n-
79template<typename... TYPE> class stream_query : transaction_focus
\n+
79template<typename... TYPE> class stream_query : transaction_focus
\n
80{
\n
81public:
\n-
82 using line_handle = std::unique_ptr<char, void (*)(void const *)>;
\n+
82 using line_handle = std::unique_ptr<char, void (*)(void const *)>;
\n
83
\n-
85 inline stream_query(transaction_base &tx, std::string_view query);
\n+
85 inline stream_query(transaction_base &tx, std::string_view query);
\n
87 inline stream_query(
\n-
88 transaction_base &tx, std::string_view query, params const &);
\n+
88 transaction_base &tx, std::string_view query, params const &);
\n
89
\n
90 stream_query(stream_query &&) = delete;
\n
91 stream_query &operator=(stream_query &&) = delete;
\n
92
\n
93 ~stream_query() noexcept
\n
94 {
\n
95 try
\n
96 {
\n
97 close();
\n
98 }
\n-
99 catch (std::exception const &e)
\n+
99 catch (std::exception const &e)
\n
100 {
\n-
101 reg_pending_error(e.what());
\n+
101 reg_pending_error(e.what());
\n
102 }
\n
103 }
\n
104
\n-
106 bool done() const & noexcept { return m_char_finder == nullptr; }
\n+
106 bool done() const & noexcept { return m_char_finder == nullptr; }
\n
107
\n
109 inline auto begin() &;
\n
111
\n-
115 auto end() const & { return stream_query_end_iterator{}; }
\n+
115 auto end() const & { return stream_query_end_iterator{}; }
\n
116
\n
\n-
118 std::tuple<TYPE...> parse_line(zview line) &
\n+
118 std::tuple<TYPE...> parse_line(zview line) &
\n
119 {
\n-
120 assert(not done());
\n+
120 assert(not done());
\n
121
\n-
122 auto const line_size{std::size(line)};
\n+
122 auto const line_size{std::size(line)};
\n
123
\n
124 // This function uses m_row as a buffer, across calls. The only reason for
\n
125 // it to carry over across calls is to avoid reallocation.
\n
126
\n
127 // Make room for unescaping the line. It's a pessimistic size.
\n
128 // Unusually, we're storing terminating zeroes *inside* the string.
\n
129 // This is the only place where we modify m_row. MAKE SURE THE BUFFER DOES
\n
130 // NOT GET RESIZED while we're working, because we're working with views
\n
131 // into its buffer.
\n-
132 m_row.resize(line_size + 1);
\n+
132 m_row.resize(line_size + 1);
\n
133
\n-
134 std::size_t offset{0u};
\n+
134 std::size_t offset{0u};
\n
135 char *write{m_row.data()};
\n
136
\n
137 // DO NOT shrink m_row to fit. We're carrying views pointing into the
\n
138 // buffer. (Also, how useful would shrinking really be?)
\n
139
\n
140 // Folding expression: scan and unescape each field, and convert it to its
\n
141 // requested type.
\n-
142 std::tuple<TYPE...> data{parse_field<TYPE>(line, offset, write)...};
\n+
142 std::tuple<TYPE...> data{parse_field<TYPE>(line, offset, write)...};
\n
143
\n-
144 assert(offset == line_size + 1u);
\n+
144 assert(offset == line_size + 1u);
\n
145 return data;
\n
146 }
\n
\n
147
\n
149 std::pair<line_handle, std::size_t> read_line() &;
\n
150
\n
151private:
\n
153
\n-
156 static inline char_finder_func *get_finder(transaction_base const &tx);
\n+
156 static inline char_finder_func *get_finder(transaction_base const &tx);
\n
157
\n
159
\n
173 std::tuple<std::size_t, char *, zview>
\n-
174 read_field(zview line, std::size_t offset, char *write)
\n+
174 read_field(zview line, std::size_t offset, char *write)
\n
175 {
\n
176#if !defined(NDEBUG)
\n-
177 auto const line_size{std::size(line)};
\n+
177 auto const line_size{std::size(line)};
\n
178#endif
\n
179
\n-
180 assert(offset <= line_size);
\n+\n
181
\n-
182 char const *lp{std::data(line)};
\n+
182 char const *lp{std::data(line)};
\n
183
\n
184 // The COPY line now ends in a tab. (We replace the trailing newline with
\n
185 // that to simplify the loop here.)
\n-
186 assert(lp[line_size] == '\\t');
\n-
187 assert(lp[line_size + 1] == '\\0');
\n+
186 assert(lp[line_size] == '\\t');
\n+
187 assert(lp[line_size + 1] == '\\0');
\n
188
\n-
189 if ((lp[offset] == '\\\\') and (lp[offset + 1] == 'N'))
\n+
189 if ((lp[offset] == '\\\\') and (lp[offset + 1] == 'N'))
\n
190 {
\n
191 // Null field. Consume the "\\N" and the field separator.
\n-
192 offset += 3;
\n-
193 assert(offset <= (line_size + 1));
\n-
194 assert(lp[offset - 1] == '\\t');
\n+
192 offset += 3;
\n+
193 assert(offset <= (line_size + 1));
\n+
194 assert(lp[offset - 1] == '\\t');
\n
195 // Return a null value. There's nothing to write into m_row.
\n-
196 return {offset, write, {}};
\n+
196 return {offset, write, {}};
\n
197 }
\n
198
\n
199 // Beginning of the field text in the row buffer.
\n-
200 char const *const field_begin{write};
\n+
200 char const *const field_begin{write};
\n
201
\n
202 // We're relying on several assumptions just for making the main loop
\n
203 // condition work:
\n
204 // * The COPY line ends in a newline.
\n
205 // * Multibyte characters never start with an ASCII-range byte.
\n
206 // * We can index a view beyond its bounds (but within its address space).
\n
207 //
\n
208 // Effectively, the newline acts as a final field separator.
\n-
209 while (lp[offset] != '\\t')
\n+
209 while (lp[offset] != '\\t')
\n
210 {
\n-
211 assert(lp[offset] != '\\0');
\n+
211 assert(lp[offset] != '\\0');
\n
212
\n
213 // Beginning of the next character of interest (or the end of the line).
\n-
214 auto const stop_char{m_char_finder(line, offset)};
\n-
215 PQXX_ASSUME(stop_char > offset);
\n-
216 assert(stop_char < (line_size + 1));
\n+
214 auto const stop_char{m_char_finder(line, offset)};
\n+
215 PQXX_ASSUME(stop_char > offset);
\n+
216 assert(stop_char < (line_size + 1));
\n
217
\n
218 // Copy the text we have so far. It's got no special characters in it.
\n-
219 std::memcpy(write, &lp[offset], stop_char - offset);
\n-
220 write += (stop_char - offset);
\n-
221 offset = stop_char;
\n+
219 std::memcpy(write, &lp[offset], stop_char - offset);
\n+
220 write += (stop_char - offset);
\n+\n
222
\n
223 // We're still within the line.
\n-
224 char const special{lp[offset]};
\n-
225 if (special == '\\\\')
\n+
224 char const special{lp[offset]};
\n+
225 if (special == '\\\\')
\n
226 {
\n
227 // Escape sequence.
\n
228 // Consume the backslash.
\n-
229 ++offset;
\n-
230 assert(offset < line_size);
\n+
229 ++offset;
\n+\n
231
\n
232 // The database will only escape ASCII characters, so we assume that
\n
233 // we're dealing with a single-byte character.
\n-
234 char const escaped{lp[offset]};
\n-
235 assert((escaped >> 7) == 0);
\n-
236 ++offset;
\n-
237 *write++ = unescape_char(escaped);
\n+
234 char const escaped{lp[offset]};
\n+
235 assert((escaped >> 7) == 0);
\n+
236 ++offset;
\n+
237 *write++ = unescape_char(escaped);
\n
238 }
\n
239 else
\n
240 {
\n
241 // Field separator. Fall out of the loop.
\n-
242 assert(special == '\\t');
\n+
242 assert(special == '\\t');
\n
243 }
\n
244 }
\n
245
\n
246 // Hit the end of the field.
\n-
247 assert(lp[offset] == '\\t');
\n+
247 assert(lp[offset] == '\\t');
\n
248 *write = '\\0';
\n
249 ++write;
\n-
250 ++offset;
\n-
251 return {offset, write, {field_begin, write - field_begin - 1}};
\n+
250 ++offset;
\n+
251 return {offset, write, {field_begin, write - field_begin - 1}};
\n
252 }
\n
253
\n
255
\n
268 template<typename TARGET>
\n-
269 TARGET parse_field(zview line, std::size_t &offset, char *&write)
\n+
269 TARGET parse_field(zview line, std::size_t &offset, char *&write)
\n
270 {
\n-
271 using field_type = strip_t<TARGET>;
\n-
272 using nullity = nullness<field_type>;
\n+\n+\n
273
\n-
274 assert(offset <= std::size(line));
\n+
274 assert(offset <= std::size(line));
\n
275
\n-
276 auto [new_offset, new_write, text]{read_field(line, offset, write)};
\n-
277 PQXX_ASSUME(new_offset > offset);
\n-
278 PQXX_ASSUME(new_write >= write);
\n-
279 offset = new_offset;
\n-
280 write = new_write;
\n+
276 auto [new_offset, new_write, text]{read_field(line, offset, write)};
\n+
277 PQXX_ASSUME(new_offset > offset);
\n+
278 PQXX_ASSUME(new_write >= write);
\n+\n+
280 write = new_write;
\n
281 if constexpr (nullity::always_null)
\n
282 {
\n
283 if (std::data(text) != nullptr)
\n
284 throw conversion_error{concat(
\n-
285 "Streaming a non-null value into a ", type_name<field_type>,
\n+
285 "Streaming a non-null value into a ", type_name<field_type>,
\n
286 ", which must always be null.")};
\n
287 }
\n
288 else if (std::data(text) == nullptr)
\n
289 {
\n
290 if constexpr (nullity::has_null)
\n
291 return nullity::null();
\n
292 else
\n-
293 internal::throw_null_conversion(type_name<field_type>);
\n+\n
294 }
\n
295 else
\n
296 {
\n
297 // Don't ever try to convert a non-null value to nullptr_t!
\n-
298 return from_string<field_type>(text);
\n+
298 return from_string<field_type>(text);
\n
299 }
\n
300 }
\n
301
\n-
303 void close() noexcept
\n+
303 void close() noexcept
\n
304 {
\n-
305 if (not done())
\n+
305 if (not done())
\n
306 {
\n
307 m_char_finder = nullptr;
\n
308 unregister_me();
\n
309 }
\n
310 }
\n
311
\n
313
\n@@ -364,14 +364,15 @@\n
Base class for things that monopolise a transaction's attention.
Definition transaction_focus.hxx:29
\n
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38
\n
Interface definition (and common code) for "transaction" classes.
Definition transaction_base.hxx:151
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n
void throw_null_conversion(std::string const &type)
Throw exception for attempt to convert SQL NULL to given type.
Definition strconv.cxx:248
\n
std::size_t(std::string_view haystack, std::size_t start) char_finder_func
Function type: "find first occurrence of specific any of ASCII characters.".
Definition encoding_group.hxx:71
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
constexpr char unescape_char(char escaped) noexcept
Return original byte for escaped character.
Definition util.hxx:633
\n
The end() iterator for a stream_query.
Definition stream_query.hxx:47
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
\n \n \n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -50,200 +50,200 @@\n 44{\n _\b4_\b6class _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n 47{};\n 48\n 49\n 50// C++20: Can we use generators, and maybe get speedup from HALO?\n 52\n-_\b7_\b9template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by : _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs\n+_\b7_\b9template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by : _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs\n 80{\n 81public:\n-82 using line_handle = std::unique_ptr;\n+82 using line_handle = std::unique_ptr<_\bc_\bh_\ba_\br, _\bv_\bo_\bi_\bd (*)(void const *)>;\n 83\n-85 inline _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by(_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, std::string_view query);\n+85 inline _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by(_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt_\bx, std::string_view query);\n 87 inline _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by(\n-88 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, std::string_view query, _\bp_\ba_\br_\ba_\bm_\bs const &);\n+88 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt_\bx, std::string_view query, _\bp_\ba_\br_\ba_\bm_\bs const &);\n 89\n 90 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &&) = delete;\n 91 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &operator=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by &&) = delete;\n 92\n 93 _\b~_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by() noexcept\n 94 {\n 95 try\n 96 {\n 97 close();\n 98 }\n-99 catch (std::exception const &e)\n+99 catch (std::exception const &_\be)\n 100 {\n-101 reg_pending_error(e.what());\n+101 reg_pending_error(_\be.what());\n 102 }\n 103 }\n 104\n-_\b1_\b0_\b6 bool _\bd_\bo_\bn_\be() const & noexcept { return m_char_finder == nullptr; }\n+_\b1_\b0_\b6 bool _\bd_\bo_\bn_\be() _\bc_\bo_\bn_\bs_\bt & _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt { return m_char_finder == nullptr; }\n 107\n 109 inline auto _\bb_\be_\bg_\bi_\bn() &;\n 111\n-_\b1_\b1_\b5 auto _\be_\bn_\bd() const & { return _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br{}; }\n+_\b1_\b1_\b5 auto _\be_\bn_\bd() _\bc_\bo_\bn_\bs_\bt & { return _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br{}; }\n 116\n-_\b1_\b1_\b8 std::tuple _\bp_\ba_\br_\bs_\be_\b__\bl_\bi_\bn_\be(_\bz_\bv_\bi_\be_\bw line) &\n+_\b1_\b1_\b8 std::tuple<_\bT_\bY_\bP_\bE...> _\bp_\ba_\br_\bs_\be_\b__\bl_\bi_\bn_\be(_\bz_\bv_\bi_\be_\bw _\bl_\bi_\bn_\be) &\n 119 {\n-120 assert(not _\bd_\bo_\bn_\be());\n+120 _\ba_\bs_\bs_\be_\br_\bt(_\bn_\bo_\bt _\bd_\bo_\bn_\be());\n 121\n-122 auto const line_size{std::size(line)};\n+122 auto const _\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be{std::size(_\bl_\bi_\bn_\be)};\n 123\n 124 // This function uses m_row as a buffer, across calls. The only reason for\n 125 // it to carry over across calls is to avoid reallocation.\n 126\n 127 // Make room for unescaping the line. It's a pessimistic size.\n 128 // Unusually, we're storing terminating zeroes *inside* the string.\n 129 // This is the only place where we modify m_row. MAKE SURE THE BUFFER DOES\n 130 // NOT GET RESIZED while we're working, because we're working with views\n 131 // into its buffer.\n-132 m_row.resize(line_size + 1);\n+132 m_row.resize(_\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be + 1);\n 133\n-134 std::size_t offset{0u};\n+134 std::size_t _\bo_\bf_\bf_\bs_\be_\bt{0_\bu};\n 135 char *write{m_row.data()};\n 136\n 137 // DO NOT shrink m_row to fit. We're carrying views pointing into the\n 138 // buffer. (Also, how useful would shrinking really be?)\n 139\n 140 // Folding expression: scan and unescape each field, and convert it to its\n 141 // requested type.\n-142 std::tuple data{parse_field(line, offset, write)...};\n+142 std::tuple<_\bT_\bY_\bP_\bE...> data{_\bp_\ba_\br_\bs_\be_\b__\bf_\bi_\be_\bl_\bd_\b<_\bT_\bY_\bP_\bE_\b>(_\bl_\bi_\bn_\be, _\bo_\bf_\bf_\bs_\be_\bt, write)...};\n 143\n-144 assert(offset == line_size + 1u);\n+144 _\ba_\bs_\bs_\be_\br_\bt(_\bo_\bf_\bf_\bs_\be_\bt == _\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be + 1u);\n 145 return data;\n 146 }\n 147\n 149 std::pair _\br_\be_\ba_\bd_\b__\bl_\bi_\bn_\be() &;\n 150\n 151private:\n 153\n-156 static inline _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *get_finder(_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be const &tx);\n+156 static inline _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *get_finder(_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be const &_\bt_\bx);\n 157\n 159\n 173 std::tuple\n-174 read_field(_\bz_\bv_\bi_\be_\bw line, std::size_t offset, char *write)\n+174 read_field(_\bz_\bv_\bi_\be_\bw _\bl_\bi_\bn_\be, std::size_t _\bo_\bf_\bf_\bs_\be_\bt, char *write)\n 175 {\n 176#if !defined(NDEBUG)\n-177 auto const line_size{std::size(line)};\n+177 auto const _\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be{std::size(_\bl_\bi_\bn_\be)};\n 178#endif\n 179\n-180 assert(offset <= line_size);\n+180 _\ba_\bs_\bs_\be_\br_\bt(_\bo_\bf_\bf_\bs_\be_\bt <= _\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be);\n 181\n-182 char const *lp{std::data(line)};\n+182 char const *_\bl_\bp{std::data(_\bl_\bi_\bn_\be)};\n 183\n 184 // The COPY line now ends in a tab. (We replace the trailing newline with\n 185 // that to simplify the loop here.)\n-186 assert(lp[line_size] == '\\t');\n-187 assert(lp[line_size + 1] == '\\0');\n+186 _\ba_\bs_\bs_\be_\br_\bt(_\bl_\bp[_\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be] == '\\t');\n+187 _\ba_\bs_\bs_\be_\br_\bt(_\bl_\bp[_\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be + 1] == '\\0');\n 188\n-189 if ((lp[offset] == '\\\\') and (lp[offset + 1] == 'N'))\n+189 if ((_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt] == '\\\\') _\ba_\bn_\bd (_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt + 1] == 'N'))\n 190 {\n 191 // Null field. Consume the \"\\N\" and the field separator.\n-192 offset += 3;\n-193 assert(offset <= (line_size + 1));\n-194 assert(lp[offset - 1] == '\\t');\n+192 _\bo_\bf_\bf_\bs_\be_\bt += 3;\n+193 _\ba_\bs_\bs_\be_\br_\bt(_\bo_\bf_\bf_\bs_\be_\bt <= (_\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be + 1));\n+194 _\ba_\bs_\bs_\be_\br_\bt(_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt - 1] == '\\t');\n 195 // Return a null value. There's nothing to write into m_row.\n-196 return {offset, write, {}};\n+196 return {_\bo_\bf_\bf_\bs_\be_\bt, write, {}};\n 197 }\n 198\n 199 // Beginning of the field text in the row buffer.\n-200 char const *const field_begin{write};\n+200 char const *const _\bf_\bi_\be_\bl_\bd_\b__\bb_\be_\bg_\bi_\bn{write};\n 201\n 202 // We're relying on several assumptions just for making the main loop\n 203 // condition work:\n 204 // * The COPY line ends in a newline.\n 205 // * Multibyte characters never start with an ASCII-range byte.\n 206 // * We can index a view beyond its bounds (but within its address space).\n 207 //\n 208 // Effectively, the newline acts as a final field separator.\n-209 while (lp[offset] != '\\t')\n+209 while (_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt] != '\\t')\n 210 {\n-211 assert(lp[offset] != '\\0');\n+211 _\ba_\bs_\bs_\be_\br_\bt(_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt] != '\\0');\n 212\n 213 // Beginning of the next character of interest (or the end of the line).\n-214 auto const stop_char{m_char_finder(line, offset)};\n-215 PQXX_ASSUME(stop_char > offset);\n-216 assert(stop_char < (line_size + 1));\n+214 auto const _\bs_\bt_\bo_\bp_\b__\bc_\bh_\ba_\br{m_char_finder(_\bl_\bi_\bn_\be, _\bo_\bf_\bf_\bs_\be_\bt)};\n+215 PQXX_ASSUME(_\bs_\bt_\bo_\bp_\b__\bc_\bh_\ba_\br > _\bo_\bf_\bf_\bs_\be_\bt);\n+216 _\ba_\bs_\bs_\be_\br_\bt(_\bs_\bt_\bo_\bp_\b__\bc_\bh_\ba_\br < (_\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be + 1));\n 217\n 218 // Copy the text we have so far. It's got no special characters in it.\n-219 std::memcpy(write, &lp[offset], stop_char - offset);\n-220 write += (stop_char - offset);\n-221 offset = stop_char;\n+219 std::memcpy(write, &_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt], _\bs_\bt_\bo_\bp_\b__\bc_\bh_\ba_\br - _\bo_\bf_\bf_\bs_\be_\bt);\n+220 write += (_\bs_\bt_\bo_\bp_\b__\bc_\bh_\ba_\br - _\bo_\bf_\bf_\bs_\be_\bt);\n+221 _\bo_\bf_\bf_\bs_\be_\bt = _\bs_\bt_\bo_\bp_\b__\bc_\bh_\ba_\br;\n 222\n 223 // We're still within the line.\n-224 char const special{lp[offset]};\n-225 if (special == '\\\\')\n+224 char const _\bs_\bp_\be_\bc_\bi_\ba_\bl{_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt]};\n+225 if (_\bs_\bp_\be_\bc_\bi_\ba_\bl == '\\\\')\n 226 {\n 227 // Escape sequence.\n 228 // Consume the backslash.\n-229 ++offset;\n-230 assert(offset < line_size);\n+229 ++_\bo_\bf_\bf_\bs_\be_\bt;\n+230 _\ba_\bs_\bs_\be_\br_\bt(_\bo_\bf_\bf_\bs_\be_\bt < _\bl_\bi_\bn_\be_\b__\bs_\bi_\bz_\be);\n 231\n 232 // The database will only escape ASCII characters, so we assume that\n 233 // we're dealing with a single-byte character.\n-234 char const escaped{lp[offset]};\n-235 assert((escaped >> 7) == 0);\n-236 ++offset;\n-237 *write++ = _\bu_\bn_\be_\bs_\bc_\ba_\bp_\be_\b__\bc_\bh_\ba_\br(escaped);\n+234 char const _\be_\bs_\bc_\ba_\bp_\be_\bd{_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt]};\n+235 _\ba_\bs_\bs_\be_\br_\bt((_\be_\bs_\bc_\ba_\bp_\be_\bd >> 7) == 0);\n+236 ++_\bo_\bf_\bf_\bs_\be_\bt;\n+237 *write++ = _\bu_\bn_\be_\bs_\bc_\ba_\bp_\be_\b__\bc_\bh_\ba_\br(_\be_\bs_\bc_\ba_\bp_\be_\bd);\n 238 }\n 239 else\n 240 {\n 241 // Field separator. Fall out of the loop.\n-242 assert(special == '\\t');\n+242 _\ba_\bs_\bs_\be_\br_\bt(_\bs_\bp_\be_\bc_\bi_\ba_\bl == '\\t');\n 243 }\n 244 }\n 245\n 246 // Hit the end of the field.\n-247 assert(lp[offset] == '\\t');\n+247 _\ba_\bs_\bs_\be_\br_\bt(_\bl_\bp[_\bo_\bf_\bf_\bs_\be_\bt] == '\\t');\n 248 *write = '\\0';\n 249 ++write;\n-250 ++offset;\n-251 return {offset, write, {field_begin, write - field_begin - 1}};\n+250 ++_\bo_\bf_\bf_\bs_\be_\bt;\n+251 return {_\bo_\bf_\bf_\bs_\be_\bt, write, {_\bf_\bi_\be_\bl_\bd_\b__\bb_\be_\bg_\bi_\bn, write - _\bf_\bi_\be_\bl_\bd_\b__\bb_\be_\bg_\bi_\bn - 1}};\n 252 }\n 253\n 255\n 268 template\n-269 TARGET parse_field(zview line, std::size_t &offset, char *&write)\n+269 _\bT_\bA_\bR_\bG_\bE_\bT parse_field(zview _\bl_\bi_\bn_\be, std::size_t &_\bo_\bf_\bf_\bs_\be_\bt, char *&write)\n 270 {\n-271 using field_type = strip_t;\n-272 using nullity = nullness;\n+271 using _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be = _\bs_\bt_\br_\bi_\bp_\b__\bt_\b<_\bT_\bA_\bR_\bG_\bE_\bT_\b>;\n+272 using _\bn_\bu_\bl_\bl_\bi_\bt_\by = _\bn_\bu_\bl_\bl_\bn_\be_\bs_\bs_\b<_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be_\b>;\n 273\n-274 assert(offset <= std::size(line));\n+274 _\ba_\bs_\bs_\be_\br_\bt(_\bo_\bf_\bf_\bs_\be_\bt <= std::size(_\bl_\bi_\bn_\be));\n 275\n-276 auto [new_offset, new_write, text]{read_field(line, offset, write)};\n-277 PQXX_ASSUME(new_offset > offset);\n-278 PQXX_ASSUME(new_write >= write);\n-279 offset = new_offset;\n-280 write = new_write;\n+276 auto [_\bn_\be_\bw_\b__\bo_\bf_\bf_\bs_\be_\bt, _\bn_\be_\bw_\b__\bw_\br_\bi_\bt_\be, text]{read_field(_\bl_\bi_\bn_\be, _\bo_\bf_\bf_\bs_\be_\bt, write)};\n+277 PQXX_ASSUME(_\bn_\be_\bw_\b__\bo_\bf_\bf_\bs_\be_\bt > _\bo_\bf_\bf_\bs_\be_\bt);\n+278 PQXX_ASSUME(_\bn_\be_\bw_\b__\bw_\br_\bi_\bt_\be >= write);\n+279 _\bo_\bf_\bf_\bs_\be_\bt = _\bn_\be_\bw_\b__\bo_\bf_\bf_\bs_\be_\bt;\n+280 write = _\bn_\be_\bw_\b__\bw_\br_\bi_\bt_\be;\n 281 if constexpr (nullity::always_null)\n 282 {\n 283 if (std::data(text) != nullptr)\n 284 throw conversion_error{_\bc_\bo_\bn_\bc_\ba_\bt(\n-285 \"Streaming a non-null value into a \", type_name,\n+285 \"Streaming a non-null value into a \", _\bt_\by_\bp_\be_\b__\bn_\ba_\bm_\be_\b<_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be_\b>,\n 286 \", which must always be null.\")};\n 287 }\n 288 else if (std::data(text) == nullptr)\n 289 {\n 290 if constexpr (nullity::has_null)\n 291 return nullity::null();\n 292 else\n-293 _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bt_\bh_\br_\bo_\bw_\b__\bn_\bu_\bl_\bl_\b__\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn(type_name);\n+293 _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bt_\bh_\br_\bo_\bw_\b__\bn_\bu_\bl_\bl_\b__\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn(_\bt_\by_\bp_\be_\b__\bn_\ba_\bm_\be_\b<_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be_\b>);\n 294 }\n 295 else\n 296 {\n 297 // Don't ever try to convert a non-null value to nullptr_t!\n-298 return from_string(text);\n+298 return _\bf_\br_\bo_\bm_\b__\bs_\bt_\br_\bi_\bn_\bg_\b<_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be_\b>(text);\n 299 }\n 300 }\n 301\n-303 void close() noexcept\n+303 void close() _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n 304 {\n-305 if (not _\bd_\bo_\bn_\be())\n+305 if (_\bn_\bo_\bt _\bd_\bo_\bn_\be())\n 306 {\n 307 m_char_finder = nullptr;\n 308 unregister_me();\n 309 }\n 310 }\n 311\n 313\n@@ -300,14 +300,19 @@\n void throw_null_conversion(std::string const &type)\n Throw exception for attempt to convert SQL NULL to given type.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn strconv.cxx:248\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc\n std::size_t(std::string_view haystack, std::size_t start) char_finder_func\n Function type: \"find first occurrence of specific any of ASCII characters.\".\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encoding_group.hxx:71\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bu_\bn_\be_\bs_\bc_\ba_\bp_\be_\b__\bc_\bh_\ba_\br\n constexpr char unescape_char(char escaped) noexcept\n Return original byte for escaped character.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:633\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n The end() iterator for a stream_query.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn stream_query.hxx:47\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/stream__query__impl_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/stream__query__impl_8hxx_source.html", "unified_diff": "@@ -104,80 +104,80 @@\n
4 * circular dependencies between headers.
\n
5 */
\n
6#if !defined(PQXX_H_STREAM_QUERY_IMPL)
\n
7# define PQXX_H_STREAM_QUERY_IMPL
\n
8
\n
9namespace pqxx::internal
\n
10{
\n-
11template<typename... TYPE>
\n+
11template<typename... TYPE>
\n
\n \n-
13 transaction_base &tx, std::string_view query) :
\n-
14 transaction_focus{tx, "stream_query"}, m_char_finder{get_finder(tx)}
\n+
13 transaction_base &tx, std::string_view query) :
\n+
14 transaction_focus{tx, "stream_query"}, m_char_finder{get_finder(tx)}
\n
15{
\n-
16 auto const r{tx.exec(internal::concat("COPY (", query, ") TO STDOUT"))};
\n-
17 r.expect_columns(sizeof...(TYPE));
\n-
18 r.expect_rows(0);
\n+
16 auto const r{tx.exec(internal::concat("COPY (", query, ") TO STDOUT"))};
\n+
17 r.expect_columns(sizeof...(TYPE));
\n+
18 r.expect_rows(0);
\n
19 register_me();
\n
20}
\n
\n
21
\n
22
\n-
23template<typename... TYPE>
\n+
23template<typename... TYPE>
\n
\n \n-
25 transaction_base &tx, std::string_view query, params const &parms) :
\n-
26 transaction_focus{tx, "stream_query"}, m_char_finder{get_finder(tx)}
\n+
25 transaction_base &tx, std::string_view query, params const &parms) :
\n+
26 transaction_focus{tx, "stream_query"}, m_char_finder{get_finder(tx)}
\n
27{
\n-
28 auto const r{tx.exec(internal::concat("COPY (", query, ") TO STDOUT"), parms)
\n-
29 .no_rows()};
\n-
30 if (r.columns() != sizeof...(TYPE))
\n+
28 auto const r{tx.exec(internal::concat("COPY (", query, ") TO STDOUT"), parms)
\n+
29 .no_rows()};
\n+
30 if (r.columns() != sizeof...(TYPE))
\n
31 throw usage_error{concat(
\n
32 "Parsing query stream with wrong number of columns: "
\n
33 "code expects ",
\n-
34 sizeof...(TYPE), " but query returns ", r.columns(), ".")};
\n+
34 sizeof...(TYPE), " but query returns ", r.columns(), ".")};
\n
35 register_me();
\n
36}
\n
\n
37
\n
38
\n-
39template<typename... TYPE>
\n+
39template<typename... TYPE>
\n
40inline char_finder_func *
\n-\n+\n
42{
\n-
43 auto const group{enc_group(tx.conn().encoding_id())};
\n-
44 return get_s_char_finder<'\\t', '\\\\'>(group);
\n+
43 auto const group{enc_group(tx.conn().encoding_id())};
\n+\n
45}
\n
46
\n
47
\n
48// C++20: Replace with generator? Could be faster (local vars vs. members).
\n
50
\n
\n-
53template<typename... TYPE> class stream_query_input_iterator
\n+
53template<typename... TYPE> class stream_query_input_iterator
\n
54{
\n-
55 using stream_t = stream_query<TYPE...>;
\n+
55 using stream_t = stream_query<TYPE...>;
\n
56
\n
57public:
\n-
58 using value_type = std::tuple<TYPE...>;
\n-
59 using difference_type = long;
\n+
58 using value_type = std::tuple<TYPE...>;
\n+
59 using difference_type = long;
\n
60
\n \n
62 m_home(&home),
\n
63 m_line{typename stream_query<TYPE...>::line_handle(
\n \n
65 {
\n
66 consume_line();
\n
67 }
\n \n \n
70
\n
\n \n
73 {
\n-
74 assert(not done());
\n+
74 assert(not done());
\n
75 consume_line();
\n
76 return *this;
\n
77 }
\n
\n
78
\n
80
\n
\n@@ -195,138 +195,133 @@\n
92 }
\n
\n
93
\n
95 bool operator==(stream_query_end_iterator) const noexcept { return done(); }
\n
\n \n
98 {
\n-
99 return not done();
\n+
99 return not done();
\n
100 }
\n
\n
101
\n \n-
103 operator=(stream_query_input_iterator &&rhs) noexcept
\n+
103 operator=(stream_query_input_iterator &&rhs) noexcept
\n
104 {
\n-
105 if (&rhs != this)
\n+
105 if (&rhs != this)
\n
106 {
\n-
107 m_line = std::move(rhs.m_line);
\n-
108 m_home = rhs.m_home;
\n-
109 m_line_size = rhs.m_line_size;
\n+
107 m_line = std::move(rhs.m_line);
\n+
108 m_home = rhs.m_home;
\n+
109 m_line_size = rhs.m_line_size;
\n
110 }
\n
111 return *this;
\n
112 }
\n
113
\n
114private:
\n
115 stream_query_input_iterator() {}
\n
116
\n-
118 bool done() const noexcept { return m_home->done(); }
\n+
118 bool done() const noexcept { return m_home->done(); }
\n
119
\n
121
\n
124 void consume_line() &
\n
125 {
\n-
126 auto [line, size]{m_home->read_line()};
\n-
127 m_line = std::move(line);
\n+
126 auto [line, size]{m_home->read_line()};
\n+
127 m_line = std::move(line);
\n
128 m_line_size = size;
\n
129 if (m_line)
\n
130 {
\n
131 // We know how many fields to expect. Replace the newline at the end
\n
132 // with the field separator, so the parsing loop only needs to scan for a
\n
133 // tab, not a tab or a newline.
\n-
134 char *const ptr{m_line.get()};
\n-
135 assert(ptr[size] == '\\n');
\n-
136 ptr[size] = '\\t';
\n+
134 char *const ptr{m_line.get()};
\n+
135 assert(ptr[size] == '\\n');
\n+
136 ptr[size] = '\\t';
\n
137 }
\n
138 }
\n
139
\n
140 stream_t *m_home;
\n
141
\n
143 typename stream_t::line_handle m_line;
\n
144
\n
146 std::size_t m_line_size;
\n
147};
\n
\n
148
\n
149
\n-
150template<typename... TYPE>
\n+
150template<typename... TYPE>
\n
151inline bool operator==(
\n-
152 stream_query_end_iterator, stream_query_input_iterator<TYPE...> const &i)
\n+
152 stream_query_end_iterator, stream_query_input_iterator<TYPE...> const &i)
\n
153{
\n-
154 return i.done();
\n+
154 return i.done();
\n
155}
\n
156
\n
157
\n-
158template<typename... TYPE>
\n+
158template<typename... TYPE>
\n
159inline bool operator!=(
\n-
160 stream_query_end_iterator, stream_query_input_iterator<TYPE...> const &i)
\n+
160 stream_query_end_iterator, stream_query_input_iterator<TYPE...> const &i)
\n
161{
\n-
162 return not i.done();
\n+
162 return not i.done();
\n
163}
\n
164
\n
165
\n
\n-
166template<typename... TYPE> inline auto stream_query<TYPE...>::begin() &
\n+
166template<typename... TYPE> inline auto stream_query<TYPE...>::begin() &
\n
167{
\n-
168 return stream_query_input_iterator<TYPE...>{*this};
\n+
168 return stream_query_input_iterator<TYPE...>{*this};
\n
169}
\n
\n
170
\n
171
\n-
172template<typename... TYPE>
\n-
173inline std::pair<typename stream_query<TYPE...>::line_handle, std::size_t>
\n+
172template<typename... TYPE>
\n+
173inline std::pair<typename stream_query<TYPE...>::line_handle, std::size_t>
\n
\n \n
175{
\n-
176 assert(not done());
\n+
176 assert(not done());
\n
177
\n
178 internal::gate::connection_stream_from gate{m_trans->conn()};
\n
179 try
\n
180 {
\n-
181 auto line{gate.read_copy_line()};
\n+
181 auto line{gate.read_copy_line()};
\n
182 // Check for completion.
\n-
183 if (not line.first)
\n+
183 if (not line.first)
\n
184 PQXX_UNLIKELY close();
\n-
185 return line;
\n+
185 return line;
\n
186 }
\n
187 catch (std::exception const &)
\n
188 {
\n
189 close();
\n
190 throw;
\n
191 }
\n
192}
\n
\n
193} // namespace pqxx::internal
\n
194#endif
\n-
int encoding_id() const
Get the connection's encoding, as a PostgreSQL-defined code.
Definition connection.cxx:1160
\n
Input iterator for stream_query.
Definition stream_query_impl.hxx:54
\n
stream_query_input_iterator & operator++() &
Pre-increment. This is what you'd normally want to use.
Definition stream_query_impl.hxx:72
\n
bool operator!=(stream_query_end_iterator) const noexcept
Comparison only works for comparing to end().
Definition stream_query_impl.hxx:97
\n
bool operator==(stream_query_end_iterator) const noexcept
Are we at the end?
Definition stream_query_impl.hxx:95
\n
value_type operator*() const
Dereference. There's no caching in here, so don't repeat calls.
Definition stream_query_impl.hxx:89
\n
stream_query_input_iterator operator++(int)
Post-increment. Only here to satisfy input_iterator concept.
Definition stream_query_impl.hxx:82
\n
Stream query results from the database. Used by transaction_base::stream.
Definition stream_query.hxx:80
\n
bool done() const &noexcept
Has this stream reached the end of its data?
Definition stream_query.hxx:106
\n
stream_query(transaction_base &tx, std::string_view query)
Execute query on tx, stream results.
Definition stream_query_impl.hxx:12
\n
std::tuple< TYPE... > parse_line(zview line) &
Parse and convert the latest line of data we received.
Definition stream_query.hxx:118
\n
auto begin() &
Begin iterator. Only for use by "range for.".
Definition stream_query_impl.hxx:166
\n
std::pair< line_handle, std::size_t > read_line() &
Read a COPY line from the server.
Definition stream_query_impl.hxx:174
\n
Build a parameter list for a parameterised or prepared statement.
Definition params.hxx:33
\n-
result expect_rows(size_type n) const
Check that result contains exactly n rows.
Definition result.hxx:321
\n-
result expect_columns(row_size_type cols) const
Expect that result consists of exactly cols columns.
Definition result.hxx:363
\n-
result no_rows() const
Expect that result contains no rows. Return result for convenience.
Definition result.hxx:353
\n
Base class for things that monopolise a transaction's attention.
Definition transaction_focus.hxx:29
\n
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38
\n
Error in usage of libpqxx library, similar to std::logic_error.
Definition except.hxx:249
\n-
constexpr connection & conn() const noexcept
The connection in which this transaction lives.
Definition transaction_base.hxx:1017
\n-
result exec(std::string_view query, std::string_view desc)
Execute a command.
Definition transaction_base.cxx:249
\n
Interface definition (and common code) for "transaction" classes.
Definition transaction_base.hxx:151
\n
void pqfreemem(void const *ptr) noexcept
Wrapper for PQfreemem(), with C++ linkage.
Definition util.cxx:206
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
std::string concat(TYPE... item)
Efficiently combine a bunch of items into one big string.
Definition concat.hxx:31
\n
pqxx::internal::encoding_group enc_group(std::string_view encoding_name)
Convert libpq encoding name to its libpqxx encoding group.
Definition encodings.cxx:35
\n
std::size_t(std::string_view haystack, std::size_t start) char_finder_func
Function type: "find first occurrence of specific any of ASCII characters.".
Definition encoding_group.hxx:71
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The end() iterator for a stream_query.
Definition stream_query.hxx:47
\n
Definition connection-stream_from.hxx:13
\n
\n \n \n
\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -10,75 +10,75 @@\n 4 * circular dependencies between headers.\n 5 */\n 6#if !defined(PQXX_H_STREAM_QUERY_IMPL)\n 7# define PQXX_H_STREAM_QUERY_IMPL\n 8\n 9namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 10{\n-11template\n+11template\n _\b1_\b2inline _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b>_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by(\n-13 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, std::string_view query) :\n-14 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs{tx, \"stream_query\"}, m_char_finder{get_finder(tx)}\n+13 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt_\bx, std::string_view query) :\n+14 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs{_\bt_\bx, \"stream_query\"}, m_char_finder{get_finder(_\bt_\bx)}\n 15{\n-16 auto const r{tx._\be_\bx_\be_\bc(_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt(\"COPY (\", query, \") TO STDOUT\"))};\n-17 r._\be_\bx_\bp_\be_\bc_\bt_\b__\bc_\bo_\bl_\bu_\bm_\bn_\bs(sizeof...(TYPE));\n-18 r._\be_\bx_\bp_\be_\bc_\bt_\b__\br_\bo_\bw_\bs(0);\n+16 auto const _\br{_\bt_\bx.exec(_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt(\"COPY (\", query, \") TO STDOUT\"))};\n+17 _\br.expect_columns(sizeof...(_\bT_\bY_\bP_\bE));\n+18 _\br.expect_rows(0);\n 19 register_me();\n 20}\n 21\n 22\n-23template\n+23template\n _\b2_\b4inline _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b>_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by(\n-25 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &tx, std::string_view query, _\bp_\ba_\br_\ba_\bm_\bs const &parms) :\n-26 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs{tx, \"stream_query\"}, m_char_finder{get_finder(tx)}\n+25 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be &_\bt_\bx, std::string_view query, _\bp_\ba_\br_\ba_\bm_\bs const &_\bp_\ba_\br_\bm_\bs) :\n+26 _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs{_\bt_\bx, \"stream_query\"}, m_char_finder{get_finder(_\bt_\bx)}\n 27{\n-28 auto const r{tx._\be_\bx_\be_\bc(_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt(\"COPY (\", query, \") TO STDOUT\"),\n-parms)\n-29 ._\bn_\bo_\b__\br_\bo_\bw_\bs()};\n-30 if (r.columns() != sizeof...(TYPE))\n+28 auto const _\br{_\bt_\bx.exec(_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bo_\bn_\bc_\ba_\bt(\"COPY (\", query, \") TO STDOUT\"),\n+_\bp_\ba_\br_\bm_\bs)\n+29 .no_rows()};\n+30 if (_\br.columns() != sizeof...(TYPE))\n 31 throw _\bu_\bs_\ba_\bg_\be_\b__\be_\br_\br_\bo_\br{_\bc_\bo_\bn_\bc_\ba_\bt(\n 32 \"Parsing query stream with wrong number of columns: \"\n 33 \"code expects \",\n-34 sizeof...(TYPE), \" but query returns \", r.columns(), \".\")};\n+34 sizeof...(_\bT_\bY_\bP_\bE), \" but query returns \", _\br.columns(), \".\")};\n 35 register_me();\n 36}\n 37\n 38\n-39template\n+39template\n 40inline _\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc *\n-41_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b>_\b:_\b:_\bg_\be_\bt_\b__\bf_\bi_\bn_\bd_\be_\br(_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be const &tx)\n+41_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b>_\b:_\b:_\bg_\be_\bt_\b__\bf_\bi_\bn_\bd_\be_\br(_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be const &_\bt_\bx)\n 42{\n-43 auto const group{_\be_\bn_\bc_\b__\bg_\br_\bo_\bu_\bp(tx._\bc_\bo_\bn_\bn()._\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bi_\bd())};\n-44 return get_s_char_finder<'\\t', '\\\\'>(group);\n+43 auto const _\bg_\br_\bo_\bu_\bp{_\be_\bn_\bc_\b__\bg_\br_\bo_\bu_\bp(_\bt_\bx.conn().encoding_id())};\n+44 return _\bg_\be_\bt_\b__\bs_\b__\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b<_\b'_\b\\_\bt_\b'_\b,_\b _\b'_\b\\_\b\\_\b'_\b>(_\bg_\br_\bo_\bu_\bp);\n 45}\n 46\n 47\n 48// C++20: Replace with generator? Could be faster (local vars vs. members).\n 50\n-_\b5_\b3template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+_\b5_\b3template class _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n 54{\n-55 using _\bs_\bt_\br_\be_\ba_\bm_\b__\bt = _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by;\n+55 using _\bs_\bt_\br_\be_\ba_\bm_\b__\bt = _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by<_\bT_\bY_\bP_\bE...>;\n 56\n 57public:\n-58 using value_type = std::tuple;\n-59 using difference_type = long;\n+58 using value_type = std::tuple<_\bT_\bY_\bP_\bE...>;\n+59 using difference_type = _\bl_\bo_\bn_\bg;\n 60\n 61 explicit _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br(_\bs_\bt_\br_\be_\ba_\bm_\b__\bt &home) :\n 62 m_home(&home),\n 63 m_line{typename stream_query::line_handle(\n 64 nullptr, _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bp_\bq_\b:_\b:_\bp_\bq_\bf_\br_\be_\be_\bm_\be_\bm)}\n 65 {\n 66 consume_line();\n 67 }\n 68 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br const &) = default;\n 69 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &&) = default;\n 70\n _\b7_\b2 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+() &\n 73 {\n-74 assert(not done());\n+74 _\ba_\bs_\bs_\be_\br_\bt(_\bn_\bo_\bt done());\n 75 consume_line();\n 76 return *this;\n 77 }\n 78\n 80\n _\b8_\b2 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+(int)\n 83 {\n@@ -90,108 +90,104 @@\n 90 {\n 91 return m_home->_\bp_\ba_\br_\bs_\be_\b__\bl_\bi_\bn_\be(_\bz_\bv_\bi_\be_\bw{m_line.get(), m_line_size});\n 92 }\n 93\n _\b9_\b5 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br) const noexcept { return done(); }\n _\b9_\b7 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br) const noexcept\n 98 {\n-99 return not done();\n+99 return _\bn_\bo_\bt done();\n 100 }\n 101\n 102 _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &\n-103 operator=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &&rhs) noexcept\n+103 operator=(_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br &&_\br_\bh_\bs) noexcept\n 104 {\n-105 if (&rhs != this)\n+105 if (&_\br_\bh_\bs != this)\n 106 {\n-107 m_line = std::move(rhs.m_line);\n-108 m_home = rhs.m_home;\n-109 m_line_size = rhs.m_line_size;\n+107 m_line = std::move(_\br_\bh_\bs.m_line);\n+108 m_home = _\br_\bh_\bs.m_home;\n+109 m_line_size = _\br_\bh_\bs.m_line_size;\n 110 }\n 111 return *this;\n 112 }\n 113\n 114private:\n 115 stream_query_input_iterator() {}\n 116\n-118 bool done() const noexcept { return m_home->_\bd_\bo_\bn_\be(); }\n+118 bool done() _\bc_\bo_\bn_\bs_\bt _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt { return m_home->_\bd_\bo_\bn_\be(); }\n 119\n 121\n 124 void consume_line() &\n 125 {\n-126 auto [line, size]{m_home->_\br_\be_\ba_\bd_\b__\bl_\bi_\bn_\be()};\n-127 m_line = std::move(line);\n+126 auto [_\bl_\bi_\bn_\be, size]{m_home->_\br_\be_\ba_\bd_\b__\bl_\bi_\bn_\be()};\n+127 m_line = std::move(_\bl_\bi_\bn_\be);\n 128 m_line_size = size;\n 129 if (m_line)\n 130 {\n 131 // We know how many fields to expect. Replace the newline at the end\n 132 // with the field separator, so the parsing loop only needs to scan for a\n 133 // tab, not a tab or a newline.\n-134 char *const ptr{m_line.get()};\n-135 assert(ptr[size] == '\\n');\n-136 ptr[size] = '\\t';\n+134 char *const _\bp_\bt_\br{m_line.get()};\n+135 _\ba_\bs_\bs_\be_\br_\bt(_\bp_\bt_\br[size] == '\\n');\n+136 _\bp_\bt_\br[size] = '\\t';\n 137 }\n 138 }\n 139\n 140 stream_t *m_home;\n 141\n 143 typename stream_t::line_handle m_line;\n 144\n 146 std::size_t m_line_size;\n 147};\n 148\n 149\n-150template\n+150template\n 151inline bool operator==(\n-152 stream_query_end_iterator, stream_query_input_iterator const &i)\n+152 stream_query_end_iterator, _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b> const &_\bi)\n 153{\n-154 return i.done();\n+154 return _\bi.done();\n 155}\n 156\n 157\n-158template\n+158template\n 159inline bool operator!=(\n-160 stream_query_end_iterator, stream_query_input_iterator const &i)\n+160 stream_query_end_iterator, _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b> const &_\bi)\n 161{\n-162 return not i.done();\n+162 return _\bn_\bo_\bt _\bi.done();\n 163}\n 164\n 165\n-_\b1_\b6_\b6template inline auto _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b>_\b:_\b:_\bb_\be_\bg_\bi_\bn() &\n+_\b1_\b6_\b6template inline auto _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b>_\b:_\b:_\bb_\be_\bg_\bi_\bn() &\n 167{\n-168 return _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br{*this};\n+168 return _\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br<_\bT_\bY_\bP_\bE...>{*this};\n 169}\n 170\n 171\n-172template\n-173inline std::pair::line_handle, std::size_t>\n+172template\n+173inline std::pair::line_handle, std::size_t>\n _\b1_\b7_\b4_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b<_\bT_\bY_\bP_\bE_\b._\b._\b._\b>_\b:_\b:_\br_\be_\ba_\bd_\b__\bl_\bi_\bn_\be() &\n 175{\n-176 assert(not done());\n+176 _\ba_\bs_\bs_\be_\br_\bt(_\bn_\bo_\bt done());\n 177\n 178 _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bg_\ba_\bt_\be_\b:_\b:_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm gate{m_trans->conn()};\n 179 try\n 180 {\n-181 auto line{gate.read_copy_line()};\n+181 auto _\bl_\bi_\bn_\be{gate.read_copy_line()};\n 182 // Check for completion.\n-183 if (not line.first)\n+183 if (_\bn_\bo_\bt _\bl_\bi_\bn_\be.first)\n 184 PQXX_UNLIKELY close();\n-185 return line;\n+185 return _\bl_\bi_\bn_\be;\n 186 }\n 187 catch (std::exception const &)\n 188 {\n 189 close();\n 190 throw;\n 191 }\n 192}\n 193} // namespace pqxx::internal\n 194#endif\n-_\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b:_\b:_\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\b__\bi_\bd\n-int encoding_id() const\n-Get the connection's encoding, as a PostgreSQL-defined code.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn connection.cxx:1160\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n Input iterator for stream_query.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn stream_query_impl.hxx:54\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\bi_\bn_\bp_\bu_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b+\n stream_query_input_iterator & operator++() &\n Pre-increment. This is what you'd normally want to use.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn stream_query_impl.hxx:72\n@@ -233,43 +229,23 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b:_\b:_\br_\be_\ba_\bd_\b__\bl_\bi_\bn_\be\n std::pair< line_handle, std::size_t > read_line() &\n Read a COPY line from the server.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn stream_query_impl.hxx:174\n _\bp_\bq_\bx_\bx_\b:_\b:_\bp_\ba_\br_\ba_\bm_\bs\n Build a parameter list for a parameterised or prepared statement.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn params.hxx:33\n-_\bp_\bq_\bx_\bx_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\be_\bx_\bp_\be_\bc_\bt_\b__\br_\bo_\bw_\bs\n-result expect_rows(size_type n) const\n-Check that result contains exactly n rows.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn result.hxx:321\n-_\bp_\bq_\bx_\bx_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\be_\bx_\bp_\be_\bc_\bt_\b__\bc_\bo_\bl_\bu_\bm_\bn_\bs\n-result expect_columns(row_size_type cols) const\n-Expect that result consists of exactly cols columns.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn result.hxx:363\n-_\bp_\bq_\bx_\bx_\b:_\b:_\br_\be_\bs_\bu_\bl_\bt_\b:_\b:_\bn_\bo_\b__\br_\bo_\bw_\bs\n-result no_rows() const\n-Expect that result contains no rows. Return result for convenience.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn result.hxx:353\n _\bp_\bq_\bx_\bx_\b:_\b:_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bf_\bo_\bc_\bu_\bs\n Base class for things that monopolise a transaction's attention.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transaction_focus.hxx:29\n _\bp_\bq_\bx_\bx_\b:_\b:_\bz_\bv_\bi_\be_\bw\n Marker-type wrapper: zero-terminated std::string_view.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn zview.hxx:38\n _\bp_\bq_\bx_\bx_\b:_\b:_\bu_\bs_\ba_\bg_\be_\b__\be_\br_\br_\bo_\br\n Error in usage of libpqxx library, similar to std::logic_error.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn except.hxx:249\n-_\bp_\bq_\bx_\bx_\b:_\b:_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be_\b:_\b:_\bc_\bo_\bn_\bn\n-constexpr connection & conn() const noexcept\n-The connection in which this transaction lives.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transaction_base.hxx:1017\n-_\bp_\bq_\bx_\bx_\b:_\b:_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be_\b:_\b:_\be_\bx_\be_\bc\n-result exec(std::string_view query, std::string_view desc)\n-Execute a command.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transaction_base.cxx:249\n _\bp_\bq_\bx_\bx_\b:_\b:_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bb_\ba_\bs_\be\n Interface definition (and common code) for \"transaction\" classes.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn transaction_base.hxx:151\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bp_\bq_\b:_\b:_\bp_\bq_\bf_\br_\be_\be_\bm_\be_\bm\n void pqfreemem(void const *ptr) noexcept\n Wrapper for PQfreemem(), with C++ linkage.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.cxx:206\n@@ -284,14 +260,19 @@\n pqxx::internal::encoding_group enc_group(std::string_view encoding_name)\n Convert libpq encoding name to its libpqxx encoding group.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:35\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bh_\ba_\br_\b__\bf_\bi_\bn_\bd_\be_\br_\b__\bf_\bu_\bn_\bc\n std::size_t(std::string_view haystack, std::size_t start) char_finder_func\n Function type: \"find first occurrence of specific any of ASCII characters.\".\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encoding_group.hxx:71\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\be_\ba_\bm_\b__\bq_\bu_\be_\br_\by_\b__\be_\bn_\bd_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n The end() iterator for a stream_query.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn stream_query.hxx:47\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bg_\ba_\bt_\be_\b:_\b:_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\br_\bo_\bm\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn connection-stream_from.hxx:13\n * _\bi_\bn_\bc_\bl_\bu_\bd_\be\n * _\bp_\bq_\bx_\bx\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/streams.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/streams.html", "unified_diff": "@@ -92,48 +92,48 @@\n
    \n
    Streams
    \n
    \n
    \n

    Most of the time it's fine to retrieve data from the database using SELECT queries, and store data using INSERT. But for those cases where efficiency matters, there are two data streaming mechanisms to help you do this more efficiently: \"streaming queries,\" for reading query results from the database; and the pqxx::stream_to class, for writing data from the client into a table.

    \n

    These are less flexible than SQL queries. Also, depending on your needs, it may be a problem to lose your connection while you're in mid-stream, not knowing that the query may not complete. But, you get some scalability and memory efficiencies in return.

    \n

    Just like regular querying, these streaming mechanisms do data conversion for you. You deal with the C++ data types, and the database deals with the SQL data types.

    \n-

    \n+

    \n Interlude: null values

    \n

    So how do you deal with nulls? It depends on the C++ type you're using. Some types may have a built-in null value. For instance, if you have a char const * value and you convert it to an SQL string, then converting a nullptr will produce a NULL SQL value.

    \n

    But what do you do about C++ types which don't have a built-in null value, such as int? The trick is to wrap it in std::optional. The difference between int and std::optional<int> is that the former always has an int value, and the latter doesn't have to.

    \n

    Actually it's not just std::optional. You can do the same thing with std::unique_ptr or std::shared_ptr. A smart pointer is less efficient than std::optional in most situations because they allocate their value on the heap, but sometimes that's what you want in order to save moving or copying large values around.

    \n

    This part is not generic though. It won't work with just any smart-pointer type, just the ones which are explicitly supported: shared_ptr and unique_ptr. If you really need to, you can build support for additional wrappers and smart pointers by copying the implementation patterns from the existing smart-pointer support.

    \n-

    \n+

    \n Streaming data <em>from a query</em>

    \n

    Use transaction_base::stream to read large amounts of data directly from the database. In terms of API it works just like transaction_base::query, but it's faster than the exec and query functions For larger data sets. Also, you won't need to keep your full result set in memory. That can really matter with larger data sets.

    \n

    Another performance advantage is that with a streaming query, you can start processing your data right after the first row of data comes in from the server. With exec() or query() you need to wait to receive all data, and only then can you begin processing. With streaming queries you can be processing data on the client side while the server is still sending you the rest.

    \n

    Not all kinds of queries will work in a stream. Internally the streams make use of PostgreSQL's COPY command, so see the PostgreSQL documentation for COPY for the exact limitations. Basic SELECT and UPDATE ... RETURNING queries will just work, but fancier constructs may not.

    \n

    As you read a row, the stream converts its fields to a tuple type containing the value types you ask for:

    \n
    for (auto [name, score] :
    \n
    tx.stream<std::string_view, int>("SELECT name, points FROM score")
    \n
    )
    \n
    process(name, score);
    \n

    On each iteration, the stream gives you a std::tuple of the column types you specify. It converts the row's fields (which internally arrive at the client in text format) to your chosen types.

    \n

    The auto [name, score] in the example is a structured binding which unpacks the tuple's fields into separate variables. If you prefer, you can choose to receive the tuple instead: for (std::tuple<int, std::string_view> :.

    \n-

    \n+

    \n Is streaming right for my query?

    \n

    Here are the things you need to be aware of when deciding whether to stream a query, or just execute it normally.

    \n

    First, when you stream a query, there is no metadata describing how many rows it returned, what the columns are called, and so on. With a regular query you get a result object which contains this metadata as well as the data itself. If you absolutely need this metadata for a particular query, then that means you can't stream the query.

    \n

    Second, under the bonnet, streaming from a query uses a PostgreSQL-specific SQL command COPY (...) TO STDOUT. There are some limitations on what kinds of queries this command can handle. These limitations may change over time, so I won't describe them here. Instead, see PostgreSQL's COPY documentation for the details. (Look for the TO variant, with a query as the data source.)

    \n

    Third: when you stream a query, you start receiving and processing data before you even know whether you will receive all of the data. If you lose your connection to the database halfway through, you will have processed half your data, unaware that the query may never execute to completion. If this is a problem for your application, don't stream that query!

    \n

    The fourth and final factor is performance. If you're interested in streaming, obviously you care about this one.

    \n

    I can't tell you a priori whether streaming will make your query faster. It depends on how many rows you're retrieving, how much data there is in those rows, the speed of your network connection to the database, your client encoding, how much processing you do per row, and the details of the client-side system: hardware speed, CPU load, and available memory.

    \n

    Ultimately, no amount of theory beats real-world measurement for your specific situation so... if it really matters, measure. (And as per Knuth's Law: if it doesn't really matter, don't optimise.)

    \n

    That said, here are a few data points from some toy benchmarks:

    \n

    If your query returns e.g. a hundred small rows, it's not likely to make up a significant portion of your application's run time. Streaming is likely to be slower than regular querying, but most likely the difference just won't amtter.

    \n

    If your query returns a thousand small rows, streaming is probably still going to be a bit slower than regular querying, though \"your mileage may vary.\"

    \n

    If you're querying ten thousand small rows, however, it becomes more likely that streaming will speed it up. The advantage increases as the number of rows increases.

    \n

    That's for small rows, based on a test where each row consisted of just one integer number. If your query returns larger rows, with more columns, I find that streaming seems to become more attractive. In a simple test with 4 columns (two integers and two strings), streaming even just a thousand rows was considerably faster than a regular query.

    \n

    If your network connection to the database is slow, however, that may make streaming a bit less effcient. There is a bit more communication back and forth between the client and the database to set up a stream. This overhead takes a more or less constant amount of time, so for larger data sets it will tend to become insignificant compared to the other performance costs.

    \n-

    \n+

    \n Streaming data <em>into a table</em>

    \n

    Use stream_to to write data directly to a database table. This saves you having to perform an INSERT for every row, and so it can be significantly faster if you want to insert more than just one or two rows at a time.

    \n

    As with stream_from, you can specify the table and the columns, and not much else. You insert tuple-like objects of your choice:

    \n
    \n
    tx,
    \n
    "score",
    \n
    std::vector<std::string>{"name", "points"}};
    \n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1array__string__traits.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1array__string__traits.html", "unified_diff": "@@ -100,34 +100,34 @@\n \n

    String traits for SQL arrays. \n More...

    \n \n \n \n+staticzview \n \n \n+staticchar * \n \n \n+static std::size_t \n \n

    \n Static Public Member Functions

    \n-static zview to_buf (char *begin, char *end, Container const &value)
    to_buf (char *begin, char *end, Container const &value)
     
    \n-static char * into_buf (char *begin, char *end, Container const &value)
    into_buf (char *begin, char *end, Container const &value)
     
    \n-static std::size_t size_buffer (Container const &value) noexcept
    size_buffer (Container const &value) noexcept
     
    \n \n \n+staticconstexprbool \n \n \n+staticconstexprbool \n \n

    \n Static Public Attributes

    \n-static constexpr bool converts_to_string {true}
    converts_to_string {true}
     
    \n-static constexpr bool converts_from_string {false}
    converts_from_string {false}
     
    \n

    Detailed Description

    \n-
    template<typename Container>
    \n+
    template<typename Container>
    \n struct pqxx::internal::array_string_traits< Container >

    String traits for SQL arrays.

    \n

    The documentation for this struct was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/conversions.hxx
    • \n
    \n
    \n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,27 +3,27 @@\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::array_string_traits< Container > Struct Template Reference\n String traits for SQL arrays. _\bM_\bo_\br_\be_\b._\b._\b.\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- static _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, Container const &value)\n+ _\bs_\bt_\ba_\bt_\bi_\bc _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0\n- static char *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, Container const &value)\n+ _\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bh_\ba_\br *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0\n-static std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (Container const &value) noexcept\n+_\bs_\bt_\ba_\bt_\bi_\bc std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bc_\bo_\bn_\bs_\bt &value) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc A\bAt\btt\btr\bri\bib\bbu\but\bte\bes\bs\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {true}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {_\bt_\br_\bu_\be}\n \u00a0\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {false}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {_\bf_\ba_\bl_\bs_\be}\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-template\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br>\n struct pqxx::internal::array_string_traits< Container >\n String traits for SQL arrays.\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1c__params.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1c__params.html", "unified_diff": "@@ -100,33 +100,33 @@\n \n

    Internal type: encode statement parameters. \n More...

    \n \n \n \n+ \n \n \n \n+ \n \n \n+void \n \n \n

    \n Public Member Functions

    \n- c_params (c_params const &)=delete
    c_params (c_params const &)=delete
     Copying these objects is pointless and expensive. Don't do it.
     
    \n- c_params (c_params &&)=default
    c_params (c_params &&)=default
     
    \n-void reserve (std::size_t n) &
    reserve (std::size_t n) &
     Pre-allocate storage for n parameters.
     
    \n \n \n+std::vector< charconst * > \n \n \n \n+std::vector< int > \n \n \n \n \n \n

    \n Public Attributes

    \n-std::vector< char const * > values
    values
     As used by libpq: pointers to parameter values.
     
    \n-std::vector< int > lengths
    lengths
     As used by libpq: lengths of non-null arguments, in bytes.
     
    \n std::vector< formatformats
     As used by libpq: effectively boolean \"is this a binary parameter?\".
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,27 +3,27 @@\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::c_params Struct Reference\n Internal type: encode statement parameters. _\bM_\bo_\br_\be_\b._\b._\b.\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 c\bc_\b_p\bpa\bar\bra\bam\bms\bs (_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs const &)=delete\n+ \u00a0 c\bc_\b_p\bpa\bar\bra\bam\bms\bs (_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs _\bc_\bo_\bn_\bs_\bt &)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0 Copying these objects is pointless and expensive. Don't do it.\n \u00a0\n- \u00a0 c\bc_\b_p\bpa\bar\bra\bam\bms\bs (_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs &&)=default\n+ \u00a0 c\bc_\b_p\bpa\bar\bra\bam\bms\bs (_\bc_\b__\bp_\ba_\br_\ba_\bm_\bs &&)=_\bd_\be_\bf_\ba_\bu_\bl_\bt\n \u00a0\n-void\u00a0 r\bre\bes\bse\ber\brv\bve\be (std::size_t n) &\n+_\bv_\bo_\bi_\bd\u00a0 r\bre\bes\bse\ber\brv\bve\be (std::size_t _\bn) &\n \u00a0 Pre-allocate storage for n parameters.\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc A\bAt\btt\btr\bri\bib\bbu\but\bte\bes\bs\n-std::vector< char const * >\u00a0 v\bva\bal\blu\bue\bes\bs\n+std::vector< _\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt * >\u00a0 v\bva\bal\blu\bue\bes\bs\n \u00a0 As used by libpq: pointers to parameter values.\n \u00a0\n- std::vector< int >\u00a0 l\ble\ben\bng\bgt\bth\bhs\bs\n+ std::vector< _\bi_\bn_\bt >\u00a0 l\ble\ben\bng\bgt\bth\bhs\bs\n \u00a0 As used by libpq: lengths of non-null arguments,\n in bytes.\n \u00a0\n std::vector< _\bf_\bo_\br_\bm_\ba_\bt >\u00a0 f\bfo\bor\brm\bma\bat\bts\bs\n \u00a0 As used by libpq: effectively boolean \"is this a\n binary parameter?\".\n \u00a0\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1disallowed__ambiguous__char__conversion.html", "unified_diff": "@@ -100,37 +100,37 @@\n \n

    Deliberately nonfunctional conversion traits for char types. \n More...

    \n \n \n \n+staticchar * \n \n \n+staticconstexprzview \n \n \n+staticconstexpr std::size_t \n \n \n+staticCHAR_TYPE \n \n

    \n Static Public Member Functions

    \n-static char * into_buf (char *, char *, CHAR_TYPE)=delete
    into_buf (char *, char *, CHAR_TYPE)=delete
     
    \n-static constexpr zview to_buf (char *, char *, CHAR_TYPE const &) noexcept=delete
    to_buf (char *, char *, CHAR_TYPE const &) noexcept=delete
     
    \n-static constexpr std::size_t size_buffer (CHAR_TYPE const &) noexcept=delete
    size_buffer (CHAR_TYPE const &) noexcept=delete
     
    \n-static CHAR_TYPE from_string (std::string_view)=delete
    from_string (std::string_view)=delete
     
    \n \n \n+staticconstexprbool \n \n \n+staticconstexprbool \n \n

    \n Static Public Attributes

    \n-static constexpr bool converts_to_string {false}
    converts_to_string {false}
     
    \n-static constexpr bool converts_from_string {false}
    converts_from_string {false}
     
    \n

    Detailed Description

    \n-
    template<typename CHAR_TYPE>
    \n+
    template<typename CHAR_TYPE>
    \n struct pqxx::internal::disallowed_ambiguous_char_conversion< CHAR_TYPE >

    Deliberately nonfunctional conversion traits for char types.

    \n

    There are no string conversions for char and its signed and unsigned variants. Such a conversion would be dangerously ambiguous: should we treat it as text, or as a small integer? It'd be an open invitation for bugs.

    \n

    But the error message when you get this wrong is very cryptic. So, we derive dummy string_traits implementations from this dummy type, and ensure that the compiler disallows their use. The compiler error message will at least contain a hint of the root of the problem.

    \n

    The documentation for this struct was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/conversions.hxx
    • \n
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4,30 +4,30 @@\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::disallowed_ambiguous_char_conversion< CHAR_TYPE > Struct\n Template Reference\n Deliberately nonfunctional conversion traits for char types. _\bM_\bo_\br_\be_\b._\b._\b.\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- static char *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (char *, char *, CHAR_TYPE)=delete\n+ _\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bh_\ba_\br *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *, _\bc_\bh_\ba_\br *, _\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n- static constexpr _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (char *, char *, CHAR_TYPE const &)\n- noexcept=delete\n+ _\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *, _\bc_\bh_\ba_\br *, _\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE _\bc_\bo_\bn_\bs_\bt &)\n+ _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n-static constexpr std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (CHAR_TYPE const &) noexcept=delete\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (_\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE _\bc_\bo_\bn_\bs_\bt &) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n- static CHAR_TYPE\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view)=delete\n+ _\bs_\bt_\ba_\bt_\bi_\bc _\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc A\bAt\btt\btr\bri\bib\bbu\but\bte\bes\bs\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {false}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {_\bf_\ba_\bl_\bs_\be}\n \u00a0\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {false}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {_\bf_\ba_\bl_\bs_\be}\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-template\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bC_\bH_\bA_\bR_\b__\bT_\bY_\bP_\bE>\n struct pqxx::internal::disallowed_ambiguous_char_conversion< CHAR_TYPE >\n Deliberately nonfunctional conversion traits for char types.\n There are no string conversions for char and its signed and unsigned variants.\n Such a conversion would be dangerously ambiguous: should we treat it as text,\n or as a small integer? It'd be an open invitation for bugs.\n But the error message when you get this wrong is very cryptic. So, we derive\n dummy _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs implementations from this dummy type, and ensure that the\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1enum__traits.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1enum__traits.html", "unified_diff": "@@ -101,46 +101,46 @@\n \n

    Helper class for defining enum conversions. \n More...

    \n \n \n \n+using \n \n \n+using \n \n

    \n Public Types

    \n-using impl_type = std::underlying_type_t< ENUM >
    impl_type = std::underlying_type_t< ENUM >
     
    \n-using impl_traits = string_traits< impl_type >
    impl_traits = string_traits< impl_type >
     
    \n \n \n+staticconstexprzview \n \n \n+staticconstexprchar * \n \n \n+staticENUM \n \n \n+static std::size_t \n \n

    \n Static Public Member Functions

    \n-static constexpr zview to_buf (char *begin, char *end, ENUM const &value)
    to_buf (char *begin, char *end, ENUM const &value)
     
    \n-static constexpr char * into_buf (char *begin, char *end, ENUM const &value)
    into_buf (char *begin, char *end, ENUM const &value)
     
    \n-static ENUM from_string (std::string_view text)
    from_string (std::string_view text)
     
    \n-static std::size_t size_buffer (ENUM const &value) noexcept
    size_buffer (ENUM const &value) noexcept
     
    \n \n \n+staticconstexprbool \n \n \n+staticconstexprbool \n \n

    \n Static Public Attributes

    \n-static constexpr bool converts_to_string {true}
    converts_to_string {true}
     
    \n-static constexpr bool converts_from_string {true}
    converts_from_string {true}
     
    \n

    Detailed Description

    \n-
    template<typename ENUM>
    \n+
    template<typename ENUM>
    \n struct pqxx::internal::enum_traits< ENUM >

    Helper class for defining enum conversions.

    \n

    The conversion will convert enum values to numeric strings, and vice versa.

    \n

    To define a string conversion for an enum type, derive a string_traits specialisation for the enum from this struct.

    \n

    There's usually an easier way though: the PQXX_DECLARE_ENUM_CONVERSION macro. Use enum_traits manually only if you need to customise your traits type in more detail.

    \n

    The documentation for this struct was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/strconv.hxx
    • \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4,34 +4,34 @@\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bT_\by_\bp_\be_\bs | _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bs | _\bL_\bi_\bs_\bt\n _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::enum_traits< ENUM > Struct Template Reference\n Helper class for defining enum conversions. _\bM_\bo_\br_\be_\b._\b._\b.\n P\bPu\bub\bbl\bli\bic\bc T\bTy\byp\bpe\bes\bs\n-using\u00a0 i\bim\bmp\bpl\bl_\b_t\bty\byp\bpe\be = std::underlying_type_t< ENUM >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 i\bim\bmp\bpl\bl_\b_t\bty\byp\bpe\be = std::underlying_type_t< _\bE_\bN_\bU_\bM >\n \u00a0\n-using\u00a0 i\bim\bmp\bpl\bl_\b_t\btr\bra\bai\bit\bts\bs = _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs< impl_type >\n+_\bu_\bs_\bi_\bn_\bg\u00a0 i\bim\bmp\bpl\bl_\b_t\btr\bra\bai\bit\bts\bs = _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs< impl_type >\n \u00a0\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- static constexpr _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, ENUM const &value)\n+ _\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bE_\bN_\bU_\bM _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0\n-static constexpr char *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, ENUM const &value)\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bc_\bh_\ba_\br *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bE_\bN_\bU_\bM _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0\n- static ENUM\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view text)\n+ _\bs_\bt_\ba_\bt_\bi_\bc _\bE_\bN_\bU_\bM\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view text)\n \u00a0\n- static std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (ENUM const &value) noexcept\n+ _\bs_\bt_\ba_\bt_\bi_\bc std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (_\bE_\bN_\bU_\bM _\bc_\bo_\bn_\bs_\bt &value) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc A\bAt\btt\btr\bri\bib\bbu\but\bte\bes\bs\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {true}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {_\bt_\br_\bu_\be}\n \u00a0\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {true}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {_\bt_\br_\bu_\be}\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-template\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bE_\bN_\bU_\bM>\n struct pqxx::internal::enum_traits< ENUM >\n Helper class for defining enum conversions.\n The conversion will convert enum values to numeric strings, and vice versa.\n To define a string conversion for an enum type, derive a _\bs_\bt_\br_\bi_\bn_\bg_\b__\bt_\br_\ba_\bi_\bt_\bs\n specialisation for the enum from this struct.\n There's usually an easier way though: the PQXX_DECLARE_ENUM_CONVERSION macro.\n Use _\be_\bn_\bu_\bm_\b__\bt_\br_\ba_\bi_\bt_\bs manually only if you need to customise your traits type in more\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1float__traits.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1float__traits.html", "unified_diff": "@@ -100,41 +100,41 @@\n \n

    String traits for builtin floating-point types. \n More...

    \n \n \n \n+static PQXX_LIBEXPORT T \n \n \n+static PQXX_LIBEXPORT zview \n \n \n \n+static PQXX_LIBEXPORT char * \n \n \n+staticconstexpr std::size_t \n \n \n+staticconstexpr std::size_t \n \n

    \n Static Public Member Functions

    \n-static PQXX_LIBEXPORT T from_string (std::string_view text)
    from_string (std::string_view text)
     
    \n-static PQXX_LIBEXPORT zview to_buf (char *begin, char *end, T const &value)
    to_buf (char *begin, char *end, T const &value)
     Floating-point to_buf implemented in terms of to_string.
     
    \n-static PQXX_LIBEXPORT char * into_buf (char *begin, char *end, T const &value)
    into_buf (char *begin, char *end, T const &value)
     
    \n-static constexpr std::size_t digits10 (std::size_t value) noexcept
    digits10 (std::size_t value) noexcept
     
    \n-static constexpr std::size_t size_buffer (T const &) noexcept
    size_buffer (T const &) noexcept
     
    \n \n \n+staticconstexprbool \n \n \n+staticconstexprbool \n \n

    \n Static Public Attributes

    \n-static constexpr bool converts_to_string {true}
    converts_to_string {true}
     
    \n-static constexpr bool converts_from_string {true}
    converts_from_string {true}
     
    \n

    Detailed Description

    \n-
    template<typename T>
    \n+
    template<typename T>
    \n struct pqxx::internal::float_traits< T >

    String traits for builtin floating-point types.

    \n

    The documentation for this struct was generated from the following files:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/conversions.hxx
    • \n
    • /build/reproducible-path/libpqxx-7.10.0/src/strconv.cxx
    • \n
    \n
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,33 +3,33 @@\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::float_traits< T > Struct Template Reference\n String traits for builtin floating-point types. _\bM_\bo_\br_\be_\b._\b._\b.\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- static PQXX_LIBEXPORT T\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view text)\n+ _\bs_\bt_\ba_\bt_\bi_\bc PQXX_LIBEXPORT _\bT\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view text)\n \u00a0\n- static PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, T const &value)\n+ _\bs_\bt_\ba_\bt_\bi_\bc PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bT _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0 Floating-point to_buf implemented in terms of\n to_string.\n \u00a0\n-static PQXX_LIBEXPORT char *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, T const &value)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_LIBEXPORT _\bc_\bh_\ba_\br *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bT _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0\n-static constexpr std::size_t\u00a0 d\bdi\big\bgi\bit\bts\bs1\b10\b0 (std::size_t value) noexcept\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::size_t\u00a0 d\bdi\big\bgi\bit\bts\bs1\b10\b0 (std::size_t value) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n-static constexpr std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (T const &) noexcept\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (_\bT _\bc_\bo_\bn_\bs_\bt &) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc A\bAt\btt\btr\bri\bib\bbu\but\bte\bes\bs\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {true}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {_\bt_\br_\bu_\be}\n \u00a0\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {true}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {_\bt_\br_\bu_\be}\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-template\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT>\n struct pqxx::internal::float_traits< T >\n String traits for builtin floating-point types.\n ===============================================================================\n The documentation for this struct was generated from the following files:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\bs_\b._\bh_\bx_\bx\n * /build/reproducible-path/libpqxx-7.10.0/src/s\bst\btr\brc\bco\bon\bnv\bv.\b.c\bcx\bxx\bx\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1gate_1_1connection__stream__from.html", "unified_diff": "@@ -120,18 +120,18 @@\n \"\"\n \n
    [legend]
    \n \n \n \n+ \n \n \n+auto \n \n

    \n Public Member Functions

    \n- connection_stream_from (reference x)
    connection_stream_from (reference x)
     
    \n-auto read_copy_line ()
    read_copy_line ()
     
    \n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,17 +8,17 @@\n [+]Inheritance diagram for pqxx::internal::gate::connection_stream_from:\n [Inheritance graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n [+]Collaboration diagram for pqxx::internal::gate::connection_stream_from:\n [Collaboration graph]\n [_\bl_\be_\bg_\be_\bn_\bd]\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn_\b_s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bro\bom\bm (_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be x)\n+ \u00a0 c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn_\b_s\bst\btr\bre\bea\bam\bm_\b_f\bfr\bro\bom\bm (_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bx)\n \u00a0\n-auto\u00a0 r\bre\bea\bad\bd_\b_c\bco\bop\bpy\by_\b_l\bli\bin\bne\be ()\n+_\ba_\bu_\bt_\bo\u00a0 r\bre\bea\bad\bd_\b_c\bco\bop\bpy\by_\b_l\bli\bin\bne\be ()\n \u00a0\n A\bAd\bdd\bdi\bit\bti\bio\bon\bna\bal\bl I\bIn\bnh\bhe\ber\bri\bit\bte\bed\bd M\bMe\bem\bmb\bbe\ber\brs\bs\n [-]\u00a0Protected Types inherited from _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\ba_\bl_\bl_\bg_\ba_\bt_\be_\b<_\b _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b _\b>\n using\u00a0 s\bsu\bup\bpe\ber\br = _\bc_\ba_\bl_\bl_\bg_\ba_\bt_\be< _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn >\n \u00a0 This class, to keep constructors easy.\n \u00a0\n using\u00a0 r\bre\bef\bfe\ber\bre\ben\bnc\bce\be = _\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn &\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner.html", "unified_diff": "@@ -99,15 +99,15 @@\n \n

    Wrapper struct template for \"find next glyph\" functions. \n More...

    \n

    \n Additional Inherited Members

    \"-\"/ Protected Types inherited from pqxx::internal::callgate< connection >
    \n using super = callgate< connection >
    \n \n \n+static PQXX_PURE std::size_t \n \n \n

    \n Static Public Member Functions

    \n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
    call (char const buffer[], std::size_t buffer_len, std::size_t start)
     Find the next glyph in buffer after position start.
     
    \n

    Detailed Description

    \n
    template<encoding_group>
    \n struct pqxx::internal::glyph_scanner< encoding_group >

    Wrapper struct template for \"find next glyph\" functions.

    \n

    When we use this, all we really want is a function pointer. But that won't work, because the template specialisation we use will only work (under current C++ rules) for a struct or class, not for a function.

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,16 +3,16 @@\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group > Struct Template Reference\n Wrapper struct template for \"find next glyph\" functions. _\bM_\bo_\br_\be_\b._\b._\b.\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0 Find the next glyph in buffer after position\n start.\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n template\n struct pqxx::internal::glyph_scanner< encoding_group >\n Wrapper struct template for \"find next glyph\" functions.\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1BIG5_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1BIG5_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
    pqxx::internal::glyph_scanner< encoding_group::BIG5 > Struct Reference
    \n
    \n
    \n \n \n \n+static PQXX_PURE std::size_t \n \n

    \n Static Public Member Functions

    \n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
    call (char const buffer[], std::size_t buffer_len, std::size_t start)
     
    \n
    The documentation for this struct was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
    • \n
    \n
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::BIG5 > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__CN_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
    pqxx::internal::glyph_scanner< encoding_group::EUC_CN > Struct Reference
    \n
    \n
    \n \n \n \n+static PQXX_PURE std::size_t \n \n

    \n Static Public Member Functions

    \n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
    call (char const buffer[], std::size_t buffer_len, std::size_t start)
     
    \n
    The documentation for this struct was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
    • \n
    \n
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::EUC_CN > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__JP_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
    pqxx::internal::glyph_scanner< encoding_group::EUC_JP > Struct Reference
    \n
    \n
    \n \n \n \n+static PQXX_PURE std::size_t \n \n

    \n Static Public Member Functions

    \n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
    call (char const buffer[], std::size_t buffer_len, std::size_t start)
     
    \n
    The documentation for this struct was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
    • \n
    \n
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::EUC_JP > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__KR_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__KR_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
    pqxx::internal::glyph_scanner< encoding_group::EUC_KR > Struct Reference
    \n
    \n
    \n \n \n \n+static PQXX_PURE std::size_t \n \n

    \n Static Public Member Functions

    \n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
    call (char const buffer[], std::size_t buffer_len, std::size_t start)
     
    \n
    The documentation for this struct was generated from the following file:
      \n
    • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
    • \n
    \n
    \n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::EUC_KR > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1EUC__TW_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::EUC_TW > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::EUC_TW > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GB18030_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GB18030_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::GB18030 > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::GB18030 > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GBK_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1GBK_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::GBK > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::GBK > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1JOHAB_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1JOHAB_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::JOHAB > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::JOHAB > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MONOBYTE_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MONOBYTE_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::MONOBYTE > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE constexpr std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE constexpr std::size_t call (char const [], std::size_t buffer_len, std::size_t start)
call (char const [], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::MONOBYTE > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE constexpr std::size_t\u00a0 c\bca\bal\bll\bl (char const [], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt [], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MULE__INTERNAL_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1MULE__INTERNAL_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::MULE_INTERNAL > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::MULE_INTERNAL > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1SJIS_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1SJIS_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::SJIS > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::SJIS > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UHC_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::UHC > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::UHC > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1glyph__scanner_3_01encoding__group_1_1UTF8_01_4.html", "unified_diff": "@@ -96,15 +96,15 @@\n
pqxx::internal::glyph_scanner< encoding_group::UTF8 > Struct Reference
\n \n
\n \n \n \n+static PQXX_PURE std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_PURE std::size_t call (char const buffer[], std::size_t buffer_len, std::size_t start)
call (char const buffer[], std::size_t buffer_len, std::size_t start)
 
\n
The documentation for this struct was generated from the following file:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/encodings.hxx
  • \n
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,16 +2,16 @@\n The C++ client library for PostgreSQL\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::glyph_scanner< encoding_group::UTF8 > Struct Reference\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-static PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (char const buffer[], std::size_t\n- buffer_len, std::size_t start)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_PURE std::size_t\u00a0 c\bca\bal\bll\bl (_\bc_\bh_\ba_\br _\bc_\bo_\bn_\bs_\bt _\bb_\bu_\bf_\bf_\be_\br[], std::size_t\n+ _\bb_\bu_\bf_\bf_\be_\br_\b__\bl_\be_\bn, std::size_t _\bs_\bt_\ba_\br_\bt)\n \u00a0\n ===============================================================================\n The documentation for this struct was generated from the following file:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\be_\bn_\bc_\bo_\bd_\bi_\bn_\bg_\bs_\b._\bh_\bx_\bx\n * _\bp_\bq_\bx_\bx\n * _\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1integral__traits.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1integral__traits.html", "unified_diff": "@@ -100,37 +100,37 @@\n \n

String traits for builtin integral types (though not bool). \n More...

\n \n \n \n+static PQXX_LIBEXPORT T \n \n \n+static PQXX_LIBEXPORT zview \n \n \n+static PQXX_LIBEXPORT char * \n \n \n+staticconstexpr std::size_t \n \n

\n Static Public Member Functions

\n-static PQXX_LIBEXPORT T from_string (std::string_view text)
from_string (std::string_view text)
 
\n-static PQXX_LIBEXPORT zview to_buf (char *begin, char *end, T const &value)
to_buf (char *begin, char *end, T const &value)
 
\n-static PQXX_LIBEXPORT char * into_buf (char *begin, char *end, T const &value)
into_buf (char *begin, char *end, T const &value)
 
\n-static constexpr std::size_t size_buffer (T const &) noexcept
size_buffer (T const &) noexcept
 
\n \n \n+staticconstexprbool \n \n \n+staticconstexprbool \n \n

\n Static Public Attributes

\n-static constexpr bool converts_to_string {true}
converts_to_string {true}
 
\n-static constexpr bool converts_from_string {true}
converts_from_string {true}
 
\n

Detailed Description

\n-
template<typename T>
\n+
template<typename T>
\n struct pqxx::internal::integral_traits< T >

String traits for builtin integral types (though not bool).

\n

The documentation for this struct was generated from the following files:
    \n
  • /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/conversions.hxx
  • \n
  • /build/reproducible-path/libpqxx-7.10.0/src/strconv.cxx
  • \n
\n
\n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,29 +3,29 @@\n Loading...\n Searching...\n No Matches\n _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bS_\bt_\ba_\bt_\bi_\bc_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::integral_traits< T > Struct Template Reference\n String traits for builtin integral types (though not bool). _\bM_\bo_\br_\be_\b._\b._\b.\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- static PQXX_LIBEXPORT T\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view text)\n+ _\bs_\bt_\ba_\bt_\bi_\bc PQXX_LIBEXPORT _\bT\u00a0 f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg (std::string_view text)\n \u00a0\n- static PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, T const &value)\n+ _\bs_\bt_\ba_\bt_\bi_\bc PQXX_LIBEXPORT _\bz_\bv_\bi_\be_\bw\u00a0 t\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bT _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0\n-static PQXX_LIBEXPORT char *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (char *begin, char *end, T const &value)\n+_\bs_\bt_\ba_\bt_\bi_\bc PQXX_LIBEXPORT _\bc_\bh_\ba_\br *\u00a0 i\bin\bnt\bto\bo_\b_b\bbu\buf\bf (_\bc_\bh_\ba_\br *begin, _\bc_\bh_\ba_\br *end, _\bT _\bc_\bo_\bn_\bs_\bt &value)\n \u00a0\n-static constexpr std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (T const &) noexcept\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br std::size_t\u00a0 s\bsi\biz\bze\be_\b_b\bbu\buf\bff\bfe\ber\br (_\bT _\bc_\bo_\bn_\bs_\bt &) _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt\n \u00a0\n S\bSt\bta\bat\bti\bic\bc P\bPu\bub\bbl\bli\bic\bc A\bAt\btt\btr\bri\bib\bbu\but\bte\bes\bs\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {true}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg {_\bt_\br_\bu_\be}\n \u00a0\n-static constexpr bool\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {true}\n+_\bs_\bt_\ba_\bt_\bi_\bc _\bc_\bo_\bn_\bs_\bt_\be_\bx_\bp_\br _\bb_\bo_\bo_\bl\u00a0 c\bco\bon\bnv\bve\ber\brt\bts\bs_\b_f\bfr\bro\bom\bm_\b_s\bst\btr\bri\bin\bng\bg {_\bt_\br_\bu_\be}\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-template\n+template<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be _\bT>\n struct pqxx::internal::integral_traits< T >\n String traits for builtin integral types (though not bool).\n ===============================================================================\n The documentation for this struct was generated from the following files:\n * /build/reproducible-path/libpqxx-7.10.0/include/pqxx/internal/\n _\bc_\bo_\bn_\bv_\be_\br_\bs_\bi_\bo_\bn_\bs_\b._\bh_\bx_\bx\n * /build/reproducible-path/libpqxx-7.10.0/src/s\bst\btr\brc\bco\bon\bnv\bv.\b.c\bcx\bxx\bx\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1notice__waiters.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/structpqxx_1_1internal_1_1notice__waiters.html", "unified_diff": "@@ -100,30 +100,30 @@\n \n

Various callbacks waiting for a notice to come in. \n More...

\n \n \n \n+ \n \n \n+ \n \n \n+notice_waiters & \n \n \n+notice_waiters & \n \n

\n Public Member Functions

\n- notice_waiters (notice_waiters const &)=delete
notice_waiters (notice_waiters const &)=delete
 
\n- notice_waiters (notice_waiters &&)=delete
notice_waiters (notice_waiters &&)=delete
 
\n-notice_waitersoperator= (notice_waiters const &)=delete
operator= (notice_waiters const &)=delete
 
\n-notice_waitersoperator= (notice_waiters &&)=delete
operator= (notice_waiters &&)=delete
 
\n \n \n+std::function< void(zview)> \n \n \n \n

\n Public Attributes

\n-std::function< void(zview)> notice_handler
notice_handler
 
\n std::list< errorhandler * > errorhandlers
 
\n

Detailed Description

\n

Various callbacks waiting for a notice to come in.

\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,24 +3,24 @@\n Loading...\n Searching...\n No Matches\n _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bM_\be_\bm_\bb_\be_\br_\b _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs | _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bA_\bt_\bt_\br_\bi_\bb_\bu_\bt_\be_\bs | _\bL_\bi_\bs_\bt_\b _\bo_\bf_\b _\ba_\bl_\bl_\b _\bm_\be_\bm_\bb_\be_\br_\bs\n pqxx::internal::notice_waiters Struct Reference\n Various callbacks waiting for a notice to come in. _\bM_\bo_\br_\be_\b._\b._\b.\n P\bPu\bub\bbl\bli\bic\bc M\bMe\bem\bmb\bbe\ber\br F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- \u00a0 n\bno\bot\bti\bic\bce\be_\b_w\bwa\bai\bit\bte\ber\brs\bs (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs const &)=delete\n+ \u00a0 n\bno\bot\bti\bic\bce\be_\b_w\bwa\bai\bit\bte\ber\brs\bs (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs _\bc_\bo_\bn_\bs_\bt &)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n- \u00a0 n\bno\bot\bti\bic\bce\be_\b_w\bwa\bai\bit\bte\ber\brs\bs (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &&)=delete\n+ \u00a0 n\bno\bot\bti\bic\bce\be_\b_w\bwa\bai\bit\bte\ber\brs\bs (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &&)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n-_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs const &)=delete\n+_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs _\bc_\bo_\bn_\bs_\bt &)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n-_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &&)=delete\n+_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &\u00a0 o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (_\bn_\bo_\bt_\bi_\bc_\be_\b__\bw_\ba_\bi_\bt_\be_\br_\bs &&)=_\bd_\be_\bl_\be_\bt_\be\n \u00a0\n P\bPu\bub\bbl\bli\bic\bc A\bAt\btt\btr\bri\bib\bbu\but\bte\bes\bs\n-std::function< void(_\bz_\bv_\bi_\be_\bw)>\u00a0 n\bno\bot\bti\bic\bce\be_\b_h\bha\ban\bnd\bdl\ble\ber\br\n+std::function< _\bv_\bo_\bi_\bd(_\bz_\bv_\bi_\be_\bw)>\u00a0 n\bno\bot\bti\bic\bce\be_\b_h\bha\ban\bnd\bdl\ble\ber\br\n \u00a0\n std::list< _\be_\br_\br_\bo_\br_\bh_\ba_\bn_\bd_\bl_\be_\br * >\u00a0 e\ber\brr\bro\bor\brh\bha\ban\bnd\bdl\ble\ber\brs\bs\n \u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n Various callbacks waiting for a notice to come in.\n ===============================================================================\n The documentation for this struct was generated from the following file:\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/transaction__base_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/transaction__base_8hxx_source.html", "unified_diff": "@@ -137,17 +137,17 @@\n
37#include "pqxx/prepared_statement.hxx"
\n
38#include "pqxx/result.hxx"
\n
39#include "pqxx/row.hxx"
\n
40#include "pqxx/util.hxx"
\n
41
\n
42namespace pqxx::internal::gate
\n
43{
\n-
44class transaction_subtransaction;
\n+\n
45class transaction_sql_cursor;
\n-
46class transaction_stream_to;
\n+\n
47class transaction_transaction_focus;
\n
48} // namespace pqxx::internal::gate
\n
49
\n
50
\n
51namespace pqxx
\n
52{
\n
53using namespace std::literals;
\n@@ -787,30 +787,30 @@\n
1163namespace pqxx::internal
\n
1164{
\n
1166template<pqxx::isolation_level isolation, pqxx::write_policy rw>
\n
1167extern const zview begin_cmd;
\n
1168
\n
1169// These are not static members, so "constexpr" does not imply "inline".
\n
1170template<>
\n-
1171inline constexpr zview begin_cmd<read_committed, write_policy::read_write>{
\n+\n
1172 "BEGIN"_zv};
\n
1173template<>
\n-
1174inline constexpr zview begin_cmd<read_committed, write_policy::read_only>{
\n+\n
1175 "BEGIN READ ONLY"_zv};
\n
1176template<>
\n-
1177inline constexpr zview begin_cmd<repeatable_read, write_policy::read_write>{
\n+\n
1178 "BEGIN ISOLATION LEVEL REPEATABLE READ"_zv};
\n
1179template<>
\n-
1180inline constexpr zview begin_cmd<repeatable_read, write_policy::read_only>{
\n+\n
1181 "BEGIN ISOLATION LEVEL REPEATABLE READ READ ONLY"_zv};
\n
1182template<>
\n-
1183inline constexpr zview begin_cmd<serializable, write_policy::read_write>{
\n+\n
1184 "BEGIN ISOLATION LEVEL SERIALIZABLE"_zv};
\n
1185template<>
\n-
1186inline constexpr zview begin_cmd<serializable, write_policy::read_only>{
\n+\n
1187 "BEGIN ISOLATION LEVEL SERIALIZABLE READ ONLY"_zv};
\n
1188} // namespace pqxx::internal
\n
1189
\n
1190#include "pqxx/internal/stream_query_impl.hxx"
\n
1191#endif
\n
Connection to a database.
Definition connection.hxx:279
\n
Definition transaction-transaction_focus.hxx:8
\n@@ -875,14 +875,15 @@\n
result exec_params_n(std::size_t rows, zview query, Args &&...args)
Definition transaction_base.hxx:759
\n
auto stream(std::string_view query) &
Execute a query, in streaming fashion; loop over the results row by row.
Definition transaction_base.hxx:569
\n
void for_query(zview query, CALLABLE &&func)
Execute a query, load the full result, and perform func for each row.
Definition transaction_base.hxx:686
\n
void process_notice(char const msg[]) const
Have connection process a warning message.
Definition transaction_base.hxx:1011
\n
Interface definition (and common code) for "transaction" classes.
Definition transaction_base.hxx:151
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
decltype(strip_types(std::declval< TYPES... >())) strip_types_t
Take a tuple type and apply strip_t to its component types.
Definition util.hxx:629
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
bytes_view binary_cast(TYPE const &data)
Cast binary data to a type that libpqxx will recognise as binary.
Definition util.hxx:409
\n
std::conditional< has_generic_bytes_char_traits, std::basic_string< std::byte >, std::basic_string< std::byte, byte_char_traits > >::type bytes
Type alias for a container containing bytes.
Definition util.hxx:375
\n
\n \n \n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -43,17 +43,17 @@\n 37#include \"pqxx/prepared_statement.hxx\"\n 38#include \"pqxx/result.hxx\"\n 39#include \"pqxx/row.hxx\"\n 40#include \"pqxx/util.hxx\"\n 41\n 42namespace pqxx::internal::gate\n 43{\n-44class transaction_subtransaction;\n+44class _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bu_\bb_\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn;\n 45class transaction_sql_cursor;\n-46class transaction_stream_to;\n+46class _\bt_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bt_\bo;\n 47class transaction_transaction_focus;\n 48} // namespace pqxx::internal::gate\n 49\n 50\n 51namespace _\bp_\bq_\bx_\bx\n 52{\n 53using namespace std::literals;\n@@ -602,31 +602,31 @@\n 1163namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 1164{\n 1166template\n 1167extern const _\bz_\bv_\bi_\be_\bw begin_cmd;\n 1168\n 1169// These are not static members, so \"constexpr\" does not imply \"inline\".\n 1170template<>\n-1171inline constexpr _\bz_\bv_\bi_\be_\bw begin_cmd{\n+1171inline constexpr _\bz_\bv_\bi_\be_\bw _\bb_\be_\bg_\bi_\bn_\b__\bc_\bm_\bd_\b<_\br_\be_\ba_\bd_\b__\bc_\bo_\bm_\bm_\bi_\bt_\bt_\be_\bd_\b,_\b _\bw_\br_\bi_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\ba_\bd_\b__\bw_\br_\bi_\bt_\be_\b>{\n 1172 \"BEGIN\"_zv};\n 1173template<>\n-1174inline constexpr zview begin_cmd{\n+1174inline constexpr zview _\bb_\be_\bg_\bi_\bn_\b__\bc_\bm_\bd_\b<_\br_\be_\ba_\bd_\b__\bc_\bo_\bm_\bm_\bi_\bt_\bt_\be_\bd_\b,_\b _\bw_\br_\bi_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\ba_\bd_\b__\bo_\bn_\bl_\by_\b>{\n 1175 \"BEGIN READ ONLY\"_zv};\n 1176template<>\n-1177inline constexpr zview begin_cmd\n+1177inline constexpr zview _\bb_\be_\bg_\bi_\bn_\b__\bc_\bm_\bd_\b<_\br_\be_\bp_\be_\ba_\bt_\ba_\bb_\bl_\be_\b__\br_\be_\ba_\bd_\b,_\b _\bw_\br_\bi_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\ba_\bd_\b__\bw_\br_\bi_\bt_\be_\b>\n {\n 1178 \"BEGIN ISOLATION LEVEL REPEATABLE READ\"_zv};\n 1179template<>\n-1180inline constexpr zview begin_cmd{\n+1180inline constexpr zview _\bb_\be_\bg_\bi_\bn_\b__\bc_\bm_\bd_\b<_\br_\be_\bp_\be_\ba_\bt_\ba_\bb_\bl_\be_\b__\br_\be_\ba_\bd_\b,_\b _\bw_\br_\bi_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\ba_\bd_\b__\bo_\bn_\bl_\by_\b>{\n 1181 \"BEGIN ISOLATION LEVEL REPEATABLE READ READ ONLY\"_zv};\n 1182template<>\n-1183inline constexpr zview begin_cmd{\n+1183inline constexpr zview _\bb_\be_\bg_\bi_\bn_\b__\bc_\bm_\bd_\b<_\bs_\be_\br_\bi_\ba_\bl_\bi_\bz_\ba_\bb_\bl_\be_\b,_\b _\bw_\br_\bi_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\ba_\bd_\b__\bw_\br_\bi_\bt_\be_\b>{\n 1184 \"BEGIN ISOLATION LEVEL SERIALIZABLE\"_zv};\n 1185template<>\n-1186inline constexpr zview begin_cmd{\n+1186inline constexpr zview _\bb_\be_\bg_\bi_\bn_\b__\bc_\bm_\bd_\b<_\bs_\be_\br_\bi_\ba_\bl_\bi_\bz_\ba_\bb_\bl_\be_\b,_\b _\bw_\br_\bi_\bt_\be_\b__\bp_\bo_\bl_\bi_\bc_\by_\b:_\b:_\br_\be_\ba_\bd_\b__\bo_\bn_\bl_\by_\b>{\n 1187 \"BEGIN ISOLATION LEVEL SERIALIZABLE READ ONLY\"_zv};\n 1188} // namespace pqxx::internal\n 1189\n 1190#include \"pqxx/internal/stream_query_impl.hxx\"\n 1191#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn\n Connection to a database.\n@@ -877,14 +877,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs_\b__\bt\n decltype(strip_types(std::declval< TYPES... >())) strip_types_t\n Take a tuple type and apply strip_t to its component types.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:629\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n _\bp_\bq_\bx_\bx_\b:_\b:_\bb_\bi_\bn_\ba_\br_\by_\b__\bc_\ba_\bs_\bt\n bytes_view binary_cast(TYPE const &data)\n Cast binary data to a type that libpqxx will recognise as binary.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:409\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/util_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/util_8hxx_source.html", "unified_diff": "@@ -156,86 +156,86 @@\n
57
\n
59namespace pqxx::internal
\n
60{
\n
61
\n
62// C++20: Retire wrapper.
\n
64template<typename LEFT, typename RIGHT>
\n
\n-
65inline constexpr bool cmp_less(LEFT lhs, RIGHT rhs) noexcept
\n+
65inline constexpr bool cmp_less(LEFT lhs, RIGHT rhs) noexcept
\n
66{
\n
67#if defined(PQXX_HAVE_CMP)
\n-
68 return std::cmp_less(lhs, rhs);
\n+
68 return std::cmp_less(lhs, rhs);
\n
69#else
\n
70 // We need a variable just because lgtm.com gives off a false positive
\n
71 // warning when we compare the values directly. It considers that a
\n
72 // "self-comparison."
\n-
73 constexpr bool left_signed{std::is_signed_v<LEFT>};
\n-
74 if constexpr (left_signed == std::is_signed_v<RIGHT>)
\n-
75 return lhs < rhs;
\n+
73 constexpr bool left_signed{std::is_signed_v<LEFT>};
\n+
74 if constexpr (left_signed == std::is_signed_v<RIGHT>)
\n+
75 return lhs < rhs;
\n
76 else if constexpr (std::is_signed_v<LEFT>)
\n-
77 return (lhs <= 0) ? true : (std::make_unsigned_t<LEFT>(lhs) < rhs);
\n+
77 return (lhs <= 0) ? true : (std::make_unsigned_t<LEFT>(lhs) < rhs);
\n
78 else
\n-
79 return (rhs <= 0) ? false : (lhs < std::make_unsigned_t<RIGHT>(rhs));
\n+\n
80#endif
\n
81}
\n
\n
82
\n
83
\n
84// C++20: Retire wrapper.
\n
86template<typename LEFT, typename RIGHT>
\n
\n-
87inline constexpr bool cmp_greater(LEFT lhs, RIGHT rhs) noexcept
\n+
87inline constexpr bool cmp_greater(LEFT lhs, RIGHT rhs) noexcept
\n
88{
\n
89#if defined(PQXX_HAVE_CMP)
\n-
90 return std::cmp_greater(lhs, rhs);
\n+
90 return std::cmp_greater(lhs, rhs);
\n
91#else
\n-
92 return cmp_less(rhs, lhs);
\n+
92 return cmp_less(rhs, lhs);
\n
93#endif
\n
94}
\n
\n
95
\n
96
\n
97// C++20: Retire wrapper.
\n
99template<typename LEFT, typename RIGHT>
\n
\n-
100inline constexpr bool cmp_less_equal(LEFT lhs, RIGHT rhs) noexcept
\n+
100inline constexpr bool cmp_less_equal(LEFT lhs, RIGHT rhs) noexcept
\n
101{
\n
102#if defined(PQXX_HAVE_CMP)
\n-
103 return std::cmp_less_equal(lhs, rhs);
\n+
103 return std::cmp_less_equal(lhs, rhs);
\n
104#else
\n-
105 return not cmp_less(rhs, lhs);
\n+
105 return not cmp_less(rhs, lhs);
\n
106#endif
\n
107}
\n
\n
108
\n
109
\n
110// C++20: Retire wrapper.
\n
112template<typename LEFT, typename RIGHT>
\n
\n-
113inline constexpr bool cmp_greater_equal(LEFT lhs, RIGHT rhs) noexcept
\n+
113inline constexpr bool cmp_greater_equal(LEFT lhs, RIGHT rhs) noexcept
\n
114{
\n
115#if defined(PQXX_HAVE_CMP)
\n-
116 return std::cmp_greater_equal(lhs, rhs);
\n+
116 return std::cmp_greater_equal(lhs, rhs);
\n
117#else
\n-
118 return not cmp_less(lhs, rhs);
\n+
118 return not cmp_less(lhs, rhs);
\n
119#endif
\n
120}
\n
\n
121
\n
122
\n
124
\n
\n-
127[[nodiscard]] inline std::string cat2(std::string_view x, std::string_view y)
\n+
127[[nodiscard]] inline std::string cat2(std::string_view x, std::string_view y)
\n
128{
\n-
129 std::string buf;
\n-
130 auto const xs{std::size(x)}, ys{std::size(y)};
\n-
131 buf.resize(xs + ys);
\n-
132 x.copy(std::data(buf), xs);
\n-
133 y.copy(std::data(buf) + xs, ys);
\n-
134 return buf;
\n+
129 std::string buf;
\n+
130 auto const xs{std::size(x)}, ys{std::size(y)};
\n+
131 buf.resize(xs + ys);
\n+
132 x.copy(std::data(buf), xs);
\n+
133 y.copy(std::data(buf) + xs, ys);
\n+
134 return buf;
\n
135}
\n
\n
136} // namespace pqxx::internal
\n
137
\n
138
\n
139namespace pqxx
\n
140{
\n@@ -502,129 +502,129 @@\n
461namespace pqxx::internal
\n
462{
\n
463using namespace std::literals;
\n
464
\n
465
\n
467
\n
\n-
471template<typename CHAR> inline constexpr bool is_digit(CHAR c) noexcept
\n+
471template<typename CHAR> inline constexpr bool is_digit(CHAR c) noexcept
\n
472{
\n-
473 return (c >= '0') and (c <= '9');
\n+
473 return (c >= '0') and (c <= '9');
\n
474}
\n
\n
475
\n
476
\n
478
\n-
480[[nodiscard]] std::string
\n-
481describe_object(std::string_view class_name, std::string_view name);
\n+
480[[nodiscard]] std::string
\n+
481describe_object(std::string_view class_name, std::string_view name);
\n
482
\n
483
\n
485
\n \n-
497 void const *old_guest, std::string_view old_class, std::string_view old_name,
\n-
498 void const *new_guest, std::string_view new_class,
\n-
499 std::string_view new_name);
\n+
497 void const *old_guest, std::string_view old_class, std::string_view old_name,
\n+
498 void const *new_guest, std::string_view new_class,
\n+
499 std::string_view new_name);
\n
500
\n
501
\n
503
\n \n-
507 void const *old_guest, std::string_view old_class, std::string_view old_name,
\n-
508 void const *new_guest, std::string_view new_class,
\n-
509 std::string_view new_name);
\n+
507 void const *old_guest, std::string_view old_class, std::string_view old_name,
\n+
508 void const *new_guest, std::string_view new_class,
\n+
509 std::string_view new_name);
\n
510
\n
511
\n
513
\n
\n-
516inline constexpr std::size_t size_esc_bin(std::size_t binary_bytes) noexcept
\n+
516inline constexpr std::size_t size_esc_bin(std::size_t binary_bytes) noexcept
\n
517{
\n-
518 return 2 + (2 * binary_bytes) + 1;
\n+
518 return 2 + (2 * binary_bytes) + 1;
\n
519}
\n
\n
520
\n
521
\n
523
\n
\n-
525inline constexpr std::size_t size_unesc_bin(std::size_t escaped_bytes) noexcept
\n+
525inline constexpr std::size_t size_unesc_bin(std::size_t escaped_bytes) noexcept
\n
526{
\n-
527 return (escaped_bytes - 2) / 2;
\n+
527 return (escaped_bytes - 2) / 2;
\n
528}
\n
\n
529
\n
530
\n
531// TODO: Use actual binary type for "data".
\n
533
\n-
538void PQXX_LIBEXPORT esc_bin(bytes_view binary_data, char buffer[]) noexcept;
\n+
538void PQXX_LIBEXPORT esc_bin(bytes_view binary_data, char buffer[]) noexcept;
\n
539
\n
540
\n-
542std::string PQXX_LIBEXPORT esc_bin(bytes_view binary_data);
\n+
542std::string PQXX_LIBEXPORT esc_bin(bytes_view binary_data);
\n
543
\n
544
\n
546void PQXX_LIBEXPORT
\n-
547unesc_bin(std::string_view escaped_data, std::byte buffer[]);
\n+
547unesc_bin(std::string_view escaped_data, std::byte buffer[]);
\n
548
\n
549
\n-
551bytes PQXX_LIBEXPORT unesc_bin(std::string_view escaped_data);
\n+
551bytes PQXX_LIBEXPORT unesc_bin(std::string_view escaped_data);
\n
552
\n
553
\n
\n-
555template<typename T> auto ssize(T const &c)
\n+
555template<typename T> auto ssize(T const &c)
\n
556{
\n
557#if defined(PQXX_HAVE_SSIZE)
\n-
558 return std::ssize(c);
\n+
558 return std::ssize(c);
\n
559#else
\n-
560 using signed_t = std::make_signed_t<decltype(std::size(c))>;
\n-
561 return static_cast<signed_t>(std::size(c));
\n+
560 using signed_t = std::make_signed_t<decltype(std::size(c))>;
\n+
561 return static_cast<signed_t>(std::size(c));
\n
562#endif // PQXX_HAVE_SSIZe
\n
563}
\n
\n
564
\n
565
\n
567
\n-
571template<typename RETURN, typename... ARGS>
\n-
572std::tuple<ARGS...> args_f(RETURN (&func)(ARGS...));
\n+
571template<typename RETURN, typename... ARGS>
\n+
572std::tuple<ARGS...> args_f(RETURN (&func)(ARGS...));
\n
573
\n
574
\n
576
\n-
580template<typename RETURN, typename... ARGS>
\n-
581std::tuple<ARGS...> args_f(std::function<RETURN(ARGS...)> const &);
\n+
580template<typename RETURN, typename... ARGS>
\n+
581std::tuple<ARGS...> args_f(std::function<RETURN(ARGS...)> const &);
\n
582
\n
583
\n
585
\n-
589template<typename CLASS, typename RETURN, typename... ARGS>
\n-
590std::tuple<ARGS...> member_args_f(RETURN (CLASS::*)(ARGS...));
\n+
589template<typename CLASS, typename RETURN, typename... ARGS>
\n+
590std::tuple<ARGS...> member_args_f(RETURN (CLASS::*)(ARGS...));
\n
591
\n
592
\n
594
\n-
598template<typename CLASS, typename RETURN, typename... ARGS>
\n-
599std::tuple<ARGS...> member_args_f(RETURN (CLASS::*)(ARGS...) const);
\n+
598template<typename CLASS, typename RETURN, typename... ARGS>
\n+
599std::tuple<ARGS...> member_args_f(RETURN (CLASS::*)(ARGS...) const);
\n
600
\n
601
\n
603
\n
609template<typename CALLABLE>
\n-
610auto args_f(CALLABLE const &f)
\n+
610auto args_f(CALLABLE const &f)
\n
611 -> decltype(member_args_f(&CALLABLE::operator()));
\n
612
\n
613
\n
615template<typename CALLABLE>
\n
616using args_t = decltype(args_f(std::declval<CALLABLE>()));
\n
617
\n
618
\n
620
\n-
623template<typename... TYPES>
\n+
623template<typename... TYPES>
\n
624std::tuple<strip_t<TYPES>...> strip_types(std::tuple<TYPES...> const &);
\n
625
\n
626
\n-
628template<typename... TYPES>
\n+
628template<typename... TYPES>
\n
629using strip_types_t = decltype(strip_types(std::declval<TYPES...>()));
\n
630
\n
631
\n
\n-
633inline constexpr char unescape_char(char escaped) noexcept
\n+
633inline constexpr char unescape_char(char escaped) noexcept
\n
634{
\n-
635 switch (escaped)
\n+
635 switch (escaped)
\n
636 {
\n
637 case 'b': // Backspace.
\n
638 PQXX_UNLIKELY return '\\b';
\n
639 case 'f': // Form feed
\n
640 PQXX_UNLIKELY return '\\f';
\n
641 case 'n': // Line feed.
\n
642 return '\\n';
\n@@ -633,54 +633,54 @@\n
645 case 't': // Horizontal tab.
\n
646 return '\\t';
\n
647 case 'v': // Vertical tab.
\n
648 return '\\v';
\n
649 default: break;
\n
650 }
\n
651 // Regular character ("self-escaped").
\n-
652 return escaped;
\n+
652 return escaped;
\n
653}
\n
\n
654
\n
655
\n
656// C++20: std::span?
\n
658template<std::size_t BYTES>
\n
659char const *PQXX_COLD
\n
\n-
660error_string(int err_num, std::array<char, BYTES> &buffer)
\n+
660error_string(int err_num, std::array<char, BYTES> &buffer)
\n
661{
\n
662 // Not entirely clear whether strerror_s will be in std or global namespace.
\n
663 using namespace std;
\n
664
\n
665#if defined(PQXX_HAVE_STERROR_S) || defined(PQXX_HAVE_STRERROR_R)
\n
666# if defined(PQXX_HAVE_STRERROR_S)
\n-
667 auto const err_result{strerror_s(std::data(buffer), BYTES, err_num)};
\n+
667 auto const err_result{strerror_s(std::data(buffer), BYTES, err_num)};
\n
668# else
\n-
669 auto const err_result{strerror_r(err_num, std::data(buffer), BYTES)};
\n+
669 auto const err_result{strerror_r(err_num, std::data(buffer), BYTES)};
\n
670# endif
\n-
671 if constexpr (std::is_same_v<pqxx::strip_t<decltype(err_result)>, char *>)
\n+
671 if constexpr (std::is_same_v<pqxx::strip_t<decltype(err_result)>, char *>)
\n
672 {
\n
673 // GNU version of strerror_r; returns the error string, which may or may
\n
674 // not reside within buffer.
\n-
675 return err_result;
\n+
675 return err_result;
\n
676 }
\n
677 else
\n
678 {
\n
679 // Either strerror_s or POSIX strerror_r; returns an error code.
\n
680 // Sorry for being lazy here: Not reporting error string for the case
\n
681 // where we can't retrieve an error string.
\n-
682 if (err_result == 0)
\n-
683 return std::data(buffer);
\n+
682 if (err_result == 0)
\n+
683 return std::data(buffer);
\n
684 else
\n
685 return "Compound errors.";
\n
686 }
\n
687
\n
688#else
\n
689 // Fallback case, hopefully for no actual platforms out there.
\n-
690 pqxx::ignore_unused(err_num, buffer);
\n+\n
691 return "(No error information available.)";
\n
692#endif
\n
693}
\n
\n
694} // namespace pqxx::internal
\n
695
\n
696
\n@@ -701,14 +701,15 @@\n
void check_unique_unregister(void const *old_guest, std::string_view old_class, std::string_view old_name, void const *new_guest, std::string_view new_class, std::string_view new_name)
Like check_unique_register, but for un-registering a guest.
Definition util.cxx:80
\n
void PQXX_LIBEXPORT esc_bin(bytes_view binary_data, char buffer[]) noexcept
Hex-escape binary data into a buffer.
Definition util.cxx:134
\n
decltype(strip_types(std::declval< TYPES... >())) strip_types_t
Take a tuple type and apply strip_t to its component types.
Definition util.hxx:629
\n
void check_unique_register(void const *old_guest, std::string_view old_class, std::string_view old_name, void const *new_guest, std::string_view new_class, std::string_view new_name)
Check validity of registering a new "guest" in a "host.".
Definition util.cxx:63
\n
std::tuple< strip_t< TYPES >... > strip_types(std::tuple< TYPES... > const &)
Helper: Apply strip_t to each of a tuple type's component types.
\n
std::string describe_object(std::string_view class_name, std::string_view name)
Describe an object for humans, based on class name and optional name.
Definition util.cxx:53
\n
std::tuple< ARGS... > args_f(RETURN(&func)(ARGS...))
Helper for determining a function's parameter types.
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
constexpr bool cmp_greater(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_greater, or workaround if not available.
Definition util.hxx:87
\n
decltype(args_f(std::declval< CALLABLE >())) args_t
A callable's parameter types, as a tuple.
Definition util.hxx:616
\n
constexpr bool is_digit(CHAR c) noexcept
A safer and more generic replacement for std::isdigit.
Definition util.hxx:471
\n
constexpr char unescape_char(char escaped) noexcept
Return original byte for escaped character.
Definition util.hxx:633
\n
constexpr bool cmp_greater_equal(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_greater_equal, or workaround if not available.
Definition util.hxx:113
\n
std::string cat2(std::string_view x, std::string_view y)
Efficiently concatenate two strings.
Definition util.hxx:127
\n
constexpr bool cmp_less_equal(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_less_equal, or workaround if not available.
Definition util.hxx:100
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -61,79 +61,79 @@\n 56\n 57\n 59namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 60{\n 61\n 62// C++20: Retire wrapper.\n 64template\n-_\b6_\b5inline constexpr bool _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(LEFT lhs, RIGHT rhs) noexcept\n+_\b6_\b5inline constexpr bool _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs) noexcept\n 66{\n 67#if defined(PQXX_HAVE_CMP)\n-68 return std::cmp_less(lhs, rhs);\n+68 return std::cmp_less(_\bl_\bh_\bs, _\br_\bh_\bs);\n 69#else\n 70 // We need a variable just because lgtm.com gives off a false positive\n 71 // warning when we compare the values directly. It considers that a\n 72 // \"self-comparison.\"\n-73 constexpr bool left_signed{std::is_signed_v};\n-74 if constexpr (left_signed == std::is_signed_v)\n-75 return lhs < rhs;\n+73 constexpr bool _\bl_\be_\bf_\bt_\b__\bs_\bi_\bg_\bn_\be_\bd{std::is_signed_v};\n+74 if constexpr (_\bl_\be_\bf_\bt_\b__\bs_\bi_\bg_\bn_\be_\bd == std::is_signed_v)\n+75 return _\bl_\bh_\bs < _\br_\bh_\bs;\n 76 else if constexpr (std::is_signed_v)\n-77 return (lhs <= 0) ? true : (std::make_unsigned_t(lhs) < rhs);\n+77 return (_\bl_\bh_\bs <= 0) ? _\bt_\br_\bu_\be : (std::make_unsigned_t(_\bl_\bh_\bs) < _\br_\bh_\bs);\n 78 else\n-79 return (rhs <= 0) ? false : (lhs < std::make_unsigned_t(rhs));\n+79 return (_\br_\bh_\bs <= 0) ? _\bf_\ba_\bl_\bs_\be : (_\bl_\bh_\bs_\b _\b<_\b _\bs_\bt_\bd_\b:_\b:_\bm_\ba_\bk_\be_\b__\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b__\bt_\b<_\bR_\bI_\bG_\bH_\bT_\b>(_\br_\bh_\bs));\n 80#endif\n 81}\n 82\n 83\n 84// C++20: Retire wrapper.\n 86template\n-_\b8_\b7inline constexpr bool _\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br(LEFT lhs, RIGHT rhs) noexcept\n+_\b8_\b7inline constexpr bool _\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br(_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs) noexcept\n 88{\n 89#if defined(PQXX_HAVE_CMP)\n-90 return std::cmp_greater(lhs, rhs);\n+90 return std::cmp_greater(_\bl_\bh_\bs, _\br_\bh_\bs);\n 91#else\n-92 return _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(rhs, lhs);\n+92 return _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(_\br_\bh_\bs, _\bl_\bh_\bs);\n 93#endif\n 94}\n 95\n 96\n 97// C++20: Retire wrapper.\n 99template\n-_\b1_\b0_\b0inline constexpr bool _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs_\b__\be_\bq_\bu_\ba_\bl(LEFT lhs, RIGHT rhs) noexcept\n+_\b1_\b0_\b0inline constexpr bool _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs_\b__\be_\bq_\bu_\ba_\bl(_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs) noexcept\n 101{\n 102#if defined(PQXX_HAVE_CMP)\n-103 return std::cmp_less_equal(lhs, rhs);\n+103 return std::cmp_less_equal(_\bl_\bh_\bs, _\br_\bh_\bs);\n 104#else\n-105 return not _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(rhs, lhs);\n+105 return _\bn_\bo_\bt _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(_\br_\bh_\bs, _\bl_\bh_\bs);\n 106#endif\n 107}\n 108\n 109\n 110// C++20: Retire wrapper.\n 112template\n-_\b1_\b1_\b3inline constexpr bool _\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br_\b__\be_\bq_\bu_\ba_\bl(LEFT lhs, RIGHT rhs) noexcept\n+_\b1_\b1_\b3inline constexpr bool _\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br_\b__\be_\bq_\bu_\ba_\bl(_\bL_\bE_\bF_\bT _\bl_\bh_\bs, _\bR_\bI_\bG_\bH_\bT _\br_\bh_\bs) noexcept\n 114{\n 115#if defined(PQXX_HAVE_CMP)\n-116 return std::cmp_greater_equal(lhs, rhs);\n+116 return std::cmp_greater_equal(_\bl_\bh_\bs, _\br_\bh_\bs);\n 117#else\n-118 return not _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(lhs, rhs);\n+118 return _\bn_\bo_\bt _\bc_\bm_\bp_\b__\bl_\be_\bs_\bs(_\bl_\bh_\bs, _\br_\bh_\bs);\n 119#endif\n 120}\n 121\n 122\n 124\n-_\b1_\b2_\b7[[nodiscard]] inline std::string _\bc_\ba_\bt_\b2(std::string_view x, std::string_view\n-y)\n+_\b1_\b2_\b7[[_\bn_\bo_\bd_\bi_\bs_\bc_\ba_\br_\bd]] inline std::string _\bc_\ba_\bt_\b2(std::string_view _\bx, std::string_view\n+_\by)\n 128{\n-129 std::string buf;\n-130 auto const xs{std::size(x)}, ys{std::size(y)};\n-131 buf.resize(xs + ys);\n-132 x.copy(std::data(buf), xs);\n-133 y.copy(std::data(buf) + xs, ys);\n-134 return buf;\n+129 std::string _\bb_\bu_\bf;\n+130 auto const _\bx_\bs{std::size(_\bx)}, _\by_\bs{std::size(_\by)};\n+131 _\bb_\bu_\bf.resize(_\bx_\bs + _\by_\bs);\n+132 _\bx.copy(std::data(_\bb_\bu_\bf), _\bx_\bs);\n+133 _\by.copy(std::data(_\bb_\bu_\bf) + _\bx_\bs, _\by_\bs);\n+134 return _\bb_\bu_\bf;\n 135}\n 136} // namespace pqxx::internal\n 137\n 138\n 139namespace _\bp_\bq_\bx_\bx\n 140{\n 141using namespace std::literals;\n@@ -386,124 +386,124 @@\n 452\n 461namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 462{\n 463using namespace std::literals;\n 464\n 465\n 467\n-_\b4_\b7_\b1template inline constexpr bool _\bi_\bs_\b__\bd_\bi_\bg_\bi_\bt(CHAR c) noexcept\n+_\b4_\b7_\b1template inline constexpr bool _\bi_\bs_\b__\bd_\bi_\bg_\bi_\bt(_\bC_\bH_\bA_\bR _\bc) noexcept\n 472{\n-473 return (c >= '0') and (c <= '9');\n+473 return (_\bc >= '0') _\ba_\bn_\bd (_\bc <= '9');\n 474}\n 475\n 476\n 478\n-480[[nodiscard]] std::string\n-481_\bd_\be_\bs_\bc_\br_\bi_\bb_\be_\b__\bo_\bb_\bj_\be_\bc_\bt(std::string_view class_name, std::string_view name);\n+480[[_\bn_\bo_\bd_\bi_\bs_\bc_\ba_\br_\bd]] std::string\n+481_\bd_\be_\bs_\bc_\br_\bi_\bb_\be_\b__\bo_\bb_\bj_\be_\bc_\bt(std::string_view _\bc_\bl_\ba_\bs_\bs_\b__\bn_\ba_\bm_\be, std::string_view name);\n 482\n 483\n 485\n 496void _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\br_\be_\bg_\bi_\bs_\bt_\be_\br(\n-497 void const *old_guest, std::string_view old_class, std::string_view\n-old_name,\n-498 void const *new_guest, std::string_view new_class,\n-499 std::string_view new_name);\n+497 void const *_\bo_\bl_\bd_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bo_\bl_\bd_\b__\bc_\bl_\ba_\bs_\bs, std::string_view\n+_\bo_\bl_\bd_\b__\bn_\ba_\bm_\be,\n+498 void const *_\bn_\be_\bw_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bn_\be_\bw_\b__\bc_\bl_\ba_\bs_\bs,\n+499 std::string_view _\bn_\be_\bw_\b__\bn_\ba_\bm_\be);\n 500\n 501\n 503\n 506void _\bc_\bh_\be_\bc_\bk_\b__\bu_\bn_\bi_\bq_\bu_\be_\b__\bu_\bn_\br_\be_\bg_\bi_\bs_\bt_\be_\br(\n-507 void const *old_guest, std::string_view old_class, std::string_view\n-old_name,\n-508 void const *new_guest, std::string_view new_class,\n-509 std::string_view new_name);\n+507 void const *_\bo_\bl_\bd_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bo_\bl_\bd_\b__\bc_\bl_\ba_\bs_\bs, std::string_view\n+_\bo_\bl_\bd_\b__\bn_\ba_\bm_\be,\n+508 void const *_\bn_\be_\bw_\b__\bg_\bu_\be_\bs_\bt, std::string_view _\bn_\be_\bw_\b__\bc_\bl_\ba_\bs_\bs,\n+509 std::string_view _\bn_\be_\bw_\b__\bn_\ba_\bm_\be);\n 510\n 511\n 513\n-_\b5_\b1_\b6inline constexpr std::size_t _\bs_\bi_\bz_\be_\b__\be_\bs_\bc_\b__\bb_\bi_\bn(std::size_t binary_bytes) noexcept\n+_\b5_\b1_\b6inline constexpr std::size_t _\bs_\bi_\bz_\be_\b__\be_\bs_\bc_\b__\bb_\bi_\bn(std::size_t _\bb_\bi_\bn_\ba_\br_\by_\b__\bb_\by_\bt_\be_\bs) noexcept\n 517{\n-518 return 2 + (2 * binary_bytes) + 1;\n+518 return 2 + (2 * _\bb_\bi_\bn_\ba_\br_\by_\b__\bb_\by_\bt_\be_\bs) + 1;\n 519}\n 520\n 521\n 523\n-_\b5_\b2_\b5inline constexpr std::size_t _\bs_\bi_\bz_\be_\b__\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn(std::size_t escaped_bytes)\n+_\b5_\b2_\b5inline constexpr std::size_t _\bs_\bi_\bz_\be_\b__\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn(std::size_t _\be_\bs_\bc_\ba_\bp_\be_\bd_\b__\bb_\by_\bt_\be_\bs)\n noexcept\n 526{\n-527 return (escaped_bytes - 2) / 2;\n+527 return (_\be_\bs_\bc_\ba_\bp_\be_\bd_\b__\bb_\by_\bt_\be_\bs - 2) / 2;\n 528}\n 529\n 530\n 531// TODO: Use actual binary type for \"data\".\n 533\n-538void PQXX_LIBEXPORT _\be_\bs_\bc_\b__\bb_\bi_\bn(_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw binary_data, char buffer[]) noexcept;\n+538void PQXX_LIBEXPORT _\be_\bs_\bc_\b__\bb_\bi_\bn(_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw _\bb_\bi_\bn_\ba_\br_\by_\b__\bd_\ba_\bt_\ba, char _\bb_\bu_\bf_\bf_\be_\br[]) noexcept;\n 539\n 540\n-542std::string PQXX_LIBEXPORT _\be_\bs_\bc_\b__\bb_\bi_\bn(_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw binary_data);\n+542std::string PQXX_LIBEXPORT _\be_\bs_\bc_\b__\bb_\bi_\bn(_\bb_\by_\bt_\be_\bs_\b__\bv_\bi_\be_\bw _\bb_\bi_\bn_\ba_\br_\by_\b__\bd_\ba_\bt_\ba);\n 543\n 544\n 546void PQXX_LIBEXPORT\n-547_\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn(std::string_view escaped_data, std::byte buffer[]);\n+547_\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn(std::string_view _\be_\bs_\bc_\ba_\bp_\be_\bd_\b__\bd_\ba_\bt_\ba, std::byte _\bb_\bu_\bf_\bf_\be_\br[]);\n 548\n 549\n-551_\bb_\by_\bt_\be_\bs PQXX_LIBEXPORT _\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn(std::string_view escaped_data);\n+551_\bb_\by_\bt_\be_\bs PQXX_LIBEXPORT _\bu_\bn_\be_\bs_\bc_\b__\bb_\bi_\bn(std::string_view _\be_\bs_\bc_\ba_\bp_\be_\bd_\b__\bd_\ba_\bt_\ba);\n 552\n 553\n-_\b5_\b5_\b5template auto _\bs_\bs_\bi_\bz_\be(T const &c)\n+_\b5_\b5_\b5template auto _\bs_\bs_\bi_\bz_\be(_\bT const &_\bc)\n 556{\n 557#if defined(PQXX_HAVE_SSIZE)\n-558 return std::ssize(c);\n+558 return std::ssize(_\bc);\n 559#else\n-560 using signed_t = std::make_signed_t;\n-561 return static_cast(std::size(c));\n+560 using _\bs_\bi_\bg_\bn_\be_\bd_\b__\bt = std::make_signed_t;\n+561 return static_cast<_\bs_\bi_\bg_\bn_\be_\bd_\b__\bt>(std::size(_\bc));\n 562#endif // PQXX_HAVE_SSIZe\n 563}\n 564\n 565\n 567\n-571template\n-_\b5_\b7_\b2std::tuple _\ba_\br_\bg_\bs_\b__\bf(RETURN (&func)(ARGS...));\n+571template\n+_\b5_\b7_\b2std::tuple<_\bA_\bR_\bG_\bS...> _\ba_\br_\bg_\bs_\b__\bf(_\bR_\bE_\bT_\bU_\bR_\bN (&_\bf_\bu_\bn_\bc)(_\bA_\bR_\bG_\bS...));\n 573\n 574\n 576\n-580template\n-_\b5_\b8_\b1std::tuple _\ba_\br_\bg_\bs_\b__\bf(std::function const &);\n+580template\n+_\b5_\b8_\b1std::tuple<_\bA_\bR_\bG_\bS...> _\ba_\br_\bg_\bs_\b__\bf(std::function<_\bR_\bE_\bT_\bU_\bR_\bN(_\bA_\bR_\bG_\bS...)> const &);\n 582\n 583\n 585\n-589template\n-_\b5_\b9_\b0std::tuple _\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf(RETURN (CLASS::*)(ARGS...));\n+589template\n+_\b5_\b9_\b0std::tuple<_\bA_\bR_\bG_\bS...> _\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf(_\bR_\bE_\bT_\bU_\bR_\bN (_\bC_\bL_\bA_\bS_\bS::*)(_\bA_\bR_\bG_\bS...));\n 591\n 592\n 594\n-598template\n-599std::tuple _\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf(RETURN (CLASS::*)(ARGS...) const);\n+598template\n+599std::tuple<_\bA_\bR_\bG_\bS...> _\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf(_\bR_\bE_\bT_\bU_\bR_\bN (_\bC_\bL_\bA_\bS_\bS::*)(_\bA_\bR_\bG_\bS...) _\bc_\bo_\bn_\bs_\bt);\n 600\n 601\n 603\n 609template\n-_\b6_\b1_\b0auto _\ba_\br_\bg_\bs_\b__\bf(CALLABLE const &f)\n+_\b6_\b1_\b0auto _\ba_\br_\bg_\bs_\b__\bf(_\bC_\bA_\bL_\bL_\bA_\bB_\bL_\bE const &_\bf)\n 611 -> decltype(_\bm_\be_\bm_\bb_\be_\br_\b__\ba_\br_\bg_\bs_\b__\bf(&CALLABLE::operator()));\n 612\n 613\n 615template\n _\b6_\b1_\b6using _\ba_\br_\bg_\bs_\b__\bt = decltype(_\ba_\br_\bg_\bs_\b__\bf(std::declval()));\n 617\n 618\n 620\n-623template\n+623template\n _\b6_\b2_\b4std::tuple...> _\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs(std::tuple const &);\n 625\n 626\n-628template\n+628template\n _\b6_\b2_\b9using _\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs_\b__\bt = decltype(_\bs_\bt_\br_\bi_\bp_\b__\bt_\by_\bp_\be_\bs(std::declval()));\n 630\n 631\n-_\b6_\b3_\b3inline constexpr char _\bu_\bn_\be_\bs_\bc_\ba_\bp_\be_\b__\bc_\bh_\ba_\br(char escaped) noexcept\n+_\b6_\b3_\b3inline constexpr char _\bu_\bn_\be_\bs_\bc_\ba_\bp_\be_\b__\bc_\bh_\ba_\br(char _\be_\bs_\bc_\ba_\bp_\be_\bd) noexcept\n 634{\n-635 switch (escaped)\n+635 switch (_\be_\bs_\bc_\ba_\bp_\be_\bd)\n 636 {\n 637 case 'b': // Backspace.\n 638 PQXX_UNLIKELY return '\\b';\n 639 case 'f': // Form feed\n 640 PQXX_UNLIKELY return '\\f';\n 641 case 'n': // Line feed.\n 642 return '\\n';\n@@ -512,53 +512,53 @@\n 645 case 't': // Horizontal tab.\n 646 return '\\t';\n 647 case 'v': // Vertical tab.\n 648 return '\\v';\n 649 default: break;\n 650 }\n 651 // Regular character (\"self-escaped\").\n-652 return escaped;\n+652 return _\be_\bs_\bc_\ba_\bp_\be_\bd;\n 653}\n 654\n 655\n 656// C++20: std::span?\n 658template\n 659char const *PQXX_COLD\n-_\b6_\b6_\b0_\be_\br_\br_\bo_\br_\b__\bs_\bt_\br_\bi_\bn_\bg(int err_num, std::array &buffer)\n+_\b6_\b6_\b0_\be_\br_\br_\bo_\br_\b__\bs_\bt_\br_\bi_\bn_\bg(int _\be_\br_\br_\b__\bn_\bu_\bm, std::array &_\bb_\bu_\bf_\bf_\be_\br)\n 661{\n 662 // Not entirely clear whether strerror_s will be in std or global\n namespace.\n 663 using namespace std;\n 664\n 665#if defined(PQXX_HAVE_STERROR_S) || defined(PQXX_HAVE_STRERROR_R)\n 666# if defined(PQXX_HAVE_STRERROR_S)\n-667 auto const err_result{strerror_s(std::data(buffer), BYTES, err_num)};\n+667 auto const _\be_\br_\br_\b__\br_\be_\bs_\bu_\bl_\bt{_\bs_\bt_\br_\be_\br_\br_\bo_\br_\b__\bs(std::data(_\bb_\bu_\bf_\bf_\be_\br), _\bB_\bY_\bT_\bE_\bS, _\be_\br_\br_\b__\bn_\bu_\bm)};\n 668# else\n-669 auto const err_result{strerror_r(err_num, std::data(buffer), BYTES)};\n+669 auto const _\be_\br_\br_\b__\br_\be_\bs_\bu_\bl_\bt{_\bs_\bt_\br_\be_\br_\br_\bo_\br_\b__\br(_\be_\br_\br_\b__\bn_\bu_\bm, std::data(_\bb_\bu_\bf_\bf_\be_\br), _\bB_\bY_\bT_\bE_\bS)};\n 670# endif\n-671 if constexpr (std::is_same_v<_\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\bi_\bp_\b__\bt, char *>)\n+671 if constexpr (std::is_same_v<_\bp_\bq_\bx_\bx_\b:_\b:_\bs_\bt_\br_\bi_\bp_\b__\bt, char *>)\n 672 {\n 673 // GNU version of strerror_r; returns the error string, which may or may\n 674 // not reside within buffer.\n-675 return err_result;\n+675 return _\be_\br_\br_\b__\br_\be_\bs_\bu_\bl_\bt;\n 676 }\n 677 else\n 678 {\n 679 // Either strerror_s or POSIX strerror_r; returns an error code.\n 680 // Sorry for being lazy here: Not reporting error string for the case\n 681 // where we can't retrieve an error string.\n-682 if (err_result == 0)\n-683 return std::data(buffer);\n+682 if (_\be_\br_\br_\b__\br_\be_\bs_\bu_\bl_\bt == 0)\n+683 return std::data(_\bb_\bu_\bf_\bf_\be_\br);\n 684 else\n 685 return \"Compound errors.\";\n 686 }\n 687\n 688#else\n 689 // Fallback case, hopefully for no actual platforms out there.\n-690 _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bg_\bn_\bo_\br_\be_\b__\bu_\bn_\bu_\bs_\be_\bd(err_num, buffer);\n+690 _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bg_\bn_\bo_\br_\be_\b__\bu_\bn_\bu_\bs_\be_\bd(_\be_\br_\br_\b__\bn_\bu_\bm, _\bb_\bu_\bf_\bf_\be_\br);\n 691 return \"(No error information available.)\";\n 692#endif\n 693}\n 694} // namespace pqxx::internal\n 695\n 696\n 697namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bp_\bq\n@@ -626,14 +626,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bd_\be_\bs_\bc_\br_\bi_\bb_\be_\b__\bo_\bb_\bj_\be_\bc_\bt\n std::string describe_object(std::string_view class_name, std::string_view name)\n Describe an object for humans, based on class name and optional name.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.cxx:53\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\ba_\br_\bg_\bs_\b__\bf\n std::tuple< ARGS... > args_f(RETURN(&func)(ARGS...))\n Helper for determining a function's parameter types.\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bc_\bm_\bp_\b__\bg_\br_\be_\ba_\bt_\be_\br\n constexpr bool cmp_greater(LEFT lhs, RIGHT rhs) noexcept\n C++20 std::cmp_greater, or workaround if not available.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn util.hxx:87\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\ba_\br_\bg_\bs_\b__\bt\n decltype(args_f(std::declval< CALLABLE >())) args_t\n A callable's parameter types, as a tuple.\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/version_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/version_8hxx_source.html", "unified_diff": "@@ -122,18 +122,19 @@\n
26# define PQXX_VERSION_MINOR 10
\n
27
\n
28# define PQXX_VERSION_CHECK check_pqxx_version_7_10
\n
29
\n
30namespace pqxx::internal
\n
31{
\n
33
\n-
54PQXX_LIBEXPORT int PQXX_VERSION_CHECK() noexcept;
\n+
54PQXX_LIBEXPORT int PQXX_VERSION_CHECK() noexcept;
\n
55} // namespace pqxx::internal
\n
56#endif
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
\n \n \n
\n
    \n
  • include
  • pqxx
  • version.hxx
  • \n
  • Generated by \"doxygen\"/ 1.9.8
  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -28,17 +28,22 @@\n 26# define PQXX_VERSION_MINOR 10\n 27\n 28# define PQXX_VERSION_CHECK check_pqxx_version_7_10\n 29\n 30namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 31{\n 33\n-_\b5_\b4PQXX_LIBEXPORT int PQXX_VERSION_CHECK() noexcept;\n+_\b5_\b4PQXX_LIBEXPORT int PQXX_VERSION_CHECK() _\bn_\bo_\be_\bx_\bc_\be_\bp_\bt;\n 55} // namespace pqxx::internal\n 56#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n * _\bi_\bn_\bc_\bl_\bu_\bd_\be\n * _\bp_\bq_\bx_\bx\n * v\bve\ber\brs\bsi\bio\bon\bn.\b.h\bhx\bxx\bx\n * Generated by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/wait_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/wait_8hxx_source.html", "unified_diff": "@@ -100,23 +100,24 @@\n
    \n
    1#if !defined(PQXX_WAIT_HXX)
    \n
    2# define PQXX_WAIT_HXX
    \n
    3
    \n
    4namespace pqxx::internal
    \n
    5{
    \n
    7
    \n-
    10void PQXX_LIBEXPORT wait_for(unsigned int microseconds);
    \n+
    10void PQXX_LIBEXPORT wait_for(unsigned int microseconds);
    \n
    11
    \n
    12
    \n
    14PQXX_LIBEXPORT void wait_fd(
    \n-
    15 int fd, bool for_read, bool for_write, unsigned seconds = 1,
    \n-
    16 unsigned microseconds = 0);
    \n+
    15 int fd, bool for_read, bool for_write, unsigned seconds = 1,
    \n+
    16 unsigned microseconds = 0);
    \n
    17} // namespace pqxx::internal
    \n
    18#endif
    \n
    Internal items for libpqxx' own use. Do not use these yourself.
    Definition encodings.cxx:33
    \n+
    composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
    Look up implementation of parse_composite_field for ENC.
    Definition array-composite.hxx:274
    \n
    PQXX_LIBEXPORT void wait_fd(int fd, bool for_read, bool for_write, unsigned seconds=1, unsigned microseconds=0)
    Wait for a socket to be ready for reading/writing, or timeout.
    Definition wait.cxx:91
    \n
    void PQXX_LIBEXPORT wait_for(unsigned int microseconds)
    Wait.
    Definition wait.cxx:145
    \n
    \n
\n \n
\n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,25 +6,30 @@\n wait.hxx\n 1#if !defined(PQXX_WAIT_HXX)\n 2# define PQXX_WAIT_HXX\n 3\n 4namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 5{\n 7\n-10void PQXX_LIBEXPORT _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br(unsigned int microseconds);\n+10void PQXX_LIBEXPORT _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br(unsigned int _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs);\n 11\n 12\n 14PQXX_LIBEXPORT void _\bw_\ba_\bi_\bt_\b__\bf_\bd(\n-15 int fd, bool for_read, bool for_write, unsigned seconds = 1,\n-16 unsigned microseconds = 0);\n+15 int _\bf_\bd, bool _\bf_\bo_\br_\b__\br_\be_\ba_\bd, bool _\bf_\bo_\br_\b__\bw_\br_\bi_\bt_\be, unsigned _\bs_\be_\bc_\bo_\bn_\bd_\bs = 1,\n+16 unsigned _\bm_\bi_\bc_\br_\bo_\bs_\be_\bc_\bo_\bn_\bd_\bs = 0);\n 17} // namespace pqxx::internal\n 18#endif\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bw_\ba_\bi_\bt_\b__\bf_\bd\n PQXX_LIBEXPORT void wait_fd(int fd, bool for_read, bool for_write, unsigned\n seconds=1, unsigned microseconds=0)\n Wait for a socket to be ready for reading/writing, or timeout.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn wait.cxx:91\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bw_\ba_\bi_\bt_\b__\bf_\bo_\br\n void PQXX_LIBEXPORT wait_for(unsigned int microseconds)\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/zview_8hxx_source.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/zview_8hxx_source.html", "unified_diff": "@@ -203,16 +203,16 @@\n
    124template<>
    \n
    125inline constexpr bool std::ranges::enable_borrowed_range<pqxx::zview>{true};
    \n
    126
    \n
    127namespace pqxx::internal
    \n
    128{
    \n
    130
    \n
    134template<typename T>
    \n-
    135concept ZString = std::is_convertible_v<strip_t<T>, char const *> or
    \n-
    136 std::is_convertible_v<strip_t<T>, zview> or
    \n+
    135concept ZString = std::is_convertible_v<strip_t<T>, char const *> or
    \n+
    136 std::is_convertible_v<strip_t<T>, zview> or
    \n
    137 std::is_convertible_v<T, std::string const &>;
    \n
    138} // namespace pqxx::internal
    \n
    139#endif // PQXX_HAVE_CONCEPTS
    \n
    140
    \n
    141
    \n
    142namespace pqxx::internal
    \n
    143{
    \n@@ -220,15 +220,15 @@\n
    145inline constexpr char const *as_c_string(char const str[]) noexcept
    \n
    146{
    \n
    147 return str;
    \n
    148}
    \n
\n
150template<std::size_t N>
\n
\n-
151inline constexpr char const *as_c_string(char (&str)[N]) noexcept
\n+
151inline constexpr char const *as_c_string(char (&str)[N]) noexcept
\n
152{
\n
153 return str;
\n
154}
\n
\n
\n
156inline constexpr char const *as_c_string(pqxx::zview str) noexcept
\n
157{
\n@@ -251,14 +251,15 @@\n
constexpr zview(char text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)}))
Convenience overload: construct using pointer and signed length.
Definition zview.hxx:49
\n
constexpr zview(char const text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)}))
Convenience overload: construct using pointer and signed length.
Definition zview.hxx:43
\n
constexpr zview(char const str[]) noexcept(noexcept(std::string_view{str}))
Construct a zview from a C-style string.
Definition zview.hxx:78
\n
constexpr zview(std::string_view other) noexcept
Explicitly promote a string_view to a zview.
Definition zview.hxx:55
\n
zview(std::string const &str) noexcept
Definition zview.hxx:69
\n
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
\n
constexpr char const * as_c_string(char const str[]) noexcept
Get a raw C string pointer.
Definition zview.hxx:145
\n+
composite_field_parser< T > specialize_parse_composite_field(encoding_group enc)
Look up implementation of parse_composite_field for ENC.
Definition array-composite.hxx:274
\n
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
\n
\n \n \n
\n
    \n
  • include
  • pqxx
  • zview.hxx
  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -91,29 +91,29 @@\n 124template<>\n 125inline constexpr bool std::ranges::enable_borrowed_range{true};\n 126\n 127namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 128{\n 130\n 134template\n-135concept ZString = std::is_convertible_v, char const *> or\n-136 std::is_convertible_v, zview> or\n+135concept _\bZ_\bS_\bt_\br_\bi_\bn_\bg = std::is_convertible_v, char const *> _\bo_\br\n+136 std::is_convertible_v, zview> _\bo_\br\n 137 std::is_convertible_v;\n 138} // namespace pqxx::internal\n 139#endif // PQXX_HAVE_CONCEPTS\n 140\n 141\n 142namespace _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n 143{\n _\b1_\b4_\b5inline constexpr char const *_\ba_\bs_\b__\bc_\b__\bs_\bt_\br_\bi_\bn_\bg(char const str[]) noexcept\n 146{\n 147 return str;\n 148}\n 150template\n-_\b1_\b5_\b1inline constexpr char const *_\ba_\bs_\b__\bc_\b__\bs_\bt_\br_\bi_\bn_\bg(char (&str)[N]) noexcept\n+_\b1_\b5_\b1inline constexpr char const *_\ba_\bs_\b__\bc_\b__\bs_\bt_\br_\bi_\bn_\bg(char (&str)[_\bN]) noexcept\n 152{\n 153 return str;\n 154}\n _\b1_\b5_\b6inline constexpr char const *_\ba_\bs_\b__\bc_\b__\bs_\bt_\br_\bi_\bn_\bg(_\bp_\bq_\bx_\bx_\b:_\b:_\bz_\bv_\bi_\be_\bw str) noexcept\n 157{\n 158 return str.c_str();\n 159}\n@@ -163,14 +163,19 @@\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl\n Internal items for libpqxx' own use. Do not use these yourself.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn encodings.cxx:33\n _\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\ba_\bs_\b__\bc_\b__\bs_\bt_\br_\bi_\bn_\bg\n constexpr char const * as_c_string(char const str[]) noexcept\n Get a raw C string pointer.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn zview.hxx:145\n+_\bp_\bq_\bx_\bx_\b:_\b:_\bi_\bn_\bt_\be_\br_\bn_\ba_\bl_\b:_\b:_\bs_\bp_\be_\bc_\bi_\ba_\bl_\bi_\bz_\be_\b__\bp_\ba_\br_\bs_\be_\b__\bc_\bo_\bm_\bp_\bo_\bs_\bi_\bt_\be_\b__\bf_\bi_\be_\bl_\bd\n+composite_field_parser< T > specialize_parse_composite_field(encoding_group\n+enc)\n+Look up implementation of parse_composite_field for ENC.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array-composite.hxx:274\n _\bp_\bq_\bx_\bx\n The home of all libpqxx classes, functions, templates, etc.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn array.cxx:27\n * _\bi_\bn_\bc_\bl_\bu_\bd_\be\n * _\bp_\bq_\bx_\bx\n * z\bzv\bvi\bie\bew\bw.\b.h\bhx\bxx\bx\n * Generated by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}]}]}]}]}