fuzz coverage

Coverage Report

Created: 2025-08-28 15:26

/Users/eugenesiegel/btc/bitcoin/src/util/string.h
Line
Count
Source (jump to first uncovered line)
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:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: addrman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: addrman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: addrman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: asmap.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: asmap_direct.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: autofile.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: banman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: banman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: banman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: bip324.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: bitdeque.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: bitset.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: block.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: block_header.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: block_index.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: blockfilter.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: bloom_filter.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: buffered_file.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: chain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: checkqueue.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: cmpctblock.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: cmpctblock.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: cmpctblock.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: coins_view.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: coinscache_sim.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: connman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: connman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: connman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: crypto.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_aes256.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_aes256cbc.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_chacha20.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_chacha20poly1305.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_diff_fuzz_chacha20.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_hkdf_hmac_sha256_l32.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypto_poly1305.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: cuckoocache.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: deserialize.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: deserialize.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: deserialize.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: feefrac.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: fee_rate.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: feeratediagram.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: fees.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: flatfile.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: float.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: golomb_rice.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: headerssync.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: headerssync.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: http_request.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: http_request.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: i2p.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: i2p.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: i2p.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: integer.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: integer.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: key.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: kitchen_sink.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: load_external_block_file.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: locale.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: merkleblock.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: message.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: miniscript.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: minisketch.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: mini_miner.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: muhash.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: multiplication_overflow.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: net.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: net.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: net.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: net_permissions.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: net_permissions.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: net_permissions.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: netaddress.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: netaddress.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: netaddress.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: netbase_dns_lookup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: netbase_dns_lookup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: netbase_dns_lookup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: node_eviction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: node_eviction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: node_eviction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: p2p_handshake.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: p2p_handshake.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: p2p_handshake.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: p2p_headers_presync.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: p2p_headers_presync.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: p2p_transport_serialization.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: p2p_transport_serialization.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: pcp.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: pcp.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: pcp.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: package_eval.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: parse_hd_keypath.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: partially_downloaded_block.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: policy_estimator.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: policy_estimator_io.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: poolresource.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: pow.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: primitives_transaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: process_message.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: process_message.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: process_message.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: process_messages.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: process_messages.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: process_messages.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: protocol.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: protocol.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: random.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: rbf.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: rolling_bloom_filter.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: rpc.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: script.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: script_descriptor_cache.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: script_format.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: script_interpreter.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: script_ops.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: script_sigcache.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: script_sign.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: scriptnum_ops.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: secp256k1_ec_seckey_import_export_der.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: secp256k1_ecdsa_signature_parse_der_lax.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: signature_checker.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: signet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: socks5.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: socks5.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: socks5.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: span.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: string.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: string.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: strprintf.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: system.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: torcontrol.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: torcontrol.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: transaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txdownloadman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: txdownloadman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj6EEEvPKc
Unexecuted instantiation: txdownloadman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: tx_pool.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txorphan.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: txorphan.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txrequest.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: utxo_snapshot.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: utxo_snapshot.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: utxo_total_supply.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: validation_load_mempool.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: vecdeque.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: versionbits.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: coincontrol.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: coinselection.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: crypter.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: fees.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: fees.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: fees.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: notifications.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: notifications.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: notifications.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: notifications.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: scriptpubkeyman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: scriptpubkeyman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: scriptpubkeyman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: scriptpubkeyman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: spend.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: spend.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: spend.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: spend.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: wallet_bdb_parser.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: mempool.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: fuzz.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: client.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: chain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj6EEEvPKc
Unexecuted instantiation: chain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: chainparams.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: chainparams.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: coins.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: config.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: config.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: config.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: messages.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: messages.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: netif.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: netif.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: pcp.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: pcp.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: settings.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: settings.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: system.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: core_write.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: core_write.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: core_write.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: external_signer.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: external_signer.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: key_io.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: key_io.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: net_types.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: net_types.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: netaddress.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: netbase.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: netbase.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: netbase.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: netbase.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: feerate.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: rawtransaction_util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: request.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: request.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: request.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: descriptor.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: descriptor.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: descriptor.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: signingprovider.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: asmap.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: asmap.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: bip32.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: check.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj7EEEvPKc
Unexecuted instantiation: check.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: exception.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: exception.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: exception.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: fs_helpers.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: fs_helpers.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: moneystr.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: sock.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: sock.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: sock.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: syserror.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: syserror.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: thread.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: time.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj6EEEvPKc
Unexecuted instantiation: time.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: logging.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: logging.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: logging.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: random.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: coinselection.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: coinselection.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: db.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: dump.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: dump.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: dump.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: dump.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: external_signer_scriptpubkeyman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: feebumper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: feebumper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: feebumper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: feebumper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: feebumper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: interfaces.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: interfaces.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: interfaces.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: interfaces.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: load.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: load.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: load.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: load.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: migrate.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: migrate.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: migrate.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: receive.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: receive.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: receive.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: receive.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: addresses.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: addresses.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: addresses.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: addresses.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: backup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: backup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: backup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: backup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: coins.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: coins.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: coins.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: encrypt.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: encrypt.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: encrypt.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: encrypt.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: signmessage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: signmessage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: signmessage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: signmessage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: transactions.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: transactions.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: transactions.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: transactions.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: wallet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: wallet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: wallet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: wallet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: scriptpubkeyman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: spend.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj20EEEvPKc
Unexecuted instantiation: sqlite.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: sqlite.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: sqlite.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: transaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: transaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: transaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: wallet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: wallet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: walletdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: walletdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: walletdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: walletdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: walletdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: mining.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: random.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: setup_common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: setup_common.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txmempool.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txmempool.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: addrdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: addrdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: addrdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: addrdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: addrman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: addrman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: addrman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: banman.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: blockencodings.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: blockencodings.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: blockencodings.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: tx_verify.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: tx_verify.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: dbwrapper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: dbwrapper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: dbwrapper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: dbwrapper.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: flatfile.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: flatfile.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: headerssync.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: headerssync.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: httprpc.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: httprpc.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: httprpc.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: httpserver.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: httpserver.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: httpserver.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: httpserver.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: i2p.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: base.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: base.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: base.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: blockfilterindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: blockfilterindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: blockfilterindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: blockfilterindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: blockfilterindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: coinstatsindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: coinstatsindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: coinstatsindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: txindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txindex.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: init.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: init.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: init.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: init.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: init.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: init.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: coinstats.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: context.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: mapport.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: mapport.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: mapport.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: net.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: net.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: net.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj6EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj8EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj7EEEvPKc
Unexecuted instantiation: net_processing.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: netgroup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: netgroup.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: abort.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: blockmanager_args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: blockstorage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: blockstorage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: blockstorage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: blockstorage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj7EEEvPKc
Unexecuted instantiation: blockstorage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: blockstorage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: chainstate.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: chainstate.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: chainstatemanager_args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: chainstatemanager_args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: coin.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: context.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: eviction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: interface_ui.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: kernel_notifications.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: mempool_args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: mempool_persist.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: mempool_persist.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: mempool_persist.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: mempool_persist.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: mempool_persist_args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: miner.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: miner.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: miner.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: miner.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: peerman_args.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: psbt.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: timeoffsets.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: timeoffsets.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txdownloadman_impl.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: txdownloadman_impl.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj6EEEvPKc
Unexecuted instantiation: txdownloadman_impl.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txdownloadman_impl.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: txreconciliation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: txreconciliation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: noui.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: noui.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: ephemeral_policy.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: fees.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj18EEEvPKc
Unexecuted instantiation: fees.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj7EEEvPKc
Unexecuted instantiation: rbf.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: rbf.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: truc_policy.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: truc_policy.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: rest.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: rest.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: rest.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: blockchain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: blockchain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: blockchain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: blockchain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: blockchain.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: mempool.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: mining.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: node.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: output_script.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: rawtransaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: rawtransaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: server.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: server.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: server.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: server_util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: server_util.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txoutproof.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: sigcache.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: signet.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: torcontrol.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: torcontrol.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: txdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: txdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: txdb.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: txmempool.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: txorphanage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: txorphanage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: txorphanage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: txorphanage.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj0EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj6EEEvPKc
Unexecuted instantiation: validation.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj12EEEvPKc
Unexecuted instantiation: validationinterface.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj4EEEvPKc
Unexecuted instantiation: validationinterface.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: validationinterface.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: clientversion.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj3EEEvPKc
Unexecuted instantiation: clientversion.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj1EEEvPKc
Unexecuted instantiation: clientversion.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj2EEEvPKc
Unexecuted instantiation: block.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj8EEEvPKc
Unexecuted instantiation: transaction.cpp:_ZN4util6detailL24CheckNumFormatSpecifiersILj5EEEvPKc
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
 * Note that this function does not care about braces, so splitting
