110 constexpr Size() noexcept: m_value(0) {}
117 template<Type::Integral T>
118 constexpr Size(T value)
noexcept: m_value(FromIntegral(value)) {}
124 constexpr Size(
const Size& other)
noexcept =
default;
135 constexpr ~Size() noexcept = default;
142 constexpr
Size& operator=(const
Size& other) noexcept = default;
149 constexpr
Size& operator=(
Size&& other) noexcept = default;
157 template<
Type::Integral T>
158 constexpr
Size& operator=(T value) noexcept {
159 m_value = FromIntegral(value);
167 constexpr operator std::size_t() const noexcept {
168 constexpr auto max =
static_cast<std::uint64_t
>(std::numeric_limits<std::size_t>::max());
169 return static_cast<std::size_t
>(m_value > max ? max : m_value);
177 template<Type::Integral T>
179 constexpr explicit operator T()
const noexcept {
180 constexpr auto max =
static_cast<std::uint64_t
>(std::numeric_limits<T>::max());
181 return static_cast<T
>(m_value > max ? max : m_value);
194 explicit operator Safe::WString() const noexcept;
201 return std::to_string(m_value);
211 return lhs.m_value == rhs.m_value;
218 template<Type::Integral T>
225 template<Type::Integral T>
235 return lhs.m_value <=> rhs.m_value;
242 template<Type::Integral T>
243 friend constexpr std::strong_ordering
operator<=>(
Size lhs, T rhs)
noexcept;
249 template<Type::Integral T>
250 friend constexpr std::strong_ordering
operator<=>(T lhs,
Size rhs)
noexcept;
257 *
this +=
Size(Raw{}, 1);
266 const Size old = *
this;
276 *
this -=
Size(Raw{}, 1);
285 const Size old = *
this;
297 return Size(Raw{}, Add(lhs.m_value, rhs.m_value));
307 return Size(Raw{}, Sub(lhs.m_value, rhs.m_value));
317 return Size(Raw{}, Mul(lhs.m_value, rhs.m_value));
327 return Size(Raw{}, Div(lhs.m_value, rhs.m_value));
337 return Size(Raw{}, Mod(lhs.m_value, rhs.m_value));
346 m_value = Add(m_value, other.m_value);
356 m_value = Sub(m_value, other.m_value);
366 m_value = Mul(m_value, other.m_value);
376 m_value = Div(m_value, other.m_value);
386 m_value = Mod(m_value, other.m_value);
394 template<Type::Integral T>
401 template<Type::Integral T>
408 template<Type::Integral T>
415 template<Type::Integral T>
422 template<Type::Integral T>
429 template<Type::Integral T>
436 template<Type::Integral T>
443 template<Type::Integral T>
450 template<Type::Integral T>
457 template<Type::Integral T>
466 template<Type::Integral T>
468 *
this = *
this + value;
478 template<Type::Integral T>
480 *
this = *
this - value;
490 template<Type::Integral T>
492 *
this = *
this * value;
502 template<Type::Integral T>
504 *
this = *
this / value;
514 template<Type::Integral T>
516 *
this = *
this % value;
521 std::uint64_t m_value;
527 explicit constexpr Raw() noexcept = default;
534 explicit constexpr
Size(Raw,
std::uint64_t value) noexcept: m_value(value) {}
542 template<Type::Integral T>
543 static constexpr std::uint64_t FromIntegral(T value)
noexcept {
544 if constexpr (Type::Signed<T>)
545 assert(value >= T{0});
546 return static_cast<std::uint64_t
>(value);
555 static constexpr std::uint64_t Add(std::uint64_t lhs, std::uint64_t rhs)
noexcept {
556 assert(lhs <= std::numeric_limits<std::uint64_t>::max() - rhs);
566 static constexpr std::uint64_t Sub(std::uint64_t lhs, std::uint64_t rhs)
noexcept {
577 static constexpr std::uint64_t Mul(std::uint64_t lhs, std::uint64_t rhs)
noexcept {
578 assert(rhs == 0 || lhs <= std::numeric_limits<std::uint64_t>::max() / rhs);
588 static constexpr std::uint64_t Div(std::uint64_t lhs, std::uint64_t rhs)
noexcept {
599 static constexpr std::uint64_t Mod(std::uint64_t lhs, std::uint64_t rhs)
noexcept {
611 template<Type::Integral T>
612 static constexpr Size MixAdd(std::uint64_t lhs, T rhs)
noexcept {
613 if constexpr (Type::Signed<T>) {
615 const auto mag =
static_cast<std::uint64_t
>(0) -
static_cast<std::uint64_t
>(rhs);
616 return Size(Raw{}, Sub(lhs, mag));
619 return Size(Raw{}, Add(lhs,
static_cast<std::uint64_t
>(rhs)));
629 template<Type::Integral T>
630 static constexpr Size MixSub(std::uint64_t lhs, T rhs)
noexcept {
631 if constexpr (Type::Signed<T>) {
633 const auto mag =
static_cast<std::uint64_t
>(0) -
static_cast<std::uint64_t
>(rhs);
634 return Size(Raw{}, Add(lhs, mag));
637 return Size(Raw{}, Sub(lhs,
static_cast<std::uint64_t
>(rhs)));
647 template<Type::Integral T>
648 static constexpr Size MixMul(std::uint64_t lhs, T rhs)
noexcept {
649 if constexpr (Type::Signed<T>)
651 return Size(Raw{}, Mul(lhs,
static_cast<std::uint64_t
>(rhs)));
662 template<Type::Integral T>
664 return lhs ==
Size(rhs);
674 template<Type::Integral T>
676 return Size(lhs) == rhs;
686 template<Type::Integral T>
688 return lhs <=>
Size(rhs);
698 template<Type::Integral T>
700 return Size(lhs) <=> rhs;
710 template<Type::Integral T>
712 return Size::MixAdd(lhs.m_value, rhs);
722 template<Type::Integral T>
724 return Size::MixAdd(rhs.m_value, lhs);
734 template<Type::Integral T>
736 return Size::MixSub(lhs.m_value, rhs);
746 template<Type::Integral T>
748 return Size(lhs) - rhs;
758 template<Type::Integral T>
760 return Size::MixMul(lhs.m_value, rhs);
770 template<Type::Integral T>
772 return Size::MixMul(rhs.m_value, lhs);
782 template<Type::Integral T>
784 return lhs /
Size(rhs);
794 template<Type::Integral T>
796 return Size(lhs) / rhs;
806 template<Type::Integral T>
808 return lhs %
Size(rhs);
818 template<Type::Integral T>
820 return Size(lhs) % rhs;
830 stream << static_cast<std::string>(size);
836 extern template STORMBYTE_PUBLIC Size& Size::operator=(
signed char)
noexcept;
837 extern template STORMBYTE_PUBLIC Size& Size::operator=(
unsigned char)
noexcept;
839 extern template STORMBYTE_PUBLIC Size& Size::operator=(
unsigned short)
noexcept;
841 extern template STORMBYTE_PUBLIC Size& Size::operator=(
unsigned int)
noexcept;
843 extern template STORMBYTE_PUBLIC Size& Size::operator=(
unsigned long)
noexcept;
845 extern template STORMBYTE_PUBLIC Size& Size::operator=(
unsigned long long)
noexcept;
852 extern template STORMBYTE_PUBLIC Size& Size::operator+=(
signed char)
noexcept;
853 extern template STORMBYTE_PUBLIC Size& Size::operator+=(
unsigned char)
noexcept;
855 extern template STORMBYTE_PUBLIC Size& Size::operator+=(
unsigned short)
noexcept;
857 extern template STORMBYTE_PUBLIC Size& Size::operator+=(
unsigned int)
noexcept;
859 extern template STORMBYTE_PUBLIC Size& Size::operator+=(
unsigned long)
noexcept;
860 extern template STORMBYTE_PUBLIC Size& Size::operator+=(
long long)
noexcept;
861 extern template STORMBYTE_PUBLIC Size& Size::operator+=(
unsigned long long)
noexcept;
868 extern template STORMBYTE_PUBLIC Size& Size::operator-=(
signed char)
noexcept;
869 extern template STORMBYTE_PUBLIC Size& Size::operator-=(
unsigned char)
noexcept;
871 extern template STORMBYTE_PUBLIC Size& Size::operator-=(
unsigned short)
noexcept;
873 extern template STORMBYTE_PUBLIC Size& Size::operator-=(
unsigned int)
noexcept;
875 extern template STORMBYTE_PUBLIC Size& Size::operator-=(
unsigned long)
noexcept;
876 extern template STORMBYTE_PUBLIC Size& Size::operator-=(
long long)
noexcept;
877 extern template STORMBYTE_PUBLIC Size& Size::operator-=(
unsigned long long)
noexcept;
884 extern template STORMBYTE_PUBLIC Size& Size::operator*=(
signed char)
noexcept;
885 extern template STORMBYTE_PUBLIC Size& Size::operator*=(
unsigned char)
noexcept;
887 extern template STORMBYTE_PUBLIC Size& Size::operator*=(
unsigned short)
noexcept;
889 extern template STORMBYTE_PUBLIC Size& Size::operator*=(
unsigned int)
noexcept;
891 extern template STORMBYTE_PUBLIC Size& Size::operator*=(
unsigned long)
noexcept;
892 extern template STORMBYTE_PUBLIC Size& Size::operator*=(
long long)
noexcept;
893 extern template STORMBYTE_PUBLIC Size& Size::operator*=(
unsigned long long)
noexcept;
900 extern template STORMBYTE_PUBLIC Size& Size::operator/=(
signed char)
noexcept;
901 extern template STORMBYTE_PUBLIC Size& Size::operator/=(
unsigned char)
noexcept;
903 extern template STORMBYTE_PUBLIC Size& Size::operator/=(
unsigned short)
noexcept;
905 extern template STORMBYTE_PUBLIC Size& Size::operator/=(
unsigned int)
noexcept;
907 extern template STORMBYTE_PUBLIC Size& Size::operator/=(
unsigned long)
noexcept;
908 extern template STORMBYTE_PUBLIC Size& Size::operator/=(
long long)
noexcept;
909 extern template STORMBYTE_PUBLIC Size& Size::operator/=(
unsigned long long)
noexcept;
916 extern template STORMBYTE_PUBLIC Size& Size::operator%=(
signed char)
noexcept;
917 extern template STORMBYTE_PUBLIC Size& Size::operator%=(
unsigned char)
noexcept;
919 extern template STORMBYTE_PUBLIC Size& Size::operator%=(
unsigned short)
noexcept;
921 extern template STORMBYTE_PUBLIC Size& Size::operator%=(
unsigned int)
noexcept;
923 extern template STORMBYTE_PUBLIC Size& Size::operator%=(
unsigned long)
noexcept;
924 extern template STORMBYTE_PUBLIC Size& Size::operator%=(
long long)
noexcept;
925 extern template STORMBYTE_PUBLIC Size& Size::operator%=(
unsigned long long)
noexcept;
932 extern template
STORMBYTE_PUBLIC Size::operator
signed char() const noexcept;
933 extern template
STORMBYTE_PUBLIC Size::operator
unsigned char() const noexcept;
935 extern template
STORMBYTE_PUBLIC Size::operator
unsigned short() const noexcept;
937 extern template
STORMBYTE_PUBLIC Size::operator
unsigned int() const noexcept;
946 extern template
STORMBYTE_PUBLIC bool operator==(Size,
signed char) noexcept;
947 extern template
STORMBYTE_PUBLIC bool operator==(Size,
unsigned char) noexcept;
949 extern template
STORMBYTE_PUBLIC bool operator==(Size,
unsigned short) noexcept;
951 extern template
STORMBYTE_PUBLIC bool operator==(Size,
unsigned int) noexcept;
953 extern template
STORMBYTE_PUBLIC bool operator==(Size,
unsigned long) noexcept;
955 extern template
STORMBYTE_PUBLIC bool operator==(Size,
unsigned long long) noexcept;
962 extern template
STORMBYTE_PUBLIC bool operator==(
signed char, Size) noexcept;
963 extern template
STORMBYTE_PUBLIC bool operator==(
unsigned char, Size) noexcept;
965 extern template
STORMBYTE_PUBLIC bool operator==(
unsigned short, Size) noexcept;
967 extern template
STORMBYTE_PUBLIC bool operator==(
unsigned int, Size) noexcept;
969 extern template
STORMBYTE_PUBLIC bool operator==(
unsigned long, Size) noexcept;
971 extern template
STORMBYTE_PUBLIC bool operator==(
unsigned long long, Size) noexcept;
978 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
signed char) noexcept;
979 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
unsigned char) noexcept;
981 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
unsigned short) noexcept;
983 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
unsigned int) noexcept;
985 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
unsigned long) noexcept;
986 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
long long) noexcept;
987 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
unsigned long long) noexcept;
990 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
char16_t) noexcept;
991 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(Size,
char32_t) noexcept;
994 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
signed char, Size) noexcept;
995 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
unsigned char, Size) noexcept;
997 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
unsigned short, Size) noexcept;
999 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
unsigned int, Size) noexcept;
1001 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
unsigned long, Size) noexcept;
1002 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
long long, Size) noexcept;
1003 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
unsigned long long, Size) noexcept;
1004 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
wchar_t, Size) noexcept;
1005 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
char8_t, Size) noexcept;
1006 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
char16_t, Size) noexcept;
1007 extern template
STORMBYTE_PUBLIC std::strong_ordering operator<=>(
char32_t, Size) noexcept;
1010 extern template
STORMBYTE_PUBLIC Size operator+(Size,
signed char) noexcept;
1011 extern template
STORMBYTE_PUBLIC Size operator+(Size,
unsigned char) noexcept;
1013 extern template
STORMBYTE_PUBLIC Size operator+(Size,
unsigned short) noexcept;
1015 extern template
STORMBYTE_PUBLIC Size operator+(Size,
unsigned int) noexcept;
1017 extern template
STORMBYTE_PUBLIC Size operator+(Size,
unsigned long) noexcept;
1019 extern template
STORMBYTE_PUBLIC Size operator+(Size,
unsigned long long) noexcept;
1026 extern template
STORMBYTE_PUBLIC Size operator+(
signed char, Size) noexcept;
1027 extern template
STORMBYTE_PUBLIC Size operator+(
unsigned char, Size) noexcept;
1029 extern template
STORMBYTE_PUBLIC Size operator+(
unsigned short, Size) noexcept;
1031 extern template
STORMBYTE_PUBLIC Size operator+(
unsigned int, Size) noexcept;
1033 extern template
STORMBYTE_PUBLIC Size operator+(
unsigned long, Size) noexcept;
1035 extern template
STORMBYTE_PUBLIC Size operator+(
unsigned long long, Size) noexcept;
1042 extern template
STORMBYTE_PUBLIC Size operator-(Size,
signed char) noexcept;
1043 extern template
STORMBYTE_PUBLIC Size operator-(Size,
unsigned char) noexcept;
1045 extern template
STORMBYTE_PUBLIC Size operator-(Size,
unsigned short) noexcept;
1047 extern template
STORMBYTE_PUBLIC Size operator-(Size,
unsigned int) noexcept;
1049 extern template
STORMBYTE_PUBLIC Size operator-(Size,
unsigned long) noexcept;
1051 extern template
STORMBYTE_PUBLIC Size operator-(Size,
unsigned long long) noexcept;
1058 extern template
STORMBYTE_PUBLIC Size operator-(
signed char, Size) noexcept;
1059 extern template
STORMBYTE_PUBLIC Size operator-(
unsigned char, Size) noexcept;
1061 extern template
STORMBYTE_PUBLIC Size operator-(
unsigned short, Size) noexcept;
1063 extern template
STORMBYTE_PUBLIC Size operator-(
unsigned int, Size) noexcept;
1065 extern template
STORMBYTE_PUBLIC Size operator-(
unsigned long, Size) noexcept;
1067 extern template
STORMBYTE_PUBLIC Size operator-(
unsigned long long, Size) noexcept;
1074 extern template
STORMBYTE_PUBLIC Size operator*(Size,
signed char) noexcept;
1075 extern template
STORMBYTE_PUBLIC Size operator*(Size,
unsigned char) noexcept;
1077 extern template
STORMBYTE_PUBLIC Size operator*(Size,
unsigned short) noexcept;
1079 extern template
STORMBYTE_PUBLIC Size operator*(Size,
unsigned int) noexcept;
1081 extern template
STORMBYTE_PUBLIC Size operator*(Size,
unsigned long) noexcept;
1083 extern template
STORMBYTE_PUBLIC Size operator*(Size,
unsigned long long) noexcept;
1090 extern template
STORMBYTE_PUBLIC Size operator*(
signed char, Size) noexcept;
1091 extern template
STORMBYTE_PUBLIC Size operator*(
unsigned char, Size) noexcept;
1093 extern template
STORMBYTE_PUBLIC Size operator*(
unsigned short, Size) noexcept;
1095 extern template
STORMBYTE_PUBLIC Size operator*(
unsigned int, Size) noexcept;
1097 extern template
STORMBYTE_PUBLIC Size operator*(
unsigned long, Size) noexcept;
1099 extern template
STORMBYTE_PUBLIC Size operator*(
unsigned long long, Size) noexcept;
1106 extern template
STORMBYTE_PUBLIC Size operator/(Size,
signed char) noexcept;
1107 extern template
STORMBYTE_PUBLIC Size operator/(Size,
unsigned char) noexcept;
1109 extern template
STORMBYTE_PUBLIC Size operator/(Size,
unsigned short) noexcept;
1111 extern template
STORMBYTE_PUBLIC Size operator/(Size,
unsigned int) noexcept;
1113 extern template
STORMBYTE_PUBLIC Size operator/(Size,
unsigned long) noexcept;
1115 extern template
STORMBYTE_PUBLIC Size operator/(Size,
unsigned long long) noexcept;
1122 extern template
STORMBYTE_PUBLIC Size operator/(
signed char, Size) noexcept;
1123 extern template
STORMBYTE_PUBLIC Size operator/(
unsigned char, Size) noexcept;
1125 extern template
STORMBYTE_PUBLIC Size operator/(
unsigned short, Size) noexcept;
1127 extern template
STORMBYTE_PUBLIC Size operator/(
unsigned int, Size) noexcept;
1129 extern template
STORMBYTE_PUBLIC Size operator/(
unsigned long, Size) noexcept;
1131 extern template
STORMBYTE_PUBLIC Size operator/(
unsigned long long, Size) noexcept;
1138 extern template
STORMBYTE_PUBLIC Size operator%(Size,
signed char) noexcept;
1139 extern template
STORMBYTE_PUBLIC Size operator%(Size,
unsigned char) noexcept;
1141 extern template
STORMBYTE_PUBLIC Size operator%(Size,
unsigned short) noexcept;
1143 extern template
STORMBYTE_PUBLIC Size operator%(Size,
unsigned int) noexcept;
1145 extern template
STORMBYTE_PUBLIC Size operator%(Size,
unsigned long) noexcept;
1147 extern template
STORMBYTE_PUBLIC Size operator%(Size,
unsigned long long) noexcept;
1154 extern template
STORMBYTE_PUBLIC Size operator%(
signed char, Size) noexcept;
1155 extern template
STORMBYTE_PUBLIC Size operator%(
unsigned char, Size) noexcept;
1157 extern template
STORMBYTE_PUBLIC Size operator%(
unsigned short, Size) noexcept;
1159 extern template
STORMBYTE_PUBLIC Size operator%(
unsigned int, Size) noexcept;
1161 extern template
STORMBYTE_PUBLIC Size operator%(
unsigned long, Size) noexcept;
1163 extern template
STORMBYTE_PUBLIC Size operator%(
unsigned long long, Size) noexcept;
Owned UTF-8 text composed of StormByte::Safe::CString.
Definition string.hxx:97
Count of abstract units (uint64_t storage).
Definition size.hxx:105
constexpr Size & operator/=(Size other) noexcept
Divide by other.
Definition size.hxx:375
friend constexpr Size operator-(Size lhs, Size rhs) noexcept
Difference.
Definition size.hxx:306
friend constexpr Size operator*(Size lhs, Size rhs) noexcept
Product.
Definition size.hxx:316
constexpr Size operator--(int) noexcept
Postfix decrement.
Definition size.hxx:284
constexpr Size & operator-=(T value) noexcept
Subtract an integer.
Definition size.hxx:479
friend constexpr std::strong_ordering operator<=>(Size lhs, Size rhs) noexcept
Numeric order.
Definition size.hxx:234
constexpr Size & operator%=(T value) noexcept
Remainder with an integer.
Definition size.hxx:515
constexpr Size & operator/=(T value) noexcept
Divide by an integer.
Definition size.hxx:503
constexpr Size & operator+=(T value) noexcept
Add an integer.
Definition size.hxx:467
constexpr Size operator++(int) noexcept
Postfix increment.
Definition size.hxx:265
constexpr Size(T value) noexcept
From an integer count.
Definition size.hxx:118
constexpr Size & operator*=(T value) noexcept
Multiply by an integer.
Definition size.hxx:491
constexpr Size(Size &&other) noexcept=default
Move constructor.
constexpr Size & operator++() noexcept
Prefix increment.
Definition size.hxx:256
friend constexpr Size operator/(Size lhs, Size rhs) noexcept
Quotient.
Definition size.hxx:326
constexpr ~Size() noexcept=default
Destructor.
constexpr Size & operator+=(Size other) noexcept
Add other.
Definition size.hxx:345
constexpr Size & operator%=(Size other) noexcept
Remainder with other.
Definition size.hxx:385
constexpr Size(const Size &other) noexcept=default
Copy constructor.
constexpr Size() noexcept
Zero.
Definition size.hxx:110
constexpr Size & operator--() noexcept
Prefix decrement.
Definition size.hxx:275
constexpr Size & operator-=(Size other) noexcept
Subtract other.
Definition size.hxx:355
friend constexpr Size operator%(Size lhs, Size rhs) noexcept
Remainder.
Definition size.hxx:336
friend constexpr bool operator==(Size lhs, Size rhs) noexcept
Numeric equality.
Definition size.hxx:210
constexpr Size & operator*=(Size other) noexcept
Multiply by other.
Definition size.hxx:365
friend constexpr Size operator+(Size lhs, Size rhs) noexcept
Sum.
Definition size.hxx:296
Same type after stripping cv and references from both sides.
Definition relations.hxx:94
Root namespace of the StormByte suite.
bool operator==(std::span< const std::byte > bytes, const BinaryData &data) noexcept
Equality of a span against a sequence.
Definition binary_data.hxx:777
constexpr ByteSize operator*(ByteSize lhs, T rhs) noexcept
Mixed product.
Definition byte_size.hxx:838
std::ostream & operator<<(std::ostream &stream, ByteSize size)
Writes the IEC human-readable length.
Definition byte_size.hxx:884
constexpr ByteSize operator+(ByteSize lhs, T rhs) noexcept
Mixed sum.
Definition byte_size.hxx:790
constexpr ByteSize operator-(ByteSize lhs, T rhs) noexcept
Mixed difference.
Definition byte_size.hxx:814
std::strong_ordering operator<=>(std::span< const std::byte > bytes, const BinaryData &data) noexcept
Three-way comparison of a span against a sequence.
Definition binary_data.hxx:797
constexpr ByteSize operator%(ByteSize lhs, T rhs) noexcept
Mixed remainder.
Definition byte_size.hxx:874
constexpr ByteSize operator/(ByteSize lhs, T rhs) noexcept
Mixed quotient.
Definition byte_size.hxx:862
Octet count. Defined in byte_size.hxx. Forwarded so Type::Numeral can name it.
#define STORMBYTE_PUBLIC
Definition visibility.h:52