From 35ba6a2f719327e2ee3f31d5baa04f0ec5a0a09e Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Tue, 30 Sep 2025 00:16:13 +0800 Subject: Impl input method for xim. --- include/cru/base/Bitmask.h | 4 +++- include/cru/base/StringToNumberConverter.h | 10 +++++----- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'include/cru/base') 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(1u << offset)); + if (offset == 0) return {}; + return Bitmask(static_cast(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; 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 -- cgit v1.2.3