xref: /aosp_15_r20/external/icu/libicu/cts_headers/numparse_utils.h (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
1*0e209d39SAndroid Build Coastguard Worker // © 2018 and later: Unicode, Inc. and others.
2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html
3*0e209d39SAndroid Build Coastguard Worker 
4*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h"
5*0e209d39SAndroid Build Coastguard Worker 
6*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING
7*0e209d39SAndroid Build Coastguard Worker #ifndef __NUMPARSE_UTILS_H__
8*0e209d39SAndroid Build Coastguard Worker #define __NUMPARSE_UTILS_H__
9*0e209d39SAndroid Build Coastguard Worker 
10*0e209d39SAndroid Build Coastguard Worker #include "numparse_types.h"
11*0e209d39SAndroid Build Coastguard Worker #include "unicode/uniset.h"
12*0e209d39SAndroid Build Coastguard Worker 
13*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN
14*0e209d39SAndroid Build Coastguard Worker namespace numparse::impl::utils {
15*0e209d39SAndroid Build Coastguard Worker 
putLeadCodePoints(const UnicodeSet * input,UnicodeSet * output)16*0e209d39SAndroid Build Coastguard Worker inline static void putLeadCodePoints(const UnicodeSet* input, UnicodeSet* output) {
17*0e209d39SAndroid Build Coastguard Worker     for (int32_t i = 0; i < input->getRangeCount(); i++) {
18*0e209d39SAndroid Build Coastguard Worker         output->add(input->getRangeStart(i), input->getRangeEnd(i));
19*0e209d39SAndroid Build Coastguard Worker     }
20*0e209d39SAndroid Build Coastguard Worker     // TODO: ANDY: How to iterate over the strings in ICU4C UnicodeSet?
21*0e209d39SAndroid Build Coastguard Worker }
22*0e209d39SAndroid Build Coastguard Worker 
putLeadCodePoint(const UnicodeString & input,UnicodeSet * output)23*0e209d39SAndroid Build Coastguard Worker inline static void putLeadCodePoint(const UnicodeString& input, UnicodeSet* output) {
24*0e209d39SAndroid Build Coastguard Worker     if (!input.isEmpty()) {
25*0e209d39SAndroid Build Coastguard Worker         output->add(input.char32At(0));
26*0e209d39SAndroid Build Coastguard Worker     }
27*0e209d39SAndroid Build Coastguard Worker }
28*0e209d39SAndroid Build Coastguard Worker 
copyCurrencyCode(char16_t * dest,const char16_t * src)29*0e209d39SAndroid Build Coastguard Worker inline static void copyCurrencyCode(char16_t* dest, const char16_t* src) {
30*0e209d39SAndroid Build Coastguard Worker     uprv_memcpy(dest, src, sizeof(char16_t) * 3);
31*0e209d39SAndroid Build Coastguard Worker     dest[3] = 0;
32*0e209d39SAndroid Build Coastguard Worker }
33*0e209d39SAndroid Build Coastguard Worker 
34*0e209d39SAndroid Build Coastguard Worker } // namespace numparse::impl::utils
35*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END
36*0e209d39SAndroid Build Coastguard Worker 
37*0e209d39SAndroid Build Coastguard Worker #endif //__NUMPARSE_UTILS_H__
38*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_FORMATTING */
39