Skip to content

Commit 36ef765

Browse files
committed
🛠️ Prevent ambiguity from overloads being added to function calls
1 parent 3043021 commit 36ef765

2 files changed

Lines changed: 35 additions & 21 deletions

File tree

CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,14 @@ target_link_libraries(ztd.text
190190
ztd::static_containers
191191
ztd::platform
192192
ztd::cuneicode)
193+
target_compile_definitions(ztd.idk
194+
PRIVATE
195+
ZTD_TEXT_BUILD=1
196+
_GNU_SOURCE=1
197+
PUBLIC
198+
$<$<STREQUAL:$<TARGET_PROPERTY:ztd.text,TYPE>,SHARED_LIBRARY>:ZTD_TEXT_DLL=1>
199+
${CMAKE_DL_LIBS}
200+
)
193201
install(DIRECTORY include/
194202
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
195203

benchmarks/include/ztd/text/benchmarks/fast_transcode.ztd.text.hpp

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,21 @@
5555
= ztd::text::transcode_result<decltype(input), decltype(output), FromState, ToState, UPivot>; \
5656
if constexpr (ztd::text::is_ignorable_error_handler_v<UFromErrorHandler> /* cf */ \
5757
&& ztd::text::is_ignorable_error_handler_v<UToErrorHandler>) { \
58-
const std::size_t written_chars = (ztd::endian::native == ztd::endian::big \
59-
? simdutf::convert_valid_utf##FROM_N##FROM_BIG_SUFFIX##_to_utf##TO_N##TO_BIG_SUFFIX \
60-
: simdutf::convert_valid_utf##FROM_N##FROM_LIL_SUFFIX##_to_utf##TO_N##TO_LIL_SUFFIX)( \
61-
(const from_char_t*)input.data(), input.size(), (to_char_t*)output.begin()); \
58+
const std::size_t written_chars = ztd::endian::native == ztd::endian::big \
59+
? simdutf::convert_valid_utf##FROM_N##FROM_BIG_SUFFIX##_to_utf##TO_N##TO_BIG_SUFFIX( \
60+
(const from_char_t*)input.data(), input.size(), (to_char_t*)output.begin()) \
61+
: simdutf::convert_valid_utf##FROM_N##FROM_LIL_SUFFIX##_to_utf##TO_N##TO_LIL_SUFFIX( \
62+
(const from_char_t*)input.data(), input.size(), (to_char_t*)output.begin()); \
6263
return TranscodeResult(input.subspan(input.size()), \
6364
ztd::ranges::unbounded_view(output.begin() + written_chars), from_state, to_state, \
6465
ztd::text::encoding_error::ok, 0, std::forward<Pivot>(pivot), ztd::text::encoding_error::ok, 0); \
6566
} \
6667
else { \
67-
const simdutf::result res = (ztd::endian::native == ztd::endian::big \
68-
? simdutf::convert_utf##FROM_N##FROM_BIG_SUFFIX##_to_utf##TO_N##TO_BIG_SUFFIX##_with_errors \
69-
: simdutf::convert_utf##FROM_N##FROM_LIL_SUFFIX##_to_utf##TO_N##TO_LIL_SUFFIX##_with_errors)( \
70-
(const from_char_t*)input.data(), input.size(), (to_char_t*)output.begin()); \
68+
const simdutf::result res = ztd::endian::native == ztd::endian::big \
69+
? simdutf::convert_utf##FROM_N##FROM_BIG_SUFFIX##_to_utf##TO_N##TO_BIG_SUFFIX##_with_errors( \
70+
(const from_char_t*)input.data(), input.size(), (to_char_t*)output.begin()) \
71+
: simdutf::convert_utf##FROM_N##FROM_LIL_SUFFIX##_to_utf##TO_N##TO_LIL_SUFFIX##_with_errors( \
72+
(const from_char_t*)input.data(), input.size(), (to_char_t*)output.begin()); \
7173
if (res.error == simdutf::error_code::SUCCESS) { \
7274
return TranscodeResult(input.subspan(input.size()), \
7375
ztd::ranges::unbounded_view(output.begin() + res.count), from_state, to_state, \
@@ -99,10 +101,11 @@
99101
= ztd::text::transcode_result<decltype(input), decltype(output), FromState, ToState, UPivot>; \
100102
if constexpr (!ztd::text::is_ignorable_error_handler_v<UFromErrorHandler> /* cf */ \
101103
|| !ztd::text::is_ignorable_error_handler_v<UToErrorHandler>) { \
102-
const simdutf::result validate_res = (ztd::endian::native == ztd::endian::big \
103-
? simdutf::validate_utf##FROM_N##FROM_BIG_SUFFIX##_with_errors \
104-
: simdutf::validate_utf##FROM_N##FROM_LIL_SUFFIX##_with_errors)( \
105-
reinterpret_cast<const from_char_t*>(input.data()), input.size()); \
104+
const simdutf::result validate_res = ztd::endian::native == ztd::endian::big \
105+
? simdutf::validate_utf##FROM_N##FROM_BIG_SUFFIX##_with_errors( \
106+
reinterpret_cast<const from_char_t*>(input.data()), input.size()) \
107+
: simdutf::validate_utf##FROM_N##FROM_LIL_SUFFIX##_with_errors( \
108+
reinterpret_cast<const from_char_t*>(input.data()), input.size()); \
106109
if (validate_res.error != simdutf::error_code::SUCCESS) { \
107110
auto basic_result = ztd::text::basic_transcode_into_raw(input, from, output, to, \
108111
::std::forward<FromErrorHandler>(from_error_handler), \
@@ -112,16 +115,19 @@
112115
ztd::text::encoding_error::ok, 0); \
113116
} \
114117
} \
115-
const size_t output_count = (ztd::endian::native == ztd::endian::big \
116-
? simdutf::utf##TO_N##_length_from_utf##FROM_N##FROM_BIG_SUFFIX \
117-
: simdutf::utf##TO_N##_length_from_utf##FROM_N##FROM_LIL_SUFFIX)( \
118-
reinterpret_cast<const from_char_t*>(input.data()), input.size()); \
118+
const size_t output_count = ztd::endian::native == ztd::endian::big \
119+
? simdutf::utf##TO_N##_length_from_utf##FROM_N##FROM_BIG_SUFFIX( \
120+
reinterpret_cast<const from_char_t*>(input.data()), input.size()) \
121+
: simdutf::utf##TO_N##_length_from_utf##FROM_N##FROM_LIL_SUFFIX( \
122+
reinterpret_cast<const from_char_t*>(input.data()), input.size()); \
119123
if (output_count <= output.size()) { \
120-
std::size_t written_count = (ztd::endian::native == ztd::endian::big \
121-
? simdutf::convert_valid_utf##FROM_N##FROM_BIG_SUFFIX##_to_utf##TO_N##TO_BIG_SUFFIX \
122-
: simdutf::convert_valid_utf##FROM_N##FROM_LIL_SUFFIX##_to_utf##TO_N##TO_LIL_SUFFIX)( \
123-
reinterpret_cast<const from_char_t*>(input.data()), input.size(), \
124-
reinterpret_cast<to_char_t*>(output.data())); \
124+
std::size_t written_count = ztd::endian::native == ztd::endian::big \
125+
? simdutf::convert_valid_utf##FROM_N##FROM_BIG_SUFFIX##_to_utf##TO_N##TO_BIG_SUFFIX( \
126+
reinterpret_cast<const from_char_t*>(input.data()), input.size(), \
127+
reinterpret_cast<to_char_t*>(output.data())) \
128+
: simdutf::convert_valid_utf##FROM_N##FROM_LIL_SUFFIX##_to_utf##TO_N##TO_LIL_SUFFIX( \
129+
reinterpret_cast<const from_char_t*>(input.data()), input.size(), \
130+
reinterpret_cast<to_char_t*>(output.data())); \
125131
return TranscodeResult(input.subspan(input.size()), output.subspan(written_count), from_state, \
126132
to_state, ztd::text::encoding_error::ok, 0, std::forward<Pivot>(pivot), \
127133
ztd::text::encoding_error::ok, 0); \

0 commit comments

Comments
 (0)