104
 * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}.
105
 */
106
template <typename T = std::span<const char>>
107
std::vector<T> Split(const std::span<const char>& sp, std::string_view separators)
108
4
{
109
4
    std::vector<T> ret;
110
4
    auto it = sp.begin();
111
4
    auto start = it;
112
26
    while (it != sp.end()) {
113
22
        if (separators.find(*it) != std::string::npos) {
114
0
            ret.emplace_back(start, it);
115
0
            start = it + 1;
116
0
        }
117
22
        ++it;
118
22
    }
119
4
    ret.emplace_back(start, it);
120
4
    return ret;
121
4
}
_ZN4util5SplitINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEENS1_6vectorIT_NS5_IS9_EEEERKNS1_4spanIKcLm18446744073709551615EEENS1_17basic_string_viewIcS4_EE
Line
Count
Source
108
4
{
109
4
    std::vector<T> ret;
110
4
    auto it = sp.begin();
111
4
    auto start = it;
112
26
    while (it != sp.end()) {
113
22
        if (separators.find(*it) != std::string::npos) {
114
0
            ret.emplace_back(start, it);
115
0
            start = it + 1;
116
0
        }
117
22
        ++it;
118
22
    }
119
4
    ret.emplace_back(start, it);
120
4
    return ret;
121
4
}
Unexecuted instantiation: _ZN4util5SplitINSt3__14spanIKcLm18446744073709551615EEEEENS1_6vectorIT_NS1_9allocatorIS6_EEEERKS4_NS1_17basic_string_viewIcNS1_11char_traitsIcEEEE
Unexecuted instantiation: _ZN4util5SplitINSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEEENS1_6vectorIT_NS1_9allocatorIS7_EEEERKNS1_4spanIKcLm18446744073709551615EEES5_
122
123
/** Split a string on every instance of sep, returning a vector.
124
 *
125
 * If sep does not occur in sp, a singleton with the entirety of sp is returned.
126
 *
127
 * Note that this function does not care about braces, so splitting
128
 * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}.
129
 */
