/Users/brunogarcia/projects/bitcoin-core-dev/src/util/string.h
Line | Count | Source |
1 | | // Copyright (c) 2019-present The Bitcoin Core developers |
2 | | // Distributed under the MIT software license, see the accompanying |
3 | | // file COPYING or http://www.opensource.org/licenses/mit-license.php. |
4 | | |
5 | | #ifndef BITCOIN_UTIL_STRING_H |
6 | | #define BITCOIN_UTIL_STRING_H |
7 | | |
8 | | #include <span.h> |
9 | | |
10 | | #include <array> |
11 | | #include <cstdint> |
12 | | #include <cstring> |
13 | | #include <locale> |
14 | | #include <sstream> |
15 | | #include <string> // IWYU pragma: export |
16 | | #include <string_view> // IWYU pragma: export |
17 | | #include <vector> |
18 | | |
19 | | namespace util { |
20 | | namespace detail { |
21 | | template <unsigned num_params> |
22 | | constexpr static void CheckNumFormatSpecifiers(const char* str) |
23 | 0 | { |
24 | 0 | unsigned count_normal{0}; // Number of "normal" specifiers, like %s |
25 | 0 | unsigned count_pos{0}; // Max number in positional specifier, like %8$s |
26 | 0 | for (auto it{str}; *it != '\0'; ++it) { |
27 | 0 | if (*it != '%' || *++it == '%') continue; // Skip escaped %% |
28 | 0 |
|
29 | 0 | auto add_arg = [&] { |
30 | 0 | unsigned maybe_num{0}; |
31 | 0 | while ('0' <= *it && *it <= '9') { |
32 | 0 | maybe_num *= 10; |
33 | 0 | maybe_num += *it - '0'; |
34 | 0 | ++it; |
35 | 0 | } |
36 | 0 |
|
37 | 0 | if (*it == '$') { |
38 | 0 | ++it; |
39 | 0 | // Positional specifier, like %8$s |
40 | 0 | if (maybe_num == 0) throw "Positional format specifier must have position of at least 1"; |
41 | 0 | count_pos = std::max(count_pos, maybe_num); |
42 | 0 | } else { |
43 | 0 | // Non-positional specifier, like %s |
44 | 0 | ++count_normal; |
45 | 0 | } |
46 | 0 | }; |
47 | 0 |
|
48 | 0 | // Increase argument count and consume positional specifier, if present. |
49 | 0 | add_arg(); |
50 | 0 |
|
51 | 0 | // Consume flags. |
52 | 0 | while (*it == '#' || *it == '0' || *it == '-' || *it == ' ' || *it == '+') ++it; |
53 | 0 |
|
54 | 0 | auto parse_size = [&] { |
55 | 0 | if (*it == '*') { |
56 | 0 | ++it; |
57 | 0 | add_arg(); |
58 | 0 | } else { |
59 | 0 | while ('0' <= *it && *it <= '9') ++it; |
60 | 0 | } |
61 | 0 | }; |
62 | 0 |
|
63 | 0 | // Consume dynamic or static width value. |
64 | 0 | parse_size(); |
65 | 0 |
|
66 | 0 | // Consume dynamic or static precision value. |
67 | 0 | if (*it == '.') { |
68 | 0 | ++it; |
69 | 0 | parse_size(); |
70 | 0 | } |
71 | 0 |
|
72 | 0 | if (*it == '\0') throw "Format specifier incorrectly terminated by end of string"; |
73 | 0 |
|
74 | 0 | // Length and type in "[flags][width][.precision][length]type" |
75 | 0 | // is not checked. Parsing continues with the next '%'. |
76 | 0 | } |
77 | 0 | if (count_normal && count_pos) throw "Format specifiers must be all positional or all non-positional!"; |
78 | 0 | unsigned count{count_normal | count_pos}; |
79 | 0 | if (num_params != count) throw "Format specifier count must match the argument count!"; |
80 | 0 | } Unexecuted instantiation: addition_overflow.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: addrman.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: addrman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: addrman.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: asmap.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: asmap_direct.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: autofile.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: banman.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: banman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: banman.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: base_encode_decode.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: bip324.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: bitdeque.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: bitset.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: block.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: block_header.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: block_index.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: blockfilter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: bloom_filter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: buffered_file.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: chain.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: checkqueue.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: cluster_linearize.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: coins_view.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: coinscache_sim.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: connman.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: connman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: connman.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: crypto.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_aes256.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_aes256cbc.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_chacha20.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_chacha20poly1305.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_common.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_diff_fuzz_chacha20.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_hkdf_hmac_sha256_l32.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypto_poly1305.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: cuckoocache.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: deserialize.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: deserialize.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: deserialize.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: difference_formatter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: feefrac.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: fee_rate.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: feeratediagram.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: fees.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: flatfile.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: float.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: golomb_rice.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: headerssync.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: headerssync.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: http_request.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: http_request.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: i2p.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: i2p.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: i2p.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: integer.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: integer.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: key.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: kitchen_sink.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: load_external_block_file.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: locale.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: merkle.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: merkleblock.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: message.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: miniscript.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: minisketch.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: mini_miner.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: muhash.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: multiplication_overflow.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: net_permissions.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: net_permissions.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: net_permissions.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: netaddress.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: netaddress.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: netaddress.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: netbase_dns_lookup.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: netbase_dns_lookup.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: netbase_dns_lookup.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: node_eviction.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: node_eviction.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: node_eviction.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: p2p_handshake.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: p2p_handshake.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: p2p_handshake.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: p2p_headers_presync.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: p2p_headers_presync.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: p2p_transport_serialization.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: p2p_transport_serialization.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: pcp.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: pcp.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: pcp.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: package_eval.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: parse_hd_keypath.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: partially_downloaded_block.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: policy_estimator_io.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: poolresource.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: pow.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: prevector.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: primitives_transaction.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: process_message.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: process_message.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: process_message.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: process_messages.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: process_messages.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: process_messages.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: protocol.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: protocol.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: psbt.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: random.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: rbf.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: rolling_bloom_filter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: rpc.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_assets_test_minimizer.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_descriptor_cache.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_flags.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_format.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_interpreter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_ops.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_sigcache.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: script_sign.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: scriptnum_ops.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: secp256k1_ec_seckey_import_export_der.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: secp256k1_ecdsa_signature_parse_der_lax.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: signature_checker.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: signet.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: socks5.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: socks5.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: socks5.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: span.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: string.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: string.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: strprintf.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: system.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: torcontrol.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: torcontrol.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: transaction.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txdownloadman.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: txdownloadman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txdownloadman.cpp:void util::detail::CheckNumFormatSpecifiers<6u>(char const*) Unexecuted instantiation: tx_in.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: tx_out.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: tx_pool.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txgraph.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txorphan.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: txorphan.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txrequest.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: txrequest.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: utxo_snapshot.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: utxo_snapshot.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: utxo_total_supply.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: validation_load_mempool.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: vecdeque.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: versionbits.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: coincontrol.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: coinselection.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: crypter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: feebumper.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: feebumper.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: feebumper.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: feebumper.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: fees.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: fees.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: fees.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: spend.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: spend.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: spend.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: spend.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: wallet_bdb_parser.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: mempool.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: threadinterrupt.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: fuzz.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: util.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: client.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: chain.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: chainparams.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: chainparams.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: coins.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: args.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: args.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: bloom.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: config.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: config.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: config.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: messages.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: messages.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: netif.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: netif.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: pcp.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: pcp.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: settings.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: settings.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: system.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: core_read.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: core_write.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: core_write.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: core_write.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: external_signer.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: external_signer.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: common.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: common.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: common.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: common.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: common.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: key_io.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: key_io.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: net_types.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: net_types.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: netaddress.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: netbase.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: netbase.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: netbase.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: netbase.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: feerate.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: rawtransaction_util.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: rawtransaction_util.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: request.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: request.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: request.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: util.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: util.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: util.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: descriptor.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: descriptor.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: descriptor.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: signingprovider.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: asmap.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: asmap.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: bip32.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: check.cpp:void util::detail::CheckNumFormatSpecifiers<7u>(char const*) Unexecuted instantiation: check.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: exception.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: exception.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: exception.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: fs_helpers.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: fs_helpers.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: moneystr.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: sock.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: sock.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: sock.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: syserror.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: syserror.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: thread.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: time.cpp:void util::detail::CheckNumFormatSpecifiers<6u>(char const*) Unexecuted instantiation: time.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: logging.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: logging.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: logging.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: logging.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: random.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: streams.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: coinselection.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: coinselection.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: db.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: db.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: dump.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: dump.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: dump.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: dump.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: external_signer_scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: feebumper.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: interfaces.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: interfaces.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: interfaces.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: interfaces.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: load.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: load.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: load.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: load.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: migrate.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: migrate.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: migrate.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: receive.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: receive.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: receive.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: receive.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: addresses.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: addresses.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: addresses.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: addresses.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: backup.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: backup.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: backup.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: backup.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: coins.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: coins.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: coins.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: encrypt.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: encrypt.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: encrypt.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: encrypt.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: signmessage.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: signmessage.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: signmessage.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: signmessage.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: transactions.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: transactions.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: transactions.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: transactions.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: util.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: wallet.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: wallet.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: wallet.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: wallet.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: spend.cpp:void util::detail::CheckNumFormatSpecifiers<20u>(char const*) Unexecuted instantiation: sqlite.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: sqlite.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: sqlite.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: transaction.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: transaction.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: transaction.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: wallet.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: wallet.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: walletdb.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: walletdb.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: walletdb.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: walletdb.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: walletdb.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: mining.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: random.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: setup_common.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: setup_common.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txmempool.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txmempool.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: addrdb.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: addrdb.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: addrdb.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: addrdb.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: addrman.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: addrman.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: addrman.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: banman.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: blockencodings.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: blockencodings.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: blockencodings.cpp:void util::detail::CheckNumFormatSpecifiers<6u>(char const*) Unexecuted instantiation: tx_verify.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: tx_verify.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: dbwrapper.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: dbwrapper.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: dbwrapper.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: dbwrapper.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: flatfile.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: flatfile.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: headerssync.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: headerssync.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: httprpc.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: httprpc.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: httprpc.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: httpserver.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: httpserver.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: httpserver.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: httpserver.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: i2p.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: base.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: base.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: blockfilterindex.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: blockfilterindex.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: blockfilterindex.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: blockfilterindex.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: coinstatsindex.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: coinstatsindex.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: coinstatsindex.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: txindex.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txindex.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: init.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: init.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: init.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: init.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: init.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: init.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: coinstats.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: context.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: mapport.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: mapport.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: mapport.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<6u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<8u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<7u>(char const*) Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: netgroup.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: netgroup.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: abort.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: blockmanager_args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: blockstorage.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: blockstorage.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: blockstorage.cpp:void util::detail::CheckNumFormatSpecifiers<6u>(char const*) Unexecuted instantiation: blockstorage.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: blockstorage.cpp:void util::detail::CheckNumFormatSpecifiers<7u>(char const*) Unexecuted instantiation: blockstorage.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: blockstorage.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: caches.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: caches.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: chainstate.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: chainstate.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: chainstatemanager_args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: chainstatemanager_args.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: coin.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: coins_view_args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: context.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: database_args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: eviction.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: interface_ui.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: kernel_notifications.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: mempool_args.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: mempool_args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: mempool_persist.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: mempool_persist.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: mempool_persist.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: mempool_persist.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: mempool_persist.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: mempool_persist_args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: miner.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: miner.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: miner.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: miner.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: peerman_args.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: peerman_args.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: timeoffsets.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: timeoffsets.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txdownloadman_impl.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: txdownloadman_impl.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txdownloadman_impl.cpp:void util::detail::CheckNumFormatSpecifiers<6u>(char const*) Unexecuted instantiation: txdownloadman_impl.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: txorphanage.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: txorphanage.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txorphanage.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: txorphanage.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: txreconciliation.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: txreconciliation.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: noui.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: noui.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: ephemeral_policy.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: block_policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: block_policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<18u>(char const*) Unexecuted instantiation: block_policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: block_policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: block_policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: block_policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<7u>(char const*) Unexecuted instantiation: rbf.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: rbf.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: truc_policy.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: truc_policy.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: rest.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: rest.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: blockchain.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: blockchain.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: blockchain.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: blockchain.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: blockchain.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: mempool.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: mining.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: node.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: node.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: output_script.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: rawtransaction.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: rawtransaction.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: server.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: server.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: server_util.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: server_util.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txoutproof.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: sigcache.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: signet.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: torcontrol.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: torcontrol.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: txdb.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: txdb.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: txdb.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: txmempool.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<6u>(char const*) Unexecuted instantiation: validation.cpp:void util::detail::CheckNumFormatSpecifiers<12u>(char const*) Unexecuted instantiation: validationinterface.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*) Unexecuted instantiation: validationinterface.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: validationinterface.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: clientversion.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*) Unexecuted instantiation: clientversion.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) Unexecuted instantiation: clientversion.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*) Unexecuted instantiation: block.cpp:void util::detail::CheckNumFormatSpecifiers<8u>(char const*) Unexecuted instantiation: transaction.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*) Unexecuted instantiation: interpreter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*) |
81 | | } // namespace detail |
82 | | |
83 | | /** |
84 | | * @brief A wrapper for a compile-time partially validated format string |
85 | | * |
86 | | * This struct can be used to enforce partial compile-time validation of format |
87 | | * strings, to reduce the likelihood of tinyformat throwing exceptions at |
88 | | * run-time. Validation is partial to try and prevent the most common errors |
89 | | * while avoiding re-implementing the entire parsing logic. |
90 | | */ |
91 | | template <unsigned num_params> |
92 | | struct ConstevalFormatString { |
93 | | const char* const fmt; |
94 | | consteval ConstevalFormatString(const char* str) : fmt{str} { detail::CheckNumFormatSpecifiers<num_params>(fmt); } |
95 | | }; |
96 | | |
97 | | void ReplaceAll(std::string& in_out, const std::string& search, const std::string& substitute); |
98 | | |
99 | | /** Split a string on any char found in separators, returning a vector. |
100 | | * |
101 | | * If sep does not occur in sp, a singleton with the entirety of sp is returned. |
102 | | * |
103 | | * @param[in] include_sep Whether to include the separator at the end of the left side of the splits. |
104 | | * |
105 | | * Note that this function does not care about braces, so splitting |
106 | | * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}. |
107 | | * |
108 | | * If include_sep == true, splitting "foo(bar(1),2),3) on ',' |
109 | | * will return: |
110 | | * - foo(bar(1), |
111 | | * - 2), |
112 | | * - 3) |
113 | | */ |
114 | | template <typename T = std::span<const char>> |
115 | | std::vector<T> Split(const std::span<const char>& sp, std::string_view separators, bool include_sep = false) |
116 | 317k | { |
117 | 317k | std::vector<T> ret; |
118 | 317k | auto it = sp.begin(); |
119 | 317k | auto start = it; |
120 | 32.7M | while (it != sp.end()) { |
121 | 32.4M | if (separators.find(*it) != std::string::npos) { |
122 | 475k | if (include_sep) { |
123 | 0 | ret.emplace_back(start, it + 1); |
124 | 475k | } else { |
125 | 475k | ret.emplace_back(start, it); |
126 | 475k | } |
127 | 475k | start = it + 1; |
128 | 475k | } |
129 | 32.4M | ++it; |
130 | 32.4M | } |
131 | 317k | ret.emplace_back(start, it); |
132 | 317k | return ret; |
133 | 317k | } Unexecuted instantiation: std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> util::Split<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::span<char const, 18446744073709551615ul> const&, std::__1::basic_string_view<char, std::__1::char_traits<char>>, bool) std::__1::vector<std::__1::span<char const, 18446744073709551615ul>, std::__1::allocator<std::__1::span<char const, 18446744073709551615ul>>> util::Split<std::__1::span<char const, 18446744073709551615ul>>(std::__1::span<char const, 18446744073709551615ul> const&, std::__1::basic_string_view<char, std::__1::char_traits<char>>, bool) Line | Count | Source | 116 | 317k | { | 117 | 317k | std::vector<T> ret; | 118 | 317k | auto it = sp.begin(); | 119 | 317k | auto start = it; | 120 | 32.7M | while (it != sp.end()) { | 121 | 32.4M | if (separators.find(*it) != std::string::npos) { | 122 | 475k | if (include_sep) { | 123 | 0 | ret.emplace_back(start, it + 1); | 124 | 475k | } else { | 125 | 475k | ret.emplace_back(start, it); | 126 | 475k | } | 127 | 475k | start = it + 1; | 128 | 475k | } | 129 | 32.4M | ++it; | 130 | 32.4M | } | 131 | 317k | ret.emplace_back(start, it); | 132 | 317k | return ret; | 133 | 317k | } |
Unexecuted instantiation: std::__1::vector<std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::allocator<std::__1::basic_string_view<char, std::__1::char_traits<char>>>> util::Split<std::__1::basic_string_view<char, std::__1::char_traits<char>>>(std::__1::span<char const, 18446744073709551615ul> const&, std::__1::basic_string_view<char, std::__1::char_traits<char>>, bool) |
134 | | |
135 | | /** Split a string on every instance of sep, returning a vector. |
136 | | * |
137 | | * If sep does not occur in sp, a singleton with the entirety of sp is returned. |
138 | | * |
139 | | * Note that this function does not care about braces, so splitting |
140 | | * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}. |
141 | | */ |
142 | | template <typename T = std::span<const char>> |
143 | | std::vector<T> Split(const std::span<const char>& sp, char sep, bool include_sep = false) |
144 | 317k | { |
145 | 317k | return Split<T>(sp, std::string_view{&sep, 1}, include_sep); |
146 | 317k | } Unexecuted instantiation: std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> util::Split<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::span<char const, 18446744073709551615ul> const&, char, bool) std::__1::vector<std::__1::span<char const, 18446744073709551615ul>, std::__1::allocator<std::__1::span<char const, 18446744073709551615ul>>> util::Split<std::__1::span<char const, 18446744073709551615ul>>(std::__1::span<char const, 18446744073709551615ul> const&, char, bool) Line | Count | Source | 144 | 317k | { | 145 | 317k | return Split<T>(sp, std::string_view{&sep, 1}, include_sep); | 146 | 317k | } |
Unexecuted instantiation: std::__1::vector<std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::allocator<std::__1::basic_string_view<char, std::__1::char_traits<char>>>> util::Split<std::__1::basic_string_view<char, std::__1::char_traits<char>>>(std::__1::span<char const, 18446744073709551615ul> const&, char, bool) |
147 | | |
148 | | [[nodiscard]] inline std::vector<std::string> SplitString(std::string_view str, char sep) |
149 | 0 | { |
150 | 0 | return Split<std::string>(str, sep); |
151 | 0 | } |
152 | | |
153 | | [[nodiscard]] inline std::vector<std::string> SplitString(std::string_view str, std::string_view separators) |
154 | 0 | { |
155 | 0 | return Split<std::string>(str, separators); |
156 | 0 | } |
157 | | |
158 | | [[nodiscard]] inline std::string_view TrimStringView(std::string_view str, std::string_view pattern = " \f\n\r\t\v") |
159 | 0 | { |
160 | 0 | std::string::size_type front = str.find_first_not_of(pattern); |
161 | 0 | if (front == std::string::npos) { |
162 | 0 | return {}; |
163 | 0 | } |
164 | 0 | std::string::size_type end = str.find_last_not_of(pattern); |
165 | 0 | return str.substr(front, end - front + 1); |
166 | 0 | } |
167 | | |
168 | | [[nodiscard]] inline std::string TrimString(std::string_view str, std::string_view pattern = " \f\n\r\t\v") |
169 | 0 | { |
170 | 0 | return std::string(TrimStringView(str, pattern)); |
171 | 0 | } |
172 | | |
173 | | [[nodiscard]] inline std::string_view RemoveSuffixView(std::string_view str, std::string_view suffix) |
174 | 0 | { |
175 | 0 | if (str.ends_with(suffix)) { |
176 | 0 | return str.substr(0, str.size() - suffix.size()); |
177 | 0 | } |
178 | 0 | return str; |
179 | 0 | } |
180 | | |
181 | | [[nodiscard]] inline std::string_view RemovePrefixView(std::string_view str, std::string_view prefix) |
182 | 0 | { |
183 | 0 | if (str.starts_with(prefix)) { |
184 | 0 | return str.substr(prefix.size()); |
185 | 0 | } |
186 | 0 | return str; |
187 | 0 | } |
188 | | |
189 | | [[nodiscard]] inline std::string RemovePrefix(std::string_view str, std::string_view prefix) |
190 | 0 | { |
191 | 0 | return std::string(RemovePrefixView(str, prefix)); |
192 | 0 | } |
193 | | |
194 | | /** |
195 | | * Join all container items. Typically used to concatenate strings but accepts |
196 | | * containers with elements of any type. |
197 | | * |
198 | | * @param container The items to join |
199 | | * @param separator The separator |
200 | | * @param unary_op Apply this operator to each item |
201 | | */ |
202 | | template <typename C, typename S, typename UnaryOp> |
203 | | // NOLINTNEXTLINE(misc-no-recursion) |
204 | | auto Join(const C& container, const S& separator, UnaryOp unary_op) |
205 | 0 | { |
206 | 0 | decltype(unary_op(*container.begin())) ret; |
207 | 0 | bool first{true}; |
208 | 0 | for (const auto& item : container) { |
209 | 0 | if (!first) ret += separator; |
210 | 0 | ret += unary_op(item); |
211 | 0 | first = false; |
212 | 0 | } |
213 | 0 | return ret; |
214 | 0 | } Unexecuted instantiation: auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [2], util::MakeUnorderedList(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)::'lambda'(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [2], util::MakeUnorderedList(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)::'lambda'(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)) Unexecuted instantiation: auto util::Join<std::__1::vector<LogCategory, std::__1::allocator<LogCategory>>, char [3], BCLog::Logger::LogCategoriesString() const::'lambda'(LogCategory const&)>(std::__1::vector<LogCategory, std::__1::allocator<LogCategory>> const&, char const (&) [3], BCLog::Logger::LogCategoriesString() const::'lambda'(LogCategory const&)) Unexecuted instantiation: auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [4], auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [4]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [4])::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [4], auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [4]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [4])::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)) Unexecuted instantiation: auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)) Unexecuted instantiation: auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [3], auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [3]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [3])::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [3], auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [3]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [3])::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)) Unexecuted instantiation: messages.cpp:auto util::Join<std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, FeeEstimateMode>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, FeeEstimateMode>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, common::FeeModes(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)::$_0>(std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, FeeEstimateMode>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, FeeEstimateMode>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, common::FeeModes(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)::$_0) Unexecuted instantiation: outputtype.cpp:auto util::Join<std::__1::array<OutputType, 4ul>, char [3], FormatAllOutputTypes()::$_0>(std::__1::array<OutputType, 4ul> const&, char const (&) [3], FormatAllOutputTypes()::$_0) Unexecuted instantiation: util.cpp:auto util::Join<std::__1::vector<RPCArg, std::__1::allocator<RPCArg>>, char [2], RPCArg::ToString(bool) const::$_0>(std::__1::vector<RPCArg, std::__1::allocator<RPCArg>> const&, char const (&) [2], RPCArg::ToString(bool) const::$_0) Unexecuted instantiation: logging.cpp:auto util::Join<std::__1::vector<BCLog::Level, std::__1::allocator<BCLog::Level>>, char [3], BCLog::Logger::LogLevelsString() const::$_0>(std::__1::vector<BCLog::Level, std::__1::allocator<BCLog::Level>> const&, char const (&) [3], BCLog::Logger::LogLevelsString() const::$_0) Unexecuted instantiation: auto util::Join<std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>, bilingual_str, auto util::Join<std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>, bilingual_str>(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&, bilingual_str const&)::'lambda'(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&)>(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&, bilingual_str const&, auto util::Join<std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>, bilingual_str>(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&, bilingual_str const&)::'lambda'(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&)) Unexecuted instantiation: blockfilter.cpp:auto util::Join<std::__1::map<BlockFilterType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::less<BlockFilterType>, std::__1::allocator<std::__1::pair<BlockFilterType const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>>, char [3], ListBlockFilterTypes()::$_0>(std::__1::map<BlockFilterType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::less<BlockFilterType>, std::__1::allocator<std::__1::pair<BlockFilterType const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>> const&, char const (&) [3], ListBlockFilterTypes()::$_0) Unexecuted instantiation: validation.cpp:auto util::Join<std::__1::vector<int, std::__1::allocator<int>>, char [3], ChainstateManager::ActivateSnapshot(AutoFile&, node::SnapshotMetadata const&, bool)::$_0>(std::__1::vector<int, std::__1::allocator<int>> const&, char const (&) [3], ChainstateManager::ActivateSnapshot(AutoFile&, node::SnapshotMetadata const&, bool)::$_0) |
215 | | |
216 | | template <typename C, typename S> |
217 | | auto Join(const C& container, const S& separator) |
218 | 0 | { |
219 | 0 | return Join(container, separator, [](const auto& i) { return i; });Unexecuted instantiation: auto auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [4]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [4])::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)::operator()<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&) const Unexecuted instantiation: auto auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)::operator()<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&) const Unexecuted instantiation: auto auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [3]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [3])::'lambda'(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)::operator()<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&) const Unexecuted instantiation: auto auto util::Join<std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>, bilingual_str>(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&, bilingual_str const&)::'lambda'(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&)::operator()<bilingual_str>(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&) const |
220 | 0 | } Unexecuted instantiation: auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [4]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [4]) Unexecuted instantiation: auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) Unexecuted instantiation: auto util::Join<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, char [3]>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, char const (&) [3]) Unexecuted instantiation: auto util::Join<std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>, bilingual_str>(std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>> const&, bilingual_str const&) |
221 | | |
222 | | /** |
223 | | * Create an unordered multi-line list of items. |
224 | | */ |
225 | | inline std::string MakeUnorderedList(const std::vector<std::string>& items) |
226 | 0 | { |
227 | 0 | return Join(items, "\n", [](const std::string& item) { return "- " + item; }); |
228 | 0 | } |
229 | | |
230 | | /** |
231 | | * Check if a string does not contain any embedded NUL (\0) characters |
232 | | */ |
233 | | [[nodiscard]] inline bool ContainsNoNUL(std::string_view str) noexcept |
234 | 158k | { |
235 | 17.6M | for (auto c : str) { |
236 | 17.6M | if (c == 0) return false0 ; |
237 | 17.6M | } |
238 | 158k | return true; |
239 | 158k | } |
240 | | |
241 | | /** |
242 | | * Locale-independent version of std::to_string |
243 | | */ |
244 | | template <typename T> |
245 | | std::string ToString(const T& t) |
246 | 14.9k | { |
247 | 14.9k | std::ostringstream oss; |
248 | 14.9k | oss.imbue(std::locale::classic()); |
249 | 14.9k | oss << t; |
250 | 14.9k | return oss.str(); |
251 | 14.9k | } std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> util::ToString<long long>(long long const&) Line | Count | Source | 246 | 14.9k | { | 247 | 14.9k | std::ostringstream oss; | 248 | 14.9k | oss.imbue(std::locale::classic()); | 249 | 14.9k | oss << t; | 250 | 14.9k | return oss.str(); | 251 | 14.9k | } |
Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> util::ToString<unsigned int>(unsigned int const&) Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> util::ToString<unsigned long long>(unsigned long long const&) Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> util::ToString<unsigned long>(unsigned long const&) Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> util::ToString<int>(int const&) |
252 | | |
253 | | /** |
254 | | * Check whether a container begins with the given prefix. |
255 | | */ |
256 | | template <typename T1, size_t PREFIX_LEN> |
257 | | [[nodiscard]] inline bool HasPrefix(const T1& obj, |
258 | | const std::array<uint8_t, PREFIX_LEN>& prefix) |
259 | 0 | { |
260 | 0 | return obj.size() >= PREFIX_LEN && |
261 | 0 | std::equal(std::begin(prefix), std::end(prefix), std::begin(obj)); |
262 | 0 | } Unexecuted instantiation: bool util::HasPrefix<prevector<16u, unsigned char, unsigned int, int>, 6ul>(prevector<16u, unsigned char, unsigned int, int> const&, std::__1::array<unsigned char, 6ul> const&) Unexecuted instantiation: bool util::HasPrefix<prevector<16u, unsigned char, unsigned int, int>, 12ul>(prevector<16u, unsigned char, unsigned int, int> const&, std::__1::array<unsigned char, 12ul> const&) Unexecuted instantiation: bool util::HasPrefix<std::__1::span<unsigned char const, 18446744073709551615ul>, 12ul>(std::__1::span<unsigned char const, 18446744073709551615ul> const&, std::__1::array<unsigned char, 12ul> const&) Unexecuted instantiation: bool util::HasPrefix<std::__1::span<unsigned char const, 18446744073709551615ul>, 6ul>(std::__1::span<unsigned char const, 18446744073709551615ul> const&, std::__1::array<unsigned char, 6ul> const&) Unexecuted instantiation: bool util::HasPrefix<prevector<16u, unsigned char, unsigned int, int>, 2ul>(prevector<16u, unsigned char, unsigned int, int> const&, std::__1::array<unsigned char, 2ul> const&) Unexecuted instantiation: bool util::HasPrefix<prevector<16u, unsigned char, unsigned int, int>, 3ul>(prevector<16u, unsigned char, unsigned int, int> const&, std::__1::array<unsigned char, 3ul> const&) Unexecuted instantiation: bool util::HasPrefix<prevector<16u, unsigned char, unsigned int, int>, 4ul>(prevector<16u, unsigned char, unsigned int, int> const&, std::__1::array<unsigned char, 4ul> const&) Unexecuted instantiation: bool util::HasPrefix<prevector<16u, unsigned char, unsigned int, int>, 8ul>(prevector<16u, unsigned char, unsigned int, int> const&, std::__1::array<unsigned char, 8ul> const&) |
263 | | } // namespace util |
264 | | |
265 | | #endif // BITCOIN_UTIL_STRING_H |