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