/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 |