Coverage Report

Created: 2025-02-21 14:37

/root/bitcoin/src/util/byte_units.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright (c) 2025-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_BYTE_UNITS_H
6
#define BITCOIN_UTIL_BYTE_UNITS_H
7
8
#include <util/overflow.h>
9
10
#include <stdexcept>
11
12
//! Overflow-safe conversion of MiB to bytes.
13
constexpr size_t operator""_MiB(unsigned long long mebibytes)
14
0
{
15
0
    auto bytes{CheckedLeftShift(mebibytes, 20)};
16
0
    if (!bytes || *bytes > std::numeric_limits<size_t>::max()) {
17
0
        throw std::overflow_error("MiB value too large for size_t byte conversion");
18
0
    }
19
0
    return *bytes;
20
0
}
21
22
#endif // BITCOIN_UTIL_BYTE_UNITS_H