File tree Expand file tree Collapse file tree 4 files changed +25
-15
lines changed
Expand file tree Collapse file tree 4 files changed +25
-15
lines changed Original file line number Diff line number Diff line change @@ -55,7 +55,6 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
5555 #ifdef CTRE_STRING_IS_UTF8
5656 size_t out{0 };
5757 for (size_t i{0 }; i < N; ++i) {
58- if ((i == (N-1 )) && (input[i] == 0 )) break ;
5958 length_value_t info = length_and_value_of_utf8_code_point (input[i]);
6059 switch (info.length ) {
6160 case 6 :
@@ -85,15 +84,13 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
8584 #else
8685 for (size_t i{0 }; i < N; ++i) {
8786 content[i] = static_cast <uint8_t >(input[i]);
88- if ((i == (N-1 )) && (input[i] == 0 )) break ;
8987 real_size++;
9088 }
9189 #endif
9290 #if __cpp_char8_t
9391 } else if constexpr (std::is_same_v<T, char8_t >) {
9492 size_t out{0 };
9593 for (size_t i{0 }; i < N; ++i) {
96- if ((i == (N-1 )) && (input[i] == 0 )) break ;
9794 length_value_t info = length_and_value_of_utf8_code_point (input[i]);
9895 switch (info.length ) {
9996 case 6 :
@@ -135,15 +132,13 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
135132 }
136133 }
137134 } else {
138- if ((i == (N-1 )) && (input[i] == 0 )) break ;
139135 content[out++] = info.value ;
140136 }
141137 }
142138 real_size = out;
143139 } else if constexpr (std::is_same_v<T, wchar_t > || std::is_same_v<T, char32_t >) {
144140 for (size_t i{0 }; i < N; ++i) {
145141 content[i] = static_cast <char32_t >(input[i]);
146- if ((i == (N-1 )) && (input[i] == 0 )) break ;
147142 real_size++;
148143 }
149144 }
Original file line number Diff line number Diff line change @@ -356,7 +356,6 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
356356 #ifdef CTRE_STRING_IS_UTF8
357357 size_t out{0};
358358 for (size_t i{0}; i < N; ++i) {
359- if ((i == (N-1)) && (input[i] == 0)) break;
360359 length_value_t info = length_and_value_of_utf8_code_point(input[i]);
361360 switch (info.length) {
362361 case 6:
@@ -386,15 +385,13 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
386385 #else
387386 for (size_t i{0}; i < N; ++i) {
388387 content[i] = static_cast<uint8_t>(input[i]);
389- if ((i == (N-1)) && (input[i] == 0)) break;
390388 real_size++;
391389 }
392390 #endif
393391 #if __cpp_char8_t
394392 } else if constexpr (std::is_same_v<T, char8_t>) {
395393 size_t out{0};
396394 for (size_t i{0}; i < N; ++i) {
397- if ((i == (N-1)) && (input[i] == 0)) break;
398395 length_value_t info = length_and_value_of_utf8_code_point(input[i]);
399396 switch (info.length) {
400397 case 6:
@@ -436,15 +433,13 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
436433 }
437434 }
438435 } else {
439- if ((i == (N-1)) && (input[i] == 0)) break;
440436 content[out++] = info.value;
441437 }
442438 }
443439 real_size = out;
444440 } else if constexpr (std::is_same_v<T, wchar_t> || std::is_same_v<T, char32_t>) {
445441 for (size_t i{0}; i < N; ++i) {
446442 content[i] = static_cast<char32_t>(input[i]);
447- if ((i == (N-1)) && (input[i] == 0)) break;
448443 real_size++;
449444 }
450445 }
Original file line number Diff line number Diff line change @@ -353,7 +353,6 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
353353 #ifdef CTRE_STRING_IS_UTF8
354354 size_t out{0 };
355355 for (size_t i{0 }; i < N; ++i) {
356- if ((i == (N-1 )) && (input[i] == 0 )) break ;
357356 length_value_t info = length_and_value_of_utf8_code_point (input[i]);
358357 switch (info.length ) {
359358 case 6 :
@@ -383,15 +382,13 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
383382 #else
384383 for (size_t i{0 }; i < N; ++i) {
385384 content[i] = static_cast <uint8_t >(input[i]);
386- if ((i == (N-1 )) && (input[i] == 0 )) break ;
387385 real_size++;
388386 }
389387 #endif
390388 #if __cpp_char8_t
391389 } else if constexpr (std::is_same_v<T, char8_t >) {
392390 size_t out{0 };
393391 for (size_t i{0 }; i < N; ++i) {
394- if ((i == (N-1 )) && (input[i] == 0 )) break ;
395392 length_value_t info = length_and_value_of_utf8_code_point (input[i]);
396393 switch (info.length ) {
397394 case 6 :
@@ -433,15 +430,13 @@ CTLL_EXPORT template <size_t N> struct fixed_string {
433430 }
434431 }
435432 } else {
436- if ((i == (N-1 )) && (input[i] == 0 )) break ;
437433 content[out++] = info.value ;
438434 }
439435 }
440436 real_size = out;
441437 } else if constexpr (std::is_same_v<T, wchar_t > || std::is_same_v<T, char32_t >) {
442438 for (size_t i{0 }; i < N; ++i) {
443439 content[i] = static_cast <char32_t >(input[i]);
444- if ((i == (N-1 )) && (input[i] == 0 )) break ;
445440 real_size++;
446441 }
447442 }
Original file line number Diff line number Diff line change 1+ #include < ctll/fixed_string.hpp>
2+
3+ template <ctll::fixed_string Str> struct helper {
4+ consteval bool correct () const noexcept {
5+ return Str.correct ();
6+ }
7+ consteval size_t size () const noexcept {
8+ return Str.size ();
9+ }
10+ };
11+
12+ constexpr auto a = helper<" \0\0 " >{};
13+
14+ static_assert (a.correct());
15+ static_assert (a.size() == 2u );
16+
17+ constexpr auto b = helper<" \0 " >{};
18+
19+ static_assert (b.correct());
20+ static_assert (b.size() == 1u );
21+
22+ constexpr auto c = helper<" " >{};
23+
24+ static_assert (c.correct());
25+ static_assert (c.size() == 0u );
You can’t perform that action at this time.
0 commit comments