X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..729e4ab9bc6618bc3d8a898e575df7f4019e29ca:/icuSources/common/ustrenum.h diff --git a/icuSources/common/ustrenum.h b/icuSources/common/ustrenum.h index ba3a135f..21b16831 100644 --- a/icuSources/common/ustrenum.h +++ b/icuSources/common/ustrenum.h @@ -1,6 +1,6 @@ /* ********************************************************************** -* Copyright (c) 2002, International Business Machines +* Copyright (c) 2002-2009, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** * Author: Alan Liu @@ -15,13 +15,76 @@ #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). + * 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_openStringEnumeration(StringEnumeration* adopted, UErrorCode* ec); +uenum_openCharStringsEnumeration(const char* const* strings, int32_t count, + UErrorCode* ec); + +//---------------------------------------------------------------------- +U_NAMESPACE_BEGIN + +/** + * 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 U_EXPORT2 getStaticClassID(); + +private: + UEnumeration *uenum; // owned +}; + +U_NAMESPACE_END -/* _USTRENUM_H_ */ #endif -/*eof*/ +