Skip to content

Commit 76b4841

Browse files
committed
Make System.Globalization.Native compile as C on recent MSVC
We can now use __typeof__ in recent MSVC and some small tweaks to how the function pointers are defined. Also fix the PDB not getting copied next to the .dll and disable validating the .so file which doesn't apply to Windows.
1 parent 914797e commit 76b4841

File tree

4 files changed

+123
-117
lines changed

4 files changed

+123
-117
lines changed

src/native/libs/Common/pal_compiler.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ do_abort_unless (bool condition, const char* fmt, ...)
7777
#ifdef __cplusplus
7878
#define TYPEOF decltype
7979
#else
80+
#ifdef _MSC_VER
81+
#define TYPEOF(T) __typeof__(T)
82+
#else
8083
#define TYPEOF __typeof
84+
#endif // _MSVC_VER
8185
#endif // __cplusplus
8286
#endif // TYPEOF

src/native/libs/System.Globalization.Native/CMakeLists.txt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ cmake_minimum_required(VERSION 3.10..3.20)
33

44
project(System.Globalization.Native C)
55

6-
if (CLR_CMAKE_TARGET_WIN32)
7-
enable_language(CXX)
8-
endif()
9-
106
if(CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_WASI)
117
if (ANDROID_FORCE_ICU_DATA_DIR)
128
add_definitions(-DANDROID_FORCE_ICU_DATA_DIR)
@@ -135,8 +131,9 @@ if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE
135131
set(NATIVEGLOBALIZATION_SOURCES ${NATIVEGLOBALIZATION_SOURCES} pal_timeZoneInfo.c)
136132
endif()
137133

138-
if (MSVC)
139-
set_source_files_properties(${NATIVEGLOBALIZATION_SOURCES} PROPERTIES LANGUAGE CXX)
134+
if (MSVC AND MSVC_VERSION LESS 1939)
135+
# on VS < 17.9 we need to force compile sources as C++ since msvc doesn't support __typeof__ there
136+
set_source_files_properties(${NATIVEGLOBALIZATION_SOURCES} PROPERTIES COMPILE_FLAGS "/TP")
140137
endif()
141138

142139
include_directories("../Common")
@@ -167,7 +164,12 @@ if (GEN_SHARED_LIB)
167164
${FOUNDATION}
168165
)
169166

170-
install_with_stripped_symbols (System.Globalization.Native PROGRAMS .)
167+
if(CLR_CMAKE_TARGET_WIN32)
168+
install (TARGETS System.Globalization.Native DESTINATION .)
169+
install (FILES $<TARGET_PDB_FILE:System.Globalization.Native> DESTINATION .)
170+
else()
171+
install_with_stripped_symbols (System.Globalization.Native PROGRAMS .)
172+
endif()
171173
endif()
172174