130
template <typename T = std::span<const char>>
131
std::vector<T> Split(const std::span<const char>& sp, char sep)
132
4
{
133
4
    return Split<T>(sp, std::string_view{&sep, 1});
134
4
}
_ZN4util5SplitINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEENS1_6vectorIT_NS5_IS9_EEEERKNS1_4spanIKcLm18446744073709551615EEEc
Line
Count
Source
132
4
{
133
4
    return Split<T>(sp, std::string_view{&sep, 1});
134
4
}
Unexecuted instantiation: _ZN4util5SplitINSt3__14spanIKcLm18446744073709551615EEEEENS1_6vectorIT_NS1_9allocatorIS6_EEEERKS4_c
Unexecuted instantiation: _ZN4util5SplitINSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEEENS1_6vectorIT_NS1_9allocatorIS7_EEEERKNS1_4spanIKcLm18446744073709551615EEEc
135
136
[[nodiscard]] inline std::vector<std::string> SplitString(std::string_view str, char sep)
137
4
{
138
4
    return Split<std::string>(str, sep);
139
4
}
140
141
[[nodiscard]] inline std::vector<std::string> SplitString(std::string_view str, std::string_view separators)
142
0
{
143
0
    return Split<std::string>(str, separators);
144
0
}
145
146
[[nodiscard]] inline std::string_view TrimStringView(std::string_view str, std::string_view pattern = " \f\n\r\t\v")
147
14.5k
{
148
14.5k
    std::string::size_type front = str.find_first_not_of(pattern);
149
14.5k
    if (front == std::string::npos) {
150
0
        return {};
151
0
    }
152
14.5k
    std::string::size_type end = str.find_last_not_of(pattern);
153
14.5k
    return str.substr(front, end - front + 1);
154
14.5k
}
155
156
[[nodiscard]] inline std::string TrimString(std::string_view str, std::string_view pattern = " \f\n\r\t\v")
157
0
{
158
0
    return std::string(TrimStringView(str, pattern));
159
0
}
160
161
[[nodiscard]] inline std::string_view RemoveSuffixView(std::string_view str, std::string_view suffix)
162
0
{
163
0
    if (str.ends_with(suffix)) {
164
0
        return str.substr(0, str.size() - suffix.size());
165
0
    }
166
0
    return str;
167
0
}
168
169
[[nodiscard]] inline std::string_view RemovePrefixView(std::string_view str, std::string_view prefix)
170
14.5k
{
171
14.5k
    if (str.starts_with(prefix)) {
172
0
        return str.substr(prefix.size());
173
0
    }
174
14.5k
    return str;
175
14.5k
}
176
177
[[nodiscard]] inline std::string RemovePrefix(std::string_view str, std::string_view prefix)
178
0
{
179
0
    return std::string(RemovePrefixView(str, prefix));
180
0
}
181
182
/**
183
 * Join all container items. Typically used to concatenate strings but accepts
184
 * containers with elements of any type.
185
 *
186
 * @param container The items to join
187
 * @param separator The separator
188
 * @param unary_op  Apply this operator to each item
189
 */
