Bitcoin Core
28.99.0
P2P Digital Currency
src
util
byte_units.h
Go to the documentation of this file.
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
13
constexpr
size_t
operator
""
_MiB(
unsigned
long
long
mebibytes)
14
{
15
auto
bytes{
CheckedLeftShift
(mebibytes, 20)};
16
if
(!bytes || *bytes > std::numeric_limits<size_t>::max()) {
17
throw
std::overflow_error(
"MiB value too large for size_t byte conversion"
);
18
}
19
return
*bytes;
20
}
21
22
#endif
// BITCOIN_UTIL_BYTE_UNITS_H
overflow.h
CheckedLeftShift
constexpr std::optional< T > CheckedLeftShift(T input, unsigned shift) noexcept
Left bit shift with overflow checking.
Definition:
overflow.h:59
Generated on Fri Jan 17 2025 20:00:14 for Bitcoin Core by
1.9.4