From e4fea22d15faccc6b33d17eded15aba7c89499cc Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Sat, 29 Sep 2018 16:25:02 -0700 Subject: [PATCH] Make char8_t a strongly-typed enum --- include/fmt/format-inl.h | 2 +- include/fmt/format.h | 7 +------ test/format-test.cc | 14 +++++++------- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h index d47334b1..d74d4797 100644 --- a/include/fmt/format-inl.h +++ b/include/fmt/format-inl.h @@ -206,7 +206,7 @@ FMT_FUNC size_t internal::count_code_points(u8string_view s) { const char8_t *data = s.data(); int num_code_points = 0; for (size_t i = 0, size = s.size(); i != size; ++i) { - if ((data[i].value & 0xc0) != 0x80) + if ((data[i] & 0xc0) != 0x80) ++num_code_points; } return num_code_points; diff --git a/include/fmt/format.h b/include/fmt/format.h index 46168cbe..b29eedbf 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -437,12 +437,7 @@ void basic_buffer::append(const U *begin, const U *end) { } // namespace internal // A UTF-8 code unit type. -struct char8_t { - char value; - FMT_CONSTEXPR FMT_EXPLICIT operator bool() const FMT_NOEXCEPT { - return value != 0; - } -}; +enum char8_t: unsigned char {}; // A UTF-8 string view. class u8string_view : public basic_string_view { diff --git a/test/format-test.cc b/test/format-test.cc index ffcab726..7e06e500 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -2407,17 +2407,17 @@ TEST(FormatTest, ConstructU8StringViewFromCString) { fmt::u8string_view s("ab"); EXPECT_EQ(s.size(), 2u); const fmt::char8_t *data = s.data(); - EXPECT_EQ(data[0].value, 'a'); - EXPECT_EQ(data[1].value, 'b'); + EXPECT_EQ(data[0], 'a'); + EXPECT_EQ(data[1], 'b'); } TEST(FormatTest, ConstructU8StringViewFromDataAndSize) { fmt::u8string_view s("foobar", 3); EXPECT_EQ(s.size(), 3u); const fmt::char8_t *data = s.data(); - EXPECT_EQ(data[0].value, 'f'); - EXPECT_EQ(data[1].value, 'o'); - EXPECT_EQ(data[2].value, 'o'); + EXPECT_EQ(data[0], 'f'); + EXPECT_EQ(data[1], 'o'); + EXPECT_EQ(data[2], 'o'); } #if FMT_USE_USER_DEFINED_LITERALS @@ -2426,7 +2426,7 @@ TEST(FormatTest, U8StringViewLiteral) { fmt::u8string_view s = "ab"_u; EXPECT_EQ(s.size(), 2u); const fmt::char8_t *data = s.data(); - EXPECT_EQ(data[0].value, 'a'); - EXPECT_EQ(data[1].value, 'b'); + EXPECT_EQ(data[0], 'a'); + EXPECT_EQ(data[1], 'b'); } #endif