190
template <typename C, typename S, typename UnaryOp>
191
// NOLINTNEXTLINE(misc-no-recursion)
192
auto Join(const C& container, const S& separator, UnaryOp unary_op)
193
51.7k
{
194
51.7k
    decltype(unary_op(*container.begin())) ret;
195
51.7k
    bool first{true};
196
575k
    for (const auto& item : container) {
197
575k
        if (!first) 
ret += separator524k
;
198
575k
        ret += unary_op(item);
199
575k
        first = false;
200
575k
    }
201
51.7k
    return ret;
202
51.7k
}
Unexecuted instantiation: _ZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEA2_cZNS_17MakeUnorderedListERKSA_EUlRKS8_E_EEDaRKT_RKT0_T1_
_ZN4util4JoinINSt3__16vectorI11LogCategoryNS1_9allocatorIS3_EEEEA3_cZNK5BCLog6Logger19LogCategoriesStringEvEUlRKS3_E_EEDaRKT_RKT0_T1_
Line
Count
Source
193
14.5k
{
194
14.5k
    decltype(unary_op(*container.begin())) ret;
195
14.5k
    bool first{true};
196
408k
    for (const auto& item : container) {
197
408k
        if (!first) 
ret += separator393k
;
198
408k
        ret += unary_op(item);
199
408k
        first = false;
200
408k
    }
201
14.5k
    return ret;
202
14.5k
}
Unexecuted instantiation: _ZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEA4_cZNS_4JoinISA_SB_EEDaRKT_RKT0_EUlSF_E_EEDaSF_SI_T1_
Unexecuted instantiation: _ZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEES8_ZNS_4JoinISA_S8_EEDaRKT_RKT0_EUlSE_E_EEDaSE_SH_T1_
_ZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEA3_cZNS_4JoinISA_SB_EEDaRKT_RKT0_EUlSF_E_EEDaSF_SI_T1_
Line
Count
Source
193
29.1k
{
194
29.1k
    decltype(unary_op(*container.begin())) ret;
195
29.1k
    bool first{true};
196
145k
    for (const auto& item : container) {
197
145k
        if (!first) 
ret += separator116k
;
198
145k
        ret += unary_op(item);
199
145k
        first = false;
200
145k
    }
201
29.1k
    return ret;
202
29.1k
}
Unexecuted instantiation: messages.cpp:_ZN4util4JoinINSt3__16vectorINS1_4pairINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE15FeeEstimateModeEENS7_ISB_EEEES9_ZN6common8FeeModesERKS9_E3$_0EEDaRKT_RKT0_T1_
Unexecuted instantiation: util.cpp:_ZN4util4JoinINSt3__16vectorI6RPCArgNS1_9allocatorIS3_EEEEA2_cZNKS3_8ToStringEbE3$_0EEDaRKT_RKT0_T1_
logging.cpp:_ZN4util4JoinINSt3__16vectorIN5BCLog5LevelENS1_9allocatorIS4_EEEEA3_cZNKS3_6Logger15LogLevelsStringEvE3$_0EEDaRKT_RKT0_T1_
Line
Count
Source
193
7.28k
{
194
7.28k
    decltype(unary_op(*container.begin())) ret;
195
7.28k
    bool first{true};
196
21.8k
    for (const auto& item : container) {
197
21.8k
        if (!first) 
ret += separator14.5k
;
198
21.8k
        ret += unary_op(item);
199
21.8k
        first = false;
200
21.8k
    }
201
7.28k
    return ret;
202
7.28k
}
_ZN4util4JoinINSt3__16vectorI13bilingual_strNS1_9allocatorIS3_EEEES3_ZNS_4JoinIS6_S3_EEDaRKT_RKT0_EUlSA_E_EEDaSA_SD_T1_
Line
Count
Source
193
782
{
194
782
    decltype(unary_op(*container.begin())) ret;
195
782
    bool first{true};
196
782
    for (const auto& item : container) {
197
0
        if (!first) ret += separator;
198
0
        ret += unary_op(item);
199
0
        first = false;
200
0
    }
201
782
    return ret;
202
782
}
Unexecuted instantiation: blockfilter.cpp:_ZN4util4JoinINSt3__13mapI15BlockFilterTypeNS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS1_4lessIS3_EENS7_INS1_4pairIKS3_S9_EEEEEEA3_cZ20ListBlockFilterTypesvE3$_0EEDaRKT_RKT0_T1_
Unexecuted instantiation: validation.cpp:_ZN4util4JoinINSt3__16vectorIiNS1_9allocatorIiEEEEA3_cZN17ChainstateManager16ActivateSnapshotER8AutoFileRKN4node16SnapshotMetadataEbE3$_0EEDaRKT_RKT0_T1_
203
204
template <typename C, typename S>
205
auto Join(const C& container, const S& separator)
206
29.9k
{
207
145k
    return Join(container, separator, [](const auto& i) { return i; });
Unexecuted instantiation: _ZZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEA4_cEEDaRKT_RKT0_ENKUlSE_E_clIS8_EEDaSE_
Unexecuted instantiation: _ZZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEES8_EEDaRKT_RKT0_ENKUlSD_E_clIS8_EEDaSD_
_ZZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEA3_cEEDaRKT_RKT0_ENKUlSE_E_clIS8_EEDaSE_
Line
Count
Source
207
145k
    return Join(container, separator, [](const auto& i) { return i; });
Unexecuted instantiation: _ZZN4util4JoinINSt3__16vectorI13bilingual_strNS1_9allocatorIS3_EEEES3_EEDaRKT_RKT0_ENKUlS9_E_clIS3_EEDaS9_
208
29.9k
}
Unexecuted instantiation: _ZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEA4_cEEDaRKT_RKT0_
Unexecuted instantiation: _ZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEES8_EEDaRKT_RKT0_
_ZN4util4JoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEA3_cEEDaRKT_RKT0_
Line
Count
Source
206
29.1k
{
207
29.1k
    return Join(container, separator, [](const auto& i) { return i; });
208
29.1k
}
_ZN4util4JoinINSt3__16vectorI13bilingual_strNS1_9allocatorIS3_EEEES3_EEDaRKT_RKT0_
Line
Count
Source
206
782
{
207
782
    return Join(container, separator, [](const auto& i) { return i; });
208
782
}
209
210
/**
211
 * Create an unordered multi-line list of items.
212
 */
