diff options
Diffstat (limited to 'include/cru/base')
-rw-r--r-- | include/cru/base/Bitmask.h | 4 | ||||
-rw-r--r-- | include/cru/base/StringToNumberConverter.h | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/include/cru/base/Bitmask.h b/include/cru/base/Bitmask.h index 9b6b8957..7606f784 100644 --- a/include/cru/base/Bitmask.h +++ b/include/cru/base/Bitmask.h @@ -10,8 +10,10 @@ struct Bitmask final { constexpr Bitmask() : value(0) {} constexpr explicit Bitmask(TUnderlying value) : value(value) {} + // Start from 1. static constexpr Bitmask FromOffset(int offset) { - return Bitmask(static_cast<TUnderlying>(1u << offset)); + if (offset == 0) return {}; + return Bitmask(static_cast<TUnderlying>(1u << (offset - 1))); } constexpr bool Has(Bitmask rhs) const { return (value & rhs.value) != 0; } diff --git a/include/cru/base/StringToNumberConverter.h b/include/cru/base/StringToNumberConverter.h index 051f44d0..64c29971 100644 --- a/include/cru/base/StringToNumberConverter.h +++ b/include/cru/base/StringToNumberConverter.h @@ -14,15 +14,15 @@ using StringToNumberFlag = Bitmask<details::StringToNumberFlagTag>; struct StringToNumberFlags { constexpr static StringToNumberFlag kAllowLeadingSpaces = - StringToNumberFlag::FromOffset(0); - constexpr static StringToNumberFlag kAllowTrailingSpaces = StringToNumberFlag::FromOffset(1); - constexpr static StringToNumberFlag kAllowTrailingJunk = + constexpr static StringToNumberFlag kAllowTrailingSpaces = StringToNumberFlag::FromOffset(2); - constexpr static StringToNumberFlag kAllowLeadingZeroForInteger = + constexpr static StringToNumberFlag kAllowTrailingJunk = StringToNumberFlag::FromOffset(3); - constexpr static StringToNumberFlag kThrowOnError = + constexpr static StringToNumberFlag kAllowLeadingZeroForInteger = StringToNumberFlag::FromOffset(4); + constexpr static StringToNumberFlag kThrowOnError = + StringToNumberFlag::FromOffset(5); }; template <typename TResult> |