173175
add_library(System.Globalization.Native-Static
@@ -182,7 +184,7 @@ endif()
182184

183185
install (TARGETS System.Globalization.Native-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
184186

185-
if(NOT CLR_CMAKE_TARGET_APPLE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_LINUX_MUSL AND NOT CLR_CMAKE_TARGET_HAIKU)
187+
if(NOT CLR_CMAKE_TARGET_WIN32 AND NOT CLR_CMAKE_TARGET_APPLE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_LINUX_MUSL AND NOT CLR_CMAKE_TARGET_HAIKU)
186188
if (GEN_SHARED_LIB)
187189
add_custom_command(TARGET System.Globalization.Native POST_BUILD
188190
COMMENT "Verifying System.Globalization.Native.so dependencies"

src/native/libs/System.Globalization.Native/pal_collation.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ static void FillIgnoreWidthRules(UChar* completeRules, int32_t* fillIndex, int32
252252
if (isIgnoreCase && (!isIgnoreWidth))
253253
{
254254
assert((*fillIndex) + (FullWidthAlphabetRangeLength * 4) <= completeRulesLength);
255-
const int UpperCaseToLowerCaseOffset = 0xFF41 - 0xFF21;
255+
const UChar UpperCaseToLowerCaseOffset = 0xFF41 - 0xFF21;
256256

257257
for (UChar ch = 0xFF21; ch <= 0xFF3A; ch++)
258258
{

src/native/libs/System.Globalization.Native/pal_icushim_internal.h

Lines changed: 108 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -232,114 +232,114 @@ FOR_ALL_ICU_FUNCTIONS
232232

233233
// Redefine all calls to ICU functions as calls through pointers that are set
234234
// to the functions of the selected version of ICU in the initialization.
235-
#define u_charsToUChars(...) u_charsToUChars_ptr(__VA_ARGS__)
236-
#define u_getVersion(...) u_getVersion_ptr(__VA_ARGS__)
237-
#define u_strcmp(...) u_strcmp_ptr(__VA_ARGS__)
238-
#define u_strcpy(...) u_strcpy_ptr(__VA_ARGS__)
239-
#define u_strlen(...) u_strlen_ptr(__VA_ARGS__)
240-
#define u_strncpy(...) u_strncpy_ptr(__VA_ARGS__)
241-
#define u_tolower(...) u_tolower_ptr(__VA_ARGS__)
242-
#define u_toupper(...) u_toupper_ptr(__VA_ARGS__)
243-
#define u_uastrncpy(...) u_uastrncpy_ptr(__VA_ARGS__)
244-
#define ubrk_close(...) ubrk_close_ptr(__VA_ARGS__)
245-
#define ubrk_openRules(...) ubrk_openRules_ptr(__VA_ARGS__)
246-
#define ucal_add(...) ucal_add_ptr(__VA_ARGS__)
247-
#define ucal_close(...) ucal_close_ptr(__VA_ARGS__)
248-
#define ucal_get(...) ucal_get_ptr(__VA_ARGS__)
249-
#define ucal_getAttribute(...) ucal_getAttribute_ptr(__VA_ARGS__)
250-
#define ucal_getKeywordValuesForLocale(...) ucal_getKeywordValuesForLocale_ptr(__VA_ARGS__)
251-
#define ucal_getLimit(...) ucal_getLimit_ptr(__VA_ARGS__)
252-
#define ucal_getNow(...) ucal_getNow_ptr(__VA_ARGS__)
253-
#define ucal_getTimeZoneDisplayName(...) ucal_getTimeZoneDisplayName_ptr(__VA_ARGS__)
254-
#define ucal_getTimeZoneIDForWindowsID(...) ucal_getTimeZoneIDForWindowsID_ptr(__VA_ARGS__)
255-
#define ucal_getWindowsTimeZoneID(...) ucal_getWindowsTimeZoneID_ptr(__VA_ARGS__)
256-
#define ucal_open(...) ucal_open_ptr(__VA_ARGS__)
257-
#define ucal_openTimeZoneIDEnumeration(...) ucal_openTimeZoneIDEnumeration_ptr(__VA_ARGS__)
258-
#define ucal_set(...) ucal_set_ptr(__VA_ARGS__)
259-
#define ucal_setMillis(...) ucal_setMillis_ptr(__VA_ARGS__)
260-
#define ucol_clone(...) ucol_clone_ptr(__VA_ARGS__)
261-
#define ucol_close(...) ucol_close_ptr(__VA_ARGS__)
262-
#define ucol_closeElements(...) ucol_closeElements_ptr(__VA_ARGS__)
263-
#define ucol_getOffset(...) ucol_getOffset_ptr(__VA_ARGS__)
264-
#define ucol_getRules(...) ucol_getRules_ptr(__VA_ARGS__)
265-
#define ucol_getSortKey(...) ucol_getSortKey_ptr(__VA_ARGS__)
266-
#define ucol_getStrength(...) ucol_getStrength_ptr(__VA_ARGS__)
267-
#define ucol_getVersion(...) ucol_getVersion_ptr(__VA_ARGS__)
268-
#define ucol_next(...) ucol_next_ptr(__VA_ARGS__)
269-
#define ucol_previous(...) ucol_previous_ptr(__VA_ARGS__)
270-
#define ucol_open(...) ucol_open_ptr(__VA_ARGS__)
271-
#define ucol_openElements(...) ucol_openElements_ptr(__VA_ARGS__)
272-
#define ucol_openRules(...) ucol_openRules_ptr(__VA_ARGS__)
273-
#define ucol_setAttribute(...) ucol_setAttribute_ptr(__VA_ARGS__)
274-
#define ucol_setMaxVariable(...) ucol_setMaxVariable_ptr(__VA_ARGS__)
275-
#define ucol_strcoll(...) ucol_strcoll_ptr(__VA_ARGS__)
276-
#define ucurr_forLocale(...) ucurr_forLocale_ptr(__VA_ARGS__)
277-
#define ucurr_getName(...) ucurr_getName_ptr(__VA_ARGS__)
278-
#define udat_close(...) udat_close_ptr(__VA_ARGS__)
279-
#define udat_countSymbols(...) udat_countSymbols_ptr(__VA_ARGS__)
280-
#define udat_format(...) udat_format_ptr(__VA_ARGS__)
281-
#define udat_getSymbols(...) udat_getSymbols_ptr(__VA_ARGS__)
282-
#define udat_open(...) udat_open_ptr(__VA_ARGS__)
283-
#define udat_setCalendar(...) udat_setCalendar_ptr(__VA_ARGS__)
284-
#define udat_toPattern(...) udat_toPattern_ptr(__VA_ARGS__)
285-
#define udatpg_close(...) udatpg_close_ptr(__VA_ARGS__)
286-
#define udatpg_getBestPattern(...) udatpg_getBestPattern_ptr(__VA_ARGS__)
287-
#define udatpg_open(...) udatpg_open_ptr(__VA_ARGS__)
288-
#define uenum_close(...) uenum_close_ptr(__VA_ARGS__)
289-
#define uenum_count(...) uenum_count_ptr(__VA_ARGS__)
290-
#define uenum_next(...) uenum_next_ptr(__VA_ARGS__)
291-
#define uidna_close(...) uidna_close_ptr(__VA_ARGS__)
292-
#define uidna_nameToASCII(...) uidna_nameToASCII_ptr(__VA_ARGS__)
293-
#define uidna_nameToUnicode(...) uidna_nameToUnicode_ptr(__VA_ARGS__)
294-
#define uidna_openUTS46(...) uidna_openUTS46_ptr(__VA_ARGS__)
295-
#define uldn_close(...) uldn_close_ptr(__VA_ARGS__)
296-
#define uldn_keyValueDisplayName(...) uldn_keyValueDisplayName_ptr(__VA_ARGS__)
297-
#define uldn_open(...) uldn_open_ptr(__VA_ARGS__)
298-
#define uloc_canonicalize(...) uloc_canonicalize_ptr(__VA_ARGS__)
299-
#define uloc_countAvailable(...) uloc_countAvailable_ptr(__VA_ARGS__)
300-
#define uloc_getAvailable(...) uloc_getAvailable_ptr(__VA_ARGS__)
301-
#define uloc_getBaseName(...) uloc_getBaseName_ptr(__VA_ARGS__)
302-
#define uloc_getCharacterOrientation(...) uloc_getCharacterOrientation_ptr(__VA_ARGS__)
303-
#define uloc_getCountry(...) uloc_getCountry_ptr(__VA_ARGS__)
304-
#define uloc_getDefault(...) uloc_getDefault_ptr(__VA_ARGS__)
305-
#define uloc_getDisplayCountry(...) uloc_getDisplayCountry_ptr(__VA_ARGS__)
306-
#define uloc_getDisplayLanguage(...) uloc_getDisplayLanguage_ptr(__VA_ARGS__)
307-
#define uloc_getDisplayName(...) uloc_getDisplayName_ptr(__VA_ARGS__)
308-
#define uloc_getISO3Country(...) uloc_getISO3Country_ptr(__VA_ARGS__)
309-
#define uloc_getISO3Language(...) uloc_getISO3Language_ptr(__VA_ARGS__)
310-
#define uloc_getKeywordValue(...) uloc_getKeywordValue_ptr(__VA_ARGS__)
311-
#define uloc_getLanguage(...) uloc_getLanguage_ptr(__VA_ARGS__)
312-
#define uloc_getLCID(...) uloc_getLCID_ptr(__VA_ARGS__)
313-
#define uloc_getName(...) uloc_getName_ptr(__VA_ARGS__)
314-
#define uloc_getParent(...) uloc_getParent_ptr(__VA_ARGS__)
315-
#define uloc_setKeywordValue(...) uloc_setKeywordValue_ptr(__VA_ARGS__)
316-
#define ulocdata_getCLDRVersion(...) ulocdata_getCLDRVersion_ptr(__VA_ARGS__)
317-
#define ulocdata_getMeasurementSystem(...) ulocdata_getMeasurementSystem_ptr(__VA_ARGS__)
318-
#define unorm2_getNFCInstance(...) unorm2_getNFCInstance_ptr(__VA_ARGS__)
319-
#define unorm2_getNFDInstance(...) unorm2_getNFDInstance_ptr(__VA_ARGS__)
320-
#define unorm2_getNFKCInstance(...) unorm2_getNFKCInstance_ptr(__VA_ARGS__)
321-
#define unorm2_getNFKDInstance(...) unorm2_getNFKDInstance_ptr(__VA_ARGS__)
322-
#define unorm2_isNormalized(...) unorm2_isNormalized_ptr(__VA_ARGS__)
323-
#define unorm2_normalize(...) unorm2_normalize_ptr(__VA_ARGS__)
324-
#define unum_close(...) unum_close_ptr(__VA_ARGS__)
325-
#define unum_getAttribute(...) unum_getAttribute_ptr(__VA_ARGS__)
326-
#define unum_getSymbol(...) unum_getSymbol_ptr(__VA_ARGS__)
327-
#define unum_open(...) unum_open_ptr(__VA_ARGS__)
328-
#define unum_toPattern(...) unum_toPattern_ptr(__VA_ARGS__)
329-
#define ures_close(...) ures_close_ptr(__VA_ARGS__)
330-
#define ures_getByKey(...) ures_getByKey_ptr(__VA_ARGS__)
331-
#define ures_getSize(...) ures_getSize_ptr(__VA_ARGS__)
332-
#define ures_getStringByIndex(...) ures_getStringByIndex_ptr(__VA_ARGS__)
333-
#define ures_open(...) ures_open_ptr(__VA_ARGS__)
334-
#define usearch_close(...) usearch_close_ptr(__VA_ARGS__)
335-
#define usearch_first(...) usearch_first_ptr(__VA_ARGS__)
336-
#define usearch_getBreakIterator(...) usearch_getBreakIterator_ptr(__VA_ARGS__)
337-
#define usearch_getMatchedLength(...) usearch_getMatchedLength_ptr(__VA_ARGS__)
338-
#define usearch_last(...) usearch_last_ptr(__VA_ARGS__)
339-
#define usearch_openFromCollator(...) usearch_openFromCollator_ptr(__VA_ARGS__)
340-
#define usearch_reset(...) usearch_reset_ptr(__VA_ARGS__)
341-
#define usearch_setPattern(...) usearch_setPattern_ptr(__VA_ARGS__)
342-
#define usearch_setText(...) usearch_setText_ptr(__VA_ARGS__)
235+
#define u_charsToUChars(...) (*u_charsToUChars_ptr)(__VA_ARGS__)
236+
#define u_getVersion(...) (*u_getVersion_ptr)(__VA_ARGS__)
237+
#define u_strcmp(...) (*u_strcmp_ptr)(__VA_ARGS__)
238+
#define u_strcpy(...) (*u_strcpy_ptr)(__VA_ARGS__)
239+
#define u_strlen(...) (*u_strlen_ptr)(__VA_ARGS__)
240+
#define u_strncpy(...) (*u_strncpy_ptr)(__VA_ARGS__)
241+
#define u_tolower(...) (*u_tolower_ptr)(__VA_ARGS__)
242+
#define u_toupper(...) (*u_toupper_ptr)(__VA_ARGS__)
243+
#define u_uastrncpy(...) (*u_uastrncpy_ptr)(__VA_ARGS__)
244+
#define ubrk_close(...) (*ubrk_close_ptr)(__VA_ARGS__)
245+
#define ubrk_openRules(...) (*ubrk_openRules_ptr)(__VA_ARGS__)
246+
#define ucal_add(...) (*ucal_add_ptr)(__VA_ARGS__)
247+
#define ucal_close(...) (*ucal_close_ptr)(__VA_ARGS__)
248+
#define ucal_get(...) (*ucal_get_ptr)(__VA_ARGS__)
249+
#define ucal_getAttribute(...) (*ucal_getAttribute_ptr)(__VA_ARGS__)
250+
#define ucal_getKeywordValuesForLocale(...) (*ucal_getKeywordValuesForLocale_ptr)(__VA_ARGS__)
251+
#define ucal_getLimit(...) (*ucal_getLimit_ptr)(__VA_ARGS__)
252+
#define ucal_getNow(...) (*ucal_getNow_ptr)(__VA_ARGS__)
253+
#define ucal_getTimeZoneDisplayName(...) (*ucal_getTimeZoneDisplayName_ptr)(__VA_ARGS__)
254+
#define ucal_getTimeZoneIDForWindowsID(...) (*ucal_getTimeZoneIDForWindowsID_ptr)(__VA_ARGS__)
255+
#define ucal_getWindowsTimeZoneID(...) (*ucal_getWindowsTimeZoneID_ptr)(__VA_ARGS__)
256+
#define ucal_open(...) (*ucal_open_ptr)(__VA_ARGS__)
257+
#define ucal_openTimeZoneIDEnumeration(...) (*ucal_openTimeZoneIDEnumeration_ptr)(__VA_ARGS__)
258+
#define ucal_set(...) (*ucal_set_ptr)(__VA_ARGS__)
259+
#define ucal_setMillis(...) (*ucal_setMillis_ptr)(__VA_ARGS__)
260+
#define ucol_clone(...) (*ucol_clone_ptr)(__VA_ARGS__)
261+
#define ucol_close(...) (*ucol_close_ptr)(__VA_ARGS__)
262+
#define ucol_closeElements(...) (*ucol_closeElements_ptr)(__VA_ARGS__)
263+
#define ucol_getOffset(...) (*ucol_getOffset_ptr)(__VA_ARGS__)
264+
#define ucol_getRules(...) (*ucol_getRules_ptr)(__VA_ARGS__)
265+
#define ucol_getSortKey(...) (*ucol_getSortKey_ptr)(__VA_ARGS__)
266+
#define ucol_getStrength(...) (*ucol_getStrength_ptr)(__VA_ARGS__)
267+
#define ucol_getVersion(...) (*ucol_getVersion_ptr)(__VA_ARGS__)
268+
#define ucol_next(...) (*ucol_next_ptr)(__VA_ARGS__)
269+
#define ucol_previous(...) (*ucol_previous_ptr)(__VA_ARGS__)
270+
#define ucol_open(...) (*ucol_open_ptr)(__VA_ARGS__)
271+
#define ucol_openElements(...) (*ucol_openElements_ptr)(__VA_ARGS__)
272+
#define ucol_openRules(...) (*ucol_openRules_ptr)(__VA_ARGS__)
273+
#define ucol_setAttribute(...) (*ucol_setAttribute_ptr)(__VA_ARGS__)
274+
#define ucol_setMaxVariable(...) (*ucol_setMaxVariable_ptr)(__VA_ARGS__)
275+
#define ucol_strcoll(...) (*ucol_strcoll_ptr)(__VA_ARGS__)
276+
#define ucurr_forLocale(...) (*ucurr_forLocale_ptr)(__VA_ARGS__)
277+
#define ucurr_getName(...) (*ucurr_getName_ptr)(__VA_ARGS__)
278+
#define udat_close(...) (*udat_close_ptr)(__VA_ARGS__)
279+
#define udat_countSymbols(...) (*udat_countSymbols_ptr)(__VA_ARGS__)
280+
#define udat_format(...) (*udat_format_ptr)(__VA_ARGS__)
281+
#define udat_getSymbols(...) (*udat_getSymbols_ptr)(__VA_ARGS__)
282+
#define udat_open(...) (*udat_open_ptr)(__VA_ARGS__)
283+
#define udat_setCalendar(...) (*udat_setCalendar_ptr)(__VA_ARGS__)
284+
#define udat_toPattern(...) (*udat_toPattern_ptr)(__VA_ARGS__)
285+
#define udatpg_close(...) (*udatpg_close_ptr)(__VA_ARGS__)
286+
#define udatpg_getBestPattern(...) (*udatpg_getBestPattern_ptr)(__VA_ARGS__)
287+
#define udatpg_open(...) (*udatpg_open_ptr)(__VA_ARGS__)
288+
#define uenum_close(...) (*uenum_close_ptr)(__VA_ARGS__)
289+
#define uenum_count(...) (*uenum_count_ptr)(__VA_ARGS__)
290+
#define uenum_next(...) (*uenum_next_ptr)(__VA_ARGS__)
291+
#define uidna_close(...) (*uidna_close_ptr)(__VA_ARGS__)
292+
#define uidna_nameToASCII(...) (*uidna_nameToASCII_ptr)(__VA_ARGS__)
293+
#define uidna_nameToUnicode(...) (*uidna_nameToUnicode_ptr)(__VA_ARGS__)
294+
#define uidna_openUTS46(...) (*uidna_openUTS46_ptr)(__VA_ARGS__)
295+
#define uldn_close(...) (*uldn_close_ptr)(__VA_ARGS__)
296+
#define uldn_keyValueDisplayName(...) (*uldn_keyValueDisplayName_ptr)(__VA_ARGS__)
297+
#define uldn_open(...) (*uldn_open_ptr)(__VA_ARGS__)
298+
#define uloc_canonicalize(...) (*uloc_canonicalize_ptr)(__VA_ARGS__)
299+
#define uloc_countAvailable(...) (*uloc_countAvailable_ptr)(__VA_ARGS__)
300+
#define uloc_getAvailable(...) (*uloc_getAvailable_ptr)(__VA_ARGS__)
301+
#define uloc_getBaseName(...) (*uloc_getBaseName_ptr)(__VA_ARGS__)
302+
#define uloc_getCharacterOrientation(...) (*uloc_getCharacterOrientation_ptr)(__VA_ARGS__)
303+
#define uloc_getCountry(...) (*uloc_getCountry_ptr)(__VA_ARGS__)
304+
#define uloc_getDefault(...) (*uloc_getDefault_ptr)(__VA_ARGS__)
305+
#define uloc_getDisplayCountry(...) (*uloc_getDisplayCountry_ptr)(__VA_ARGS__)
306+
#define uloc_getDisplayLanguage(...) (*uloc_getDisplayLanguage_ptr)(__VA_ARGS__)
307+
#define uloc_getDisplayName(...) (*uloc_getDisplayName_ptr)(__VA_ARGS__)
308+
#define uloc_getISO3Country(...) (*uloc_getISO3Country_ptr)(__VA_ARGS__)
309+
#define uloc_getISO3Language(...) (*uloc_getISO3Language_ptr)(__VA_ARGS__)
310+
#define uloc_getKeywordValue(...) (*uloc_getKeywordValue_ptr)(__VA_ARGS__)
311+
#define uloc_getLanguage(...) (*uloc_getLanguage_ptr)(__VA_ARGS__)
312+
#define uloc_getLCID(...) (*uloc_getLCID_ptr)(__VA_ARGS__)
313+
#define uloc_getName(...) (*uloc_getName_ptr)(__VA_ARGS__)
314+
#define uloc_getParent(...) (*uloc_getParent_ptr)(__VA_ARGS__)
315+
#define uloc_setKeywordValue(...) (*uloc_setKeywordValue_ptr)(__VA_ARGS__)
316+
#define ulocdata_getCLDRVersion(...) (*ulocdata_getCLDRVersion_ptr)(__VA_ARGS__)
317+
#define ulocdata_getMeasurementSystem(...) (*ulocdata_getMeasurementSystem_ptr)(__VA_ARGS__)
318+
#define unorm2_getNFCInstance(...) (*unorm2_getNFCInstance_ptr)(__VA_ARGS__)
319+
#define unorm2_getNFDInstance(...) (*unorm2_getNFDInstance_ptr)(__VA_ARGS__)
320+
#define unorm2_getNFKCInstance(...) (*unorm2_getNFKCInstance_ptr)(__VA_ARGS__)
321+
#define unorm2_getNFKDInstance(...) (*unorm2_getNFKDInstance_ptr)(__VA_ARGS__)
322+
#define unorm2_isNormalized(...) (*unorm2_isNormalized_ptr)(__VA_ARGS__)
323+
#define unorm2_normalize(...) (*unorm2_normalize_ptr)(__VA_ARGS__)
324+
#define unum_close(...) (*unum_close_ptr)(__VA_ARGS__)
325+
#define unum_getAttribute(...) (*unum_getAttribute_ptr)(__VA_ARGS__)
326+
#define unum_getSymbol(...) (*unum_getSymbol_ptr)(__VA_ARGS__)
327+
#define unum_open(...) (*unum_open_ptr)(__VA_ARGS__)
328+
#define unum_toPattern(...) (*unum_toPattern_ptr)(__VA_ARGS__)
329+
#define ures_close(...) (*ures_close_ptr)(__VA_ARGS__)
330+
#define ures_getByKey(...) (*ures_getByKey_ptr)(__VA_ARGS__)
331+
#define ures_getSize(...) (*ures_getSize_ptr)(__VA_ARGS__)
332+
#define ures_getStringByIndex(...) (*ures_getStringByIndex_ptr)(__VA_ARGS__)
333+
#define ures_open(...) (*ures_open_ptr)(__VA_ARGS__)
334+
#define usearch_close(...) (*usearch_close_ptr)(__VA_ARGS__)
335+
#define usearch_first(...) (*usearch_first_ptr)(__VA_ARGS__)
336+
#define usearch_getBreakIterator(...) (*usearch_getBreakIterator_ptr)(__VA_ARGS__)
337+
#define usearch_getMatchedLength(...) (*usearch_getMatchedLength_ptr)(__VA_ARGS__)
338+
#define usearch_last(...) (*usearch_last_ptr)(__VA_ARGS__)
339+
#define usearch_openFromCollator(...) (*usearch_openFromCollator_ptr)(__VA_ARGS__)
340+
#define usearch_reset(...) (*usearch_reset_ptr)(__VA_ARGS__)
341+
#define usearch_setPattern(...) (*usearch_setPattern_ptr)(__VA_ARGS__)
342+
#define usearch_setText(...) (*usearch_setText_ptr)(__VA_ARGS__)
343343

344344
#else // !defined(STATIC_ICU)
345345

0 commit comments

Comments
 (0)