213
inline std::string MakeUnorderedList(const std::vector<std::string>& items)
214
0
{
215
0
    return Join(items, "\n", [](const std::string& item) { return "- " + item; });
216
0
}
217
218
/**
219
 * Check if a string does not contain any embedded NUL (\0) characters
220
 */
221
[[nodiscard]] inline bool ContainsNoNUL(std::string_view str) noexcept
222
0
{
223
0
    for (auto c : str) {
224
0
        if (c == 0) return false;
225
0
    }
226
0
    return true;
227
0
}
228
229
/**
230
 * Locale-independent version of std::to_string
231
 */
232
template <typename T>
233
std::string ToString(const T& t)
234
1
{
235
1
    std::ostringstream oss;
236
1
    oss.imbue(std::locale::classic());
237
1
    oss << t;
238
1
    return oss.str();
239
1
}
Unexecuted instantiation: _ZN4util8ToStringIxEENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKT_
Unexecuted instantiation: _ZN4util8ToStringIjEENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKT_
Unexecuted instantiation: _ZN4util8ToStringIyEENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKT_
Unexecuted instantiation: _ZN4util8ToStringImEENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKT_
_ZN4util8ToStringIiEENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKT_
Line
Count
Source
234
1
{
235
1
    std::ostringstream oss;
236
1
    oss.imbue(std::locale::classic());
237
1
    oss << t;
238
1
    return oss.str();
239
1
}
240
241
/**
242
 * Check whether a container begins with the given prefix.
243
 */
