xref: /aosp_15_r20/external/icu/icu4c/source/i18n/ufieldpositer.cpp (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
1*0e209d39SAndroid Build Coastguard Worker // © 2016 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 *****************************************************************************************
5*0e209d39SAndroid Build Coastguard Worker * Copyright (C) 2015, International Business Machines
6*0e209d39SAndroid Build Coastguard Worker * Corporation and others. All Rights Reserved.
7*0e209d39SAndroid Build Coastguard Worker *****************************************************************************************
8*0e209d39SAndroid Build Coastguard Worker */
9*0e209d39SAndroid Build Coastguard Worker 
10*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h"
11*0e209d39SAndroid Build Coastguard Worker 
12*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING
13*0e209d39SAndroid Build Coastguard Worker 
14*0e209d39SAndroid Build Coastguard Worker #include "unicode/ufieldpositer.h"
15*0e209d39SAndroid Build Coastguard Worker #include "unicode/fpositer.h"
16*0e209d39SAndroid Build Coastguard Worker #include "unicode/localpointer.h"
17*0e209d39SAndroid Build Coastguard Worker 
18*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_USE
19*0e209d39SAndroid Build Coastguard Worker 
20*0e209d39SAndroid Build Coastguard Worker 
21*0e209d39SAndroid Build Coastguard Worker U_CAPI UFieldPositionIterator* U_EXPORT2
ufieldpositer_open(UErrorCode * status)22*0e209d39SAndroid Build Coastguard Worker ufieldpositer_open(UErrorCode* status)
23*0e209d39SAndroid Build Coastguard Worker {
24*0e209d39SAndroid Build Coastguard Worker     if (U_FAILURE(*status)) {
25*0e209d39SAndroid Build Coastguard Worker         return nullptr;
26*0e209d39SAndroid Build Coastguard Worker     }
27*0e209d39SAndroid Build Coastguard Worker     FieldPositionIterator* fpositer = new FieldPositionIterator();
28*0e209d39SAndroid Build Coastguard Worker     if (fpositer == nullptr) {
29*0e209d39SAndroid Build Coastguard Worker         *status = U_MEMORY_ALLOCATION_ERROR;
30*0e209d39SAndroid Build Coastguard Worker     }
31*0e209d39SAndroid Build Coastguard Worker     return (UFieldPositionIterator*)fpositer;
32*0e209d39SAndroid Build Coastguard Worker }
33*0e209d39SAndroid Build Coastguard Worker 
34*0e209d39SAndroid Build Coastguard Worker 
35*0e209d39SAndroid Build Coastguard Worker U_CAPI void U_EXPORT2
ufieldpositer_close(UFieldPositionIterator * fpositer)36*0e209d39SAndroid Build Coastguard Worker ufieldpositer_close(UFieldPositionIterator *fpositer)
37*0e209d39SAndroid Build Coastguard Worker {
38*0e209d39SAndroid Build Coastguard Worker     delete (FieldPositionIterator*)fpositer;
39*0e209d39SAndroid Build Coastguard Worker }
40*0e209d39SAndroid Build Coastguard Worker 
41*0e209d39SAndroid Build Coastguard Worker 
42*0e209d39SAndroid Build Coastguard Worker U_CAPI int32_t U_EXPORT2
ufieldpositer_next(UFieldPositionIterator * fpositer,int32_t * beginIndex,int32_t * endIndex)43*0e209d39SAndroid Build Coastguard Worker ufieldpositer_next(UFieldPositionIterator *fpositer,
44*0e209d39SAndroid Build Coastguard Worker                    int32_t *beginIndex, int32_t *endIndex)
45*0e209d39SAndroid Build Coastguard Worker {
46*0e209d39SAndroid Build Coastguard Worker     FieldPosition fp;
47*0e209d39SAndroid Build Coastguard Worker     int32_t field = -1;
48*0e209d39SAndroid Build Coastguard Worker     if (((FieldPositionIterator*)fpositer)->next(fp)) {
49*0e209d39SAndroid Build Coastguard Worker         field = fp.getField();
50*0e209d39SAndroid Build Coastguard Worker         if (beginIndex) {
51*0e209d39SAndroid Build Coastguard Worker             *beginIndex = fp.getBeginIndex();
52*0e209d39SAndroid Build Coastguard Worker         }
53*0e209d39SAndroid Build Coastguard Worker         if (endIndex) {
54*0e209d39SAndroid Build Coastguard Worker             *endIndex = fp.getEndIndex();
55*0e209d39SAndroid Build Coastguard Worker         }
56*0e209d39SAndroid Build Coastguard Worker     }
57*0e209d39SAndroid Build Coastguard Worker     return field;
58*0e209d39SAndroid Build Coastguard Worker }
59*0e209d39SAndroid Build Coastguard Worker 
60*0e209d39SAndroid Build Coastguard Worker 
61*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_FORMATTING */
62