| /* |
| ********************************************************************** |
| * Copyright (c) 2002, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| ********************************************************************** |
| * Author: Alan Liu |
| * Created: November 11 2002 |
| * Since: ICU 2.4 |
| ********************************************************************** |
| */ |
| #ifndef _USTRENUM_H_ |
| #define _USTRENUM_H_ |
| |
| #include "unicode/uenum.h" |
| #include "unicode/strenum.h" |
| |
| /** |
| * Given a StringEnumeration, wrap it in a UEnumeration. The |
| * StringEnumeration is adopted; after this call, the caller must not |
| * delete it (regardless of error status). |
| */ |
| U_CAPI UEnumeration* U_EXPORT2 |
| uenum_openStringEnumeration(StringEnumeration* adopted, UErrorCode* ec); |
| |
| /** |
| * Given an array of const char* strings (invariant chars only), |
| * return a UEnumeration. Must have strings[i] != 0 for i in |
| * 0..count-1. |
| */ |
| U_CAPI UEnumeration* U_EXPORT2 |
| uenum_openCharStringsEnumeration(const char** strings, int32_t count, |
| UErrorCode* ec); |
| |
| //---------------------------------------------------------------------- |
| |
| /** |
| * A wrapper to make a UEnumeration into a StringEnumeration. The |
| * wrapper adopts the UEnumeration is wraps. |
| */ |
| class U_COMMON_API UStringEnumeration : public StringEnumeration { |
| |
| public: |
| /** |
| * Constructor. This constructor adopts its UEnumeration |
| * argument. |
| * @param uenum a UEnumeration object. This object takes |
| * ownership of 'uenum' and will close it in its destructor. The |
| * caller must not call uenum_close on 'uenum' after calling this |
| * constructor. |
| */ |
| UStringEnumeration(UEnumeration* uenum); |
| |
| /** |
| * Destructor. This closes the UEnumeration passed in to the |
| * constructor. |
| */ |
| virtual ~UStringEnumeration(); |
| |
| /** |
| * Return the number of elements that the iterator traverses. |
| * @param status the error code. |
| * @return number of elements in the iterator. |
| */ |
| virtual int32_t count(UErrorCode& status) const; |
| |
| /** |
| * Returns the next element a UnicodeString*. If there are no |
| * more elements, returns NULL. |
| * @param status the error code. |
| * @return a pointer to the string, or NULL. |
| */ |
| virtual const UnicodeString* snext(UErrorCode& status); |
| |
| /** |
| * Resets the iterator. |
| * @param status the error code. |
| */ |
| virtual void reset(UErrorCode& status); |
| |
| /** |
| * ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class. |
| */ |
| virtual UClassID getDynamicClassID() const; |
| |
| /** |
| * ICU4C "poor man's RTTI", returns a UClassID for this ICU class. |
| */ |
| static UClassID getStaticClassID(); |
| |
| private: |
| UEnumeration *uenum; // owned |
| }; |
| |
| //---------------------------------------------------------------------- |
| |
| // The following has not been tested and is not used yet. [alan] |
| // |
| // /** |
| // * A StringEnumeration over a fixed array of const UChar* strings. |
| // */ |
| // class U_COMMON_API StringArrayEnumeration : public StringEnumeration { |
| // |
| // public: |
| // /** |
| // * Constructor. |
| // * @param strings pointer to array of const UChar*. If 'count' == |
| // * 0, then this pointer is ignored. May be NULL if 'count' == 0. |
| // * @param count number of elements of strings, or 0. If 0, then |
| // * 'strings' is ignored. |
| // */ |
| // StringArrayEnumeration(const UChar** strings, int32_t count, |
| // UErrorCode& status); |
| // |
| // /** |
| // * Destructor. |
| // */ |
| // virtual ~StringArrayEnumeration(); |
| // |
| // /** |
| // * Clone this object. |
| // * @return a clone of this object |
| // */ |
| // virtual StringEnumeration *clone() const; |
| // |
| // /** |
| // * Return the number of elements that the iterator traverses. |
| // * @param status the error code. |
| // * @return number of elements in the iterator. |
| // */ |
| // virtual int32_t count(UErrorCode& status) const; |
| // |
| // /** |
| // * Returns the next element a UnicodeString*. If there are no |
| // * more elements, returns NULL. |
| // * @param status the error code. |
| // * @return a pointer to the string, or NULL. |
| // */ |
| // virtual const UnicodeString* snext(UErrorCode& status); |
| // |
| // /** |
| // * Resets the iterator. |
| // * @param status the error code. |
| // */ |
| // virtual void reset(UErrorCode& status); |
| // |
| // /** |
| // * ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class. |
| // */ |
| // virtual UClassID getDynamicClassID() const; |
| // |
| // /** |
| // * ICU4C "poor man's RTTI", returns a UClassID for this ICU class. |
| // */ |
| // static UClassID getStaticClassID(); |
| // |
| // private: |
| // const UChar** strings; |
| // int32_t stringCount; |
| // int32_t pos; |
| // }; |
| |
| /* _USTRENUM_H_ */ |
| #endif |
| /*eof*/ |