244
template <typename T1, size_t PREFIX_LEN>
245
[[nodiscard]] inline bool HasPrefix(const T1& obj,
246
                                const std::array<uint8_t, PREFIX_LEN>& prefix)
247
295k
{
248
295k
    return obj.size() >= PREFIX_LEN &&
249
295k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
295k
}
_ZN4util9HasPrefixI9prevectorILj16EhjiELm6EEEbRKT_RKNSt3__15arrayIhXT0_EEE
Line
Count
Source
247
27.7k
{
248
27.7k
    return obj.size() >= PREFIX_LEN &&
249
27.7k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
27.7k
}
_ZN4util9HasPrefixI9prevectorILj16EhjiELm12EEEbRKT_RKNSt3__15arrayIhXT0_EEE
Line
Count
Source
247
26.5k
{
248
26.5k
    return obj.size() >= PREFIX_LEN &&
249
26.5k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
26.5k
}
_ZN4util9HasPrefixINSt3__14spanIKhLm18446744073709551615EEELm12EEEbRKT_RKNS1_5arrayIhXT0_EEE
Line
Count
Source
247
20.9k
{
248
20.9k
    return obj.size() >= PREFIX_LEN &&
249
20.9k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
20.9k
}
_ZN4util9HasPrefixINSt3__14spanIKhLm18446744073709551615EEELm6EEEbRKT_RKNS1_5arrayIhXT0_EEE
Line
Count
Source
247
41.9k
{
248
41.9k
    return obj.size() >= PREFIX_LEN &&
249
41.9k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
41.9k
}
_ZN4util9HasPrefixI9prevectorILj16EhjiELm2EEEbRKT_RKNSt3__15arrayIhXT0_EEE
Line
Count
Source
247
21.7k
{
248
21.7k
    return obj.size() >= PREFIX_LEN &&
249
21.7k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
21.7k
}
_ZN4util9HasPrefixI9prevectorILj16EhjiELm3EEEbRKT_RKNSt3__15arrayIhXT0_EEE
Line
Count
Source
247
97.2k
{
248
97.2k
    return obj.size() >= PREFIX_LEN &&
249
97.2k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
97.2k
}
_ZN4util9HasPrefixI9prevectorILj16EhjiELm4EEEbRKT_RKNSt3__15arrayIhXT0_EEE
Line
Count
Source
247
33.9k
{
248
33.9k
    return obj.size() >= PREFIX_LEN &&
249
33.9k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
33.9k
}
_ZN4util9HasPrefixI9prevectorILj16EhjiELm8EEEbRKT_RKNSt3__15arrayIhXT0_EEE
Line
Count
Source
247
25.6k
{
248
25.6k
    return obj.size() >= PREFIX_LEN &&
249
25.6k
           std::equal(std::begin(prefix), std::end(prefix), std::begin(obj));
250
25.6k
}
251
} // namespace util
252
253
#endif // BITCOIN_UTIL_STRING_H