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) 2002-2014, International Business Machines 6*0e209d39SAndroid Build Coastguard Worker * Corporation and others. All Rights Reserved. 7*0e209d39SAndroid Build Coastguard Worker ********************************************************************** 8*0e209d39SAndroid Build Coastguard Worker * Author: Alan Liu 9*0e209d39SAndroid Build Coastguard Worker * Created: November 11 2002 10*0e209d39SAndroid Build Coastguard Worker * Since: ICU 2.4 11*0e209d39SAndroid Build Coastguard Worker ********************************************************************** 12*0e209d39SAndroid Build Coastguard Worker */ 13*0e209d39SAndroid Build Coastguard Worker #ifndef _USTRENUM_H_ 14*0e209d39SAndroid Build Coastguard Worker #define _USTRENUM_H_ 15*0e209d39SAndroid Build Coastguard Worker 16*0e209d39SAndroid Build Coastguard Worker #include "unicode/uenum.h" 17*0e209d39SAndroid Build Coastguard Worker #include "unicode/strenum.h" 18*0e209d39SAndroid Build Coastguard Worker 19*0e209d39SAndroid Build Coastguard Worker //---------------------------------------------------------------------- 20*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 21*0e209d39SAndroid Build Coastguard Worker 22*0e209d39SAndroid Build Coastguard Worker /** 23*0e209d39SAndroid Build Coastguard Worker * A wrapper to make a UEnumeration into a StringEnumeration. The 24*0e209d39SAndroid Build Coastguard Worker * wrapper adopts the UEnumeration is wraps. 25*0e209d39SAndroid Build Coastguard Worker */ 26*0e209d39SAndroid Build Coastguard Worker class U_COMMON_API UStringEnumeration : public StringEnumeration { 27*0e209d39SAndroid Build Coastguard Worker 28*0e209d39SAndroid Build Coastguard Worker public: 29*0e209d39SAndroid Build Coastguard Worker /** 30*0e209d39SAndroid Build Coastguard Worker * Constructor. This constructor adopts its UEnumeration 31*0e209d39SAndroid Build Coastguard Worker * argument. 32*0e209d39SAndroid Build Coastguard Worker * @param uenum a UEnumeration object. This object takes 33*0e209d39SAndroid Build Coastguard Worker * ownership of 'uenum' and will close it in its destructor. The 34*0e209d39SAndroid Build Coastguard Worker * caller must not call uenum_close on 'uenum' after calling this 35*0e209d39SAndroid Build Coastguard Worker * constructor. 36*0e209d39SAndroid Build Coastguard Worker */ 37*0e209d39SAndroid Build Coastguard Worker UStringEnumeration(UEnumeration* uenum); 38*0e209d39SAndroid Build Coastguard Worker 39*0e209d39SAndroid Build Coastguard Worker /** 40*0e209d39SAndroid Build Coastguard Worker * Destructor. This closes the UEnumeration passed in to the 41*0e209d39SAndroid Build Coastguard Worker * constructor. 42*0e209d39SAndroid Build Coastguard Worker */ 43*0e209d39SAndroid Build Coastguard Worker virtual ~UStringEnumeration(); 44*0e209d39SAndroid Build Coastguard Worker 45*0e209d39SAndroid Build Coastguard Worker /** 46*0e209d39SAndroid Build Coastguard Worker * Return the number of elements that the iterator traverses. 47*0e209d39SAndroid Build Coastguard Worker * @param status the error code. 48*0e209d39SAndroid Build Coastguard Worker * @return number of elements in the iterator. 49*0e209d39SAndroid Build Coastguard Worker */ 50*0e209d39SAndroid Build Coastguard Worker virtual int32_t count(UErrorCode& status) const override; 51*0e209d39SAndroid Build Coastguard Worker 52*0e209d39SAndroid Build Coastguard Worker virtual const char* next(int32_t *resultLength, UErrorCode& status) override; 53*0e209d39SAndroid Build Coastguard Worker 54*0e209d39SAndroid Build Coastguard Worker /** 55*0e209d39SAndroid Build Coastguard Worker * Returns the next element a UnicodeString*. If there are no 56*0e209d39SAndroid Build Coastguard Worker * more elements, returns nullptr. 57*0e209d39SAndroid Build Coastguard Worker * @param status the error code. 58*0e209d39SAndroid Build Coastguard Worker * @return a pointer to the string, or nullptr. 59*0e209d39SAndroid Build Coastguard Worker */ 60*0e209d39SAndroid Build Coastguard Worker virtual const UnicodeString* snext(UErrorCode& status) override; 61*0e209d39SAndroid Build Coastguard Worker 62*0e209d39SAndroid Build Coastguard Worker /** 63*0e209d39SAndroid Build Coastguard Worker * Resets the iterator. 64*0e209d39SAndroid Build Coastguard Worker * @param status the error code. 65*0e209d39SAndroid Build Coastguard Worker */ 66*0e209d39SAndroid Build Coastguard Worker virtual void reset(UErrorCode& status) override; 67*0e209d39SAndroid Build Coastguard Worker 68*0e209d39SAndroid Build Coastguard Worker /** 69*0e209d39SAndroid Build Coastguard Worker * ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class. 70*0e209d39SAndroid Build Coastguard Worker */ 71*0e209d39SAndroid Build Coastguard Worker virtual UClassID getDynamicClassID() const override; 72*0e209d39SAndroid Build Coastguard Worker 73*0e209d39SAndroid Build Coastguard Worker /** 74*0e209d39SAndroid Build Coastguard Worker * ICU4C "poor man's RTTI", returns a UClassID for this ICU class. 75*0e209d39SAndroid Build Coastguard Worker */ 76*0e209d39SAndroid Build Coastguard Worker static UClassID U_EXPORT2 getStaticClassID(); 77*0e209d39SAndroid Build Coastguard Worker 78*0e209d39SAndroid Build Coastguard Worker static UStringEnumeration * U_EXPORT2 fromUEnumeration( 79*0e209d39SAndroid Build Coastguard Worker UEnumeration *enumToAdopt, UErrorCode &status); 80*0e209d39SAndroid Build Coastguard Worker private: 81*0e209d39SAndroid Build Coastguard Worker UEnumeration *uenum; // owned 82*0e209d39SAndroid Build Coastguard Worker }; 83*0e209d39SAndroid Build Coastguard Worker 84*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 85*0e209d39SAndroid Build Coastguard Worker 86*0e209d39SAndroid Build Coastguard Worker #endif 87*0e209d39SAndroid Build Coastguard Worker 88