Bitcoin Core Fuzz Coverage Report

Coverage Report

Created: 2026-03-24 13:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/root/bitcoin/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 <optional>
15
#include <sstream>
16
#include <string>
17
#include <string_view>
18
#include <vector>
19
20
namespace util {
21
namespace detail {
22
template <unsigned num_params>
23
constexpr static void CheckNumFormatSpecifiers(const char* str)
24
0
{
25
0
    unsigned count_normal{0}; // Number of "normal" specifiers, like %s
26
0
    unsigned count_pos{0};    // Max number in positional specifier, like %8$s
27
0
    for (auto it{str}; *it != '\0'; ++it) {
28
0
        if (*it != '%' || *++it == '%') continue; // Skip escaped %%
29
0
30
0
        auto add_arg = [&] {
31
0
            unsigned maybe_num{0};
32
0
            while ('0' <= *it && *it <= '9') {
33
0
                maybe_num *= 10;
34
0
                maybe_num += *it - '0';
35
0
                ++it;
36
0
            }
37
0
38
0
            if (*it == '$') {
39
0
                ++it;
40
0
                // Positional specifier, like %8$s
41
0
                if (maybe_num == 0) throw "Positional format specifier must have position of at least 1";
42
0
                count_pos = std::max(count_pos, maybe_num);
43
0
            } else {
44
0
                // Non-positional specifier, like %s
45
0
                ++count_normal;
46
0
            }
47
0
        };
48
0
49
0
        // Increase argument count and consume positional specifier, if present.
50
0
        add_arg();
51
0
52
0
        // Consume flags.
53
0
        while (*it == '#' || *it == '0' || *it == '-' || *it == ' ' || *it == '+') ++it;
54
0
55
0
        auto parse_size = [&] {
56
0
            if (*it == '*') {
57
0
                ++it;
58
0
                add_arg();
59
0
            } else {
60
0
                while ('0' <= *it && *it <= '9') ++it;
61
0
            }
62
0
        };
63
0
64
0
        // Consume dynamic or static width value.
65
0
        parse_size();
66
0
67
0
        // Consume dynamic or static precision value.
68
0
        if (*it == '.') {
69
0
            ++it;
70
0
            parse_size();
71
0
        }
72
0
73
0
        if (*it == '\0') throw "Format specifier incorrectly terminated by end of string";
74
0
75
0
        // Length and type in "[flags][width][.precision][length]type"
76
0
        // is not checked. Parsing continues with the next '%'.
77
0
    }
78
0
    if (count_normal && count_pos) throw "Format specifiers must be all positional or all non-positional!";
79
0
    unsigned count{count_normal | count_pos};
80
0
    if (num_params != count) throw "Format specifier count must match the argument count!";
81
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: block_index.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: block_index_tree.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: block_index_tree.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: coins_view.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: cuckoocache.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: load_external_block_file.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: mini_miner.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: package_eval.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: partially_downloaded_block.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: policy_estimator.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: policy_estimator_io.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: policy_estimator_io.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: rbf.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: rpc.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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_sigcache.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: signet.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: system.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: threadpool.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: 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: tx_pool.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: utxo_total_supply.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: validation_load_mempool.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: validation_load_mempool.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: coincontrol.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: coinselection.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: coinselection.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: crypter.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: crypter.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: fees.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: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: 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: wallet_bdb_parser.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: fuzz.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(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: messages.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: messages.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: core_io.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: core_io.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*)
Unexecuted instantiation: core_io.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: 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<1u>(char const*)
Unexecuted instantiation: netbase.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(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: policy.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: policy.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: policy.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(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: 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: 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: 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: time.cpp:void util::detail::CheckNumFormatSpecifiers<7u>(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: 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: coinselection.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(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: 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: scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*)
Unexecuted instantiation: spend.cpp:void util::detail::CheckNumFormatSpecifiers<20u>(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<1u>(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<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: db.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: db.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: external_signer_scriptpubkeyman.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(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: 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: 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: 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: feebumper.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: feebumper.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(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: 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: 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<0u>(char const*)
Unexecuted instantiation: httpserver.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*)
Unexecuted instantiation: httpserver.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(char const*)
Unexecuted instantiation: httpserver.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*)
Unexecuted instantiation: i2p.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<4u>(char const*)
Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<5u>(char const*)
Unexecuted instantiation: net.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(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<3u>(char const*)
Unexecuted instantiation: net_processing.cpp:void util::detail::CheckNumFormatSpecifiers<4u>(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: 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: 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<3u>(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: 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: 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: private_broadcast.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: private_broadcast.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: rest.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<3u>(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<2u>(char const*)
Unexecuted instantiation: node.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(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<2u>(char const*)
Unexecuted instantiation: txdb.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*)
Unexecuted instantiation: txdb.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*)
Unexecuted instantiation: txmempool.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(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<1u>(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: 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: 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<3u>(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: coinstatsindex.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: coinstatsindex.cpp:void util::detail::CheckNumFormatSpecifiers<3u>(char const*)
Unexecuted instantiation: coinstatsindex.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(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: txospenderindex.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: txospenderindex.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: abort.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: abort.cpp:void util::detail::CheckNumFormatSpecifiers<0u>(char const*)
Unexecuted instantiation: coin.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(char const*)
Unexecuted instantiation: ephemeral_policy.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: netif.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: netif.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(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: net_types.cpp:void util::detail::CheckNumFormatSpecifiers<2u>(char const*)
Unexecuted instantiation: net_types.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(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: batchpriority.cpp:void util::detail::CheckNumFormatSpecifiers<1u>(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*)
82
} // namespace detail
83
84
/**
85
 * @brief A wrapper for a compile-time partially validated format string
86
 *
87
 * This struct can be used to enforce partial compile-time validation of format
88
 * strings, to reduce the likelihood of tinyformat throwing exceptions at
89
 * run-time. Validation is partial to try and prevent the most common errors
90
 * while avoiding re-implementing the entire parsing logic.
91
 */
92
template <unsigned num_params>
93
struct ConstevalFormatString {
94
    const char* const fmt;
95
    consteval ConstevalFormatString(const char* str) : fmt{str} { detail::CheckNumFormatSpecifiers<num_params>(fmt); }
96
};
97
98
void ReplaceAll(std::string& in_out, const std::string& search, const std::string& substitute);
99
100
/** Split a string on any char found in separators, returning a vector.
101
 *
102
 * If sep does not occur in sp, a singleton with the entirety of sp is returned.
103
 *
104
 * @param[in] include_sep Whether to include the separator at the end of the left side of the splits.
105
 *
106
 * Note that this function does not care about braces, so splitting
107
 * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}.
108
 *
109
 * If include_sep == true, splitting "foo(bar(1),2),3) on ','
110
 * will return:
111
 *  - foo(bar(1),
112
 *  - 2),
113
 *  - 3)
114
 */
115
template <typename T = std::span<const char>>
116
std::vector<T> Split(const std::span<const char>& sp, std::string_view separators, bool include_sep = false)
117
49.2k
{
118
49.2k
    std::vector<T> ret;
119
49.2k
    auto it = sp.begin();
120
49.2k
    auto start = it;
121
1.16M
    while (it != sp.end()) {
122
1.11M
        if (separators.find(*it) != std::string::npos) {
123
300k
            if (include_sep) {
124
0
                ret.emplace_back(start, it + 1);
125
300k
            } else {
126
300k
                ret.emplace_back(start, it);
127
300k
            }
128
300k
            start = it + 1;
129
300k
        }
130
1.11M
        ++it;
131
1.11M
    }
132
49.2k
    ret.emplace_back(start, it);
133
49.2k
    return ret;
134
49.2k
}
Unexecuted instantiation: std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > util::Split<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::span<char const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, bool)
Unexecuted instantiation: std::vector<std::span<char const, 18446744073709551615ul>, std::allocator<std::span<char const, 18446744073709551615ul> > > util::Split<std::span<char const, 18446744073709551615ul> >(std::span<char const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, bool)
std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > util::Split<std::basic_string_view<char, std::char_traits<char> > >(std::span<char const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, bool)
Line
Count
Source
117
49.2k
{
118
49.2k
    std::vector<T> ret;
119
49.2k
    auto it = sp.begin();
120
49.2k
    auto start = it;
121
1.16M
    while (it != sp.end()) {
122
1.11M
        if (separators.find(*it) != std::string::npos) {
123
300k
            if (include_sep) {
124
0
                ret.emplace_back(start, it + 1);
125
300k
            } else {
126
300k
                ret.emplace_back(start, it);
127
300k
            }
128
300k
            start = it + 1;
129
300k
        }
130
1.11M
        ++it;
131
1.11M
    }
132
49.2k
    ret.emplace_back(start, it);
133
49.2k
    return ret;
134
49.2k
}
135
136
/** Split a string on every instance of sep, returning a vector.
137
 *
138
 * If sep does not occur in sp, a singleton with the entirety of sp is returned.
139
 *
140
 * Note that this function does not care about braces, so splitting
141
 * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}.
142
 */
143
template <typename T = std::span<const char>>
144
std::vector<T> Split(const std::span<const char>& sp, char sep, bool include_sep = false)
145
0
{
146
0
    return Split<T>(sp, std::string_view{&sep, 1}, include_sep);
147
0
}
Unexecuted instantiation: std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > util::Split<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::span<char const, 18446744073709551615ul> const&, char, bool)
Unexecuted instantiation: std::vector<std::span<char const, 18446744073709551615ul>, std::allocator<std::span<char const, 18446744073709551615ul> > > util::Split<std::span<char const, 18446744073709551615ul> >(std::span<char const, 18446744073709551615ul> const&, char, bool)
Unexecuted instantiation: std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > util::Split<std::basic_string_view<char, std::char_traits<char> > >(std::span<char const, 18446744073709551615ul> const&, char, bool)
148
149
[[nodiscard]] inline std::vector<std::string> SplitString(std::string_view str, char sep)
150
0
{
151
0
    return Split<std::string>(str, sep);
152
0
}
153
154
[[nodiscard]] inline std::vector<std::string> SplitString(std::string_view str, std::string_view separators)
155
0
{
156
0
    return Split<std::string>(str, separators);
157
0
}
158
159
[[nodiscard]] inline std::string_view TrimStringView(std::string_view str, std::string_view pattern = " \f\n\r\t\v")
160
4.25M
{
161
4.25M
    std::string::size_type front = str.find_first_not_of(pattern);
162
4.25M
    if (front == std::string::npos) {
163
531k
        return {};
164
531k
    }
165
3.72M
    std::string::size_type end = str.find_last_not_of(pattern);
166
3.72M
    return str.substr(front, end - front + 1);
167
4.25M
}
168
169
[[nodiscard]] inline std::string TrimString(std::string_view str, std::string_view pattern = " \f\n\r\t\v")
170
2.81M
{
171
2.81M
    return std::string(TrimStringView(str, pattern));
172
2.81M
}
173
174
[[nodiscard]] inline std::string_view RemoveSuffixView(std::string_view str, std::string_view suffix)
175
0
{
176
0
    if (str.ends_with(suffix)) {
177
0
        return str.substr(0, str.size() - suffix.size());
178
0
    }
179
0
    return str;
180
0
}
181
182
[[nodiscard]] inline std::string_view RemovePrefixView(std::string_view str, std::string_view prefix)
183
0
{
184
0
    if (str.starts_with(prefix)) {
185
0
        return str.substr(prefix.size());
186
0
    }
187
0
    return str;
188
0
}
189
190
[[nodiscard]] inline std::string RemovePrefix(std::string_view str, std::string_view prefix)
191
0
{
192
0
    return std::string(RemovePrefixView(str, prefix));
193
0
}
194
195
/**
196
 * Join all container items. Typically used to concatenate strings but accepts
197
 * containers with elements of any type.
198
 *
199
 * @param container The items to join
200
 * @param separator The separator
201
 * @param unary_op  Apply this operator to each item
202
 */
203
template <typename C, typename S, typename UnaryOp>
204
// NOLINTNEXTLINE(misc-no-recursion)
205
auto Join(const C& container, const S& separator, UnaryOp unary_op)
206
0
{
207
0
    decltype(unary_op(*container.begin())) ret;
208
0
    bool first{true};
209
0
    for (const auto& item : container) {
210
0
        if (!first) ret += separator;
211
0
        ret += unary_op(item);
212
0
        first = false;
213
0
    }
214
0
    return ret;
215
0
}
Unexecuted instantiation: auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [2], util::MakeUnorderedList(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)::'lambda'(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [2], util::MakeUnorderedList(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)::'lambda'(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&))
Unexecuted instantiation: auto util::Join<std::vector<LogCategory, std::allocator<LogCategory> >, char [3], BCLog::Logger::LogCategoriesString[abi:cxx11]() const::'lambda'(LogCategory const&)>(std::vector<LogCategory, std::allocator<LogCategory> > const&, char const (&) [3], BCLog::Logger::LogCategoriesString[abi:cxx11]() const::'lambda'(LogCategory const&))
Unexecuted instantiation: auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [4], auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [4]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [4])::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [4], auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [4]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [4])::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&))
Unexecuted instantiation: auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&))
Unexecuted instantiation: auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [3], auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [3]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [3])::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [3], auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [3]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [3])::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&))
Unexecuted instantiation: messages.cpp:auto util::Join<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, FeeEstimateMode>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, FeeEstimateMode> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, common::FeeModes(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::$_0>(std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, FeeEstimateMode>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, FeeEstimateMode> > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, common::FeeModes(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::$_0)
Unexecuted instantiation: outputtype.cpp:auto util::Join<std::array<OutputType, 4ul>, char [3], FormatAllOutputTypes[abi:cxx11]()::$_0>(std::array<OutputType, 4ul> const&, char const (&) [3], FormatAllOutputTypes[abi:cxx11]()::$_0)
Unexecuted instantiation: util.cpp:auto util::Join<std::vector<RPCArg, std::allocator<RPCArg> >, char [2], RPCArg::ToString[abi:cxx11](bool) const::$_0>(std::vector<RPCArg, std::allocator<RPCArg> > const&, char const (&) [2], RPCArg::ToString[abi:cxx11](bool) const::$_0)
Unexecuted instantiation: logging.cpp:auto util::Join<std::vector<util::log::Level, std::allocator<util::log::Level> >, char [3], BCLog::Logger::LogLevelsString[abi:cxx11]() const::$_0>(std::vector<util::log::Level, std::allocator<util::log::Level> > const&, char const (&) [3], BCLog::Logger::LogLevelsString[abi:cxx11]() const::$_0)
Unexecuted instantiation: auto util::Join<std::vector<bilingual_str, std::allocator<bilingual_str> >, bilingual_str, auto util::Join<std::vector<bilingual_str, std::allocator<bilingual_str> >, bilingual_str>(std::vector<bilingual_str, std::allocator<bilingual_str> > const&, bilingual_str const&)::'lambda'(std::vector<bilingual_str, std::allocator<bilingual_str> > const&)>(std::vector<bilingual_str, std::allocator<bilingual_str> > const&, bilingual_str const&, auto util::Join<std::vector<bilingual_str, std::allocator<bilingual_str> >, bilingual_str>(std::vector<bilingual_str, std::allocator<bilingual_str> > const&, bilingual_str const&)::'lambda'(std::vector<bilingual_str, std::allocator<bilingual_str> > const&))
Unexecuted instantiation: blockfilter.cpp:auto util::Join<std::map<BlockFilterType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<BlockFilterType>, std::allocator<std::pair<BlockFilterType const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char [3], ListBlockFilterTypes()::$_0>(std::map<BlockFilterType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<BlockFilterType>, std::allocator<std::pair<BlockFilterType const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, char const (&) [3], ListBlockFilterTypes()::$_0)
Unexecuted instantiation: validation.cpp:auto util::Join<std::vector<int, std::allocator<int> >, char [3], ChainstateManager::ActivateSnapshot(AutoFile&, node::SnapshotMetadata const&, bool)::$_0>(std::vector<int, std::allocator<int> > const&, char const (&) [3], ChainstateManager::ActivateSnapshot(AutoFile&, node::SnapshotMetadata const&, bool)::$_0)
216
217
template <typename C, typename S>
218
auto Join(const C& container, const S& separator)
219
0
{
220
0
    return Join(container, separator, [](const auto& i) { return i; });
Unexecuted instantiation: auto auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [4]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [4])::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)::operator()<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) const
Unexecuted instantiation: auto auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)::operator()<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) const
Unexecuted instantiation: auto auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [3]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [3])::'lambda'(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)::operator()<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) const
Unexecuted instantiation: auto auto util::Join<std::vector<bilingual_str, std::allocator<bilingual_str> >, bilingual_str>(std::vector<bilingual_str, std::allocator<bilingual_str> > const&, bilingual_str const&)::'lambda'(std::vector<bilingual_str, std::allocator<bilingual_str> > const&)::operator()<bilingual_str>(std::vector<bilingual_str, std::allocator<bilingual_str> > const&) const
221
0
}
Unexecuted instantiation: auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [4]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [4])
Unexecuted instantiation: auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
Unexecuted instantiation: auto util::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char [3]>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const (&) [3])
Unexecuted instantiation: auto util::Join<std::vector<bilingual_str, std::allocator<bilingual_str> >, bilingual_str>(std::vector<bilingual_str, std::allocator<bilingual_str> > const&, bilingual_str const&)
222
223
/**
224
 * Create an unordered multi-line list of items.
225
 */
226
inline std::string MakeUnorderedList(const std::vector<std::string>& items)
227
0
{
228
0
    return Join(items, "\n", [](const std::string& item) { return "- " + item; });
229
0
}
230
231
/**
232
 * Check if a string does not contain any embedded NUL (\0) characters
233
 */
234
[[nodiscard]] inline bool ContainsNoNUL(std::string_view str) noexcept
235
0
{
236
0
    for (auto c : str) {
237
0
        if (c == 0) return false;
238
0
    }
239
0
    return true;
240
0
}
241
242
/**
243
 * Locale-independent version of std::to_string
244
 */
245
template <typename T>
246
std::string ToString(const T& t)
247
0
{
248
0
    std::ostringstream oss;
249
0
    oss.imbue(std::locale::classic());
250
0
    oss << t;
251
0
    return oss.str();
252
0
}
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > util::ToString<long>(long const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > util::ToString<unsigned int>(unsigned int const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > util::ToString<unsigned long>(unsigned long const&)
Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > util::ToString<int>(int const&)
253
254
/**
255
 * Check whether a container begins with the given prefix.
256
 */
257
template <typename T1, size_t PREFIX_LEN>
258
[[nodiscard]] inline bool HasPrefix(const T1& obj,
259
                                const std::array<uint8_t, PREFIX_LEN>& prefix)
260
0
{
261
0
    return obj.size() >= PREFIX_LEN &&
262
0
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
263
0
}
Unexecuted instantiation: bool util::HasPrefix<prevector<16u, unsigned char, unsigned int, int>, 6ul>(prevector<16u, unsigned char, unsigned int, int> const&, std::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::array<unsigned char, 12ul> const&)
Unexecuted instantiation: bool util::HasPrefix<std::span<unsigned char const, 18446744073709551615ul>, 12ul>(std::span<unsigned char const, 18446744073709551615ul> const&, std::array<unsigned char, 12ul> const&)
Unexecuted instantiation: bool util::HasPrefix<std::span<unsigned char const, 18446744073709551615ul>, 6ul>(std::span<unsigned char const, 18446744073709551615ul> const&, std::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::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::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::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::array<unsigned char, 8ul> const&)
264
265
struct LineReader {
266
    const std::span<const std::byte>::iterator start;
267
    const std::span<const std::byte>::iterator end;
268
    const size_t max_line_length;
269
    std::span<const std::byte>::iterator it;
270
271
    explicit LineReader(std::span<const std::byte> buffer, size_t max_line_length);
272
273
    /**
274
     * Returns a string from current iterator position up to (but not including) next \n
275
     * and advances iterator to the character following the \n on success.
276
     * Will not return a line longer than max_line_length.
277
     * @returns the next string from the buffer.
278
     *          std::nullopt if end of buffer is reached without finding a \n.
279
     * @throws a std::runtime_error if max_line_length + 1 bytes are read without finding \n.
280
     */
281
    std::optional<std::string> ReadLine();
282
283
    /**
284
     * Returns string from current iterator position of specified length
285
     * if possible and advances iterator on success.
286
     * May exceed max_line_length but will not read past end of buffer.
287
     * @param[in]   len     The number of bytes to read from the buffer
288
     * @returns a string of the expected length.
289
     * @throws a std::runtime_error if there is not enough data in the buffer.
290
     */
291
    std::string ReadLength(size_t len);
292
293
    /**
294
     * Returns remaining size of bytes in buffer
295
     */
296
    size_t Remaining() const;
297
298
    /**
299
     * Returns number of bytes already read from buffer
300
     */
301
    size_t Consumed() const;
302
};
303
} // namespace util
304
305
#endif // BITCOIN_UTIL_STRING_H