16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2002-2013, International Business Machines 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* file name: uenum.h 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* encoding: US-ASCII 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* tab size: 8 (not used) 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* indentation:2 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created on: 2002jul08 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created by: Vladimir Weinstein 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __UENUM_H 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define __UENUM_H 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/localpointer.h" 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_SHOW_CPLUSPLUS_API 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/strenum.h" 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \file 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \brief C API: String Enumeration 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * An enumeration object. 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For usage in C programs. 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.2 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct UEnumeration; 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** structure representing an enumeration object instance @stable ICU 2.2 */ 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct UEnumeration UEnumeration; 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Disposes of resources in use by the iterator. If en is NULL, 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * does nothing. After this call, any char* or UChar* pointer 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * returned by uenum_unext() or uenum_next() is invalid. 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param en UEnumeration structure pointer 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.2 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_close(UEnumeration* en); 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_SHOW_CPLUSPLUS_API 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \class LocalUEnumerationPointer 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * "Smart pointer" class, closes a UEnumeration via uenum_close(). 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For most methods see the LocalPointerBase base class. 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see LocalPointerBase 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see LocalPointer 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.4 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_DEFINE_LOCAL_OPEN_POINTER(LocalUEnumerationPointer, UEnumeration, uenum_close); 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the number of elements that the iterator traverses. If 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the iterator is out-of-sync with its service, status is set to 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_ENUM_OUT_OF_SYNC_ERROR. 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This is a convenience function. It can end up being very 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * expensive as all the items might have to be pre-fetched (depending 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * on the type of data being traversed). Use with caution and only 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * when necessary. 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param en UEnumeration structure pointer 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status error code, can be U_ENUM_OUT_OF_SYNC_ERROR if the 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * iterator is out of sync. 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return number of elements in the iterator 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.2 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE int32_t U_EXPORT2 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_count(UEnumeration* en, UErrorCode* status); 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the next element in the iterator's list. If there are 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * no more elements, returns NULL. If the iterator is out-of-sync 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * with its service, status is set to U_ENUM_OUT_OF_SYNC_ERROR and 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * NULL is returned. If the native service string is a char* string, 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * it is converted to UChar* with the invariant converter. 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The result is terminated by (UChar)0. 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param en the iterator object 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength pointer to receive the length of the result 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (not including the terminating \\0). 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If the pointer is NULL it is ignored. 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the error code, set to U_ENUM_OUT_OF_SYNC_ERROR if 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the iterator is out of sync with its service. 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a pointer to the string. The string will be 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * zero-terminated. The return pointer is owned by this iterator 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and must not be deleted by the caller. The pointer is valid 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * until the next call to any uenum_... method, including 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * uenum_next() or uenum_unext(). When all strings have been 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * traversed, returns NULL. 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.2 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE const UChar* U_EXPORT2 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_unext(UEnumeration* en, 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* resultLength, 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the next element in the iterator's list. If there are 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * no more elements, returns NULL. If the iterator is out-of-sync 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * with its service, status is set to U_ENUM_OUT_OF_SYNC_ERROR and 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * NULL is returned. If the native service string is a UChar* 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * string, it is converted to char* with the invariant converter. 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The result is terminated by (char)0. If the conversion fails 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (because a character cannot be converted) then status is set to 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_INVARIANT_CONVERSION_ERROR and the return value is undefined 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (but non-NULL). 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param en the iterator object 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param resultLength pointer to receive the length of the result 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (not including the terminating \\0). 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If the pointer is NULL it is ignored. 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the error code, set to U_ENUM_OUT_OF_SYNC_ERROR if 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the iterator is out of sync with its service. Set to 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_INVARIANT_CONVERSION_ERROR if the underlying native string is 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UChar* and conversion to char* with the invariant converter 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * fails. This error pertains only to current string, so iteration 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * might be able to continue successfully. 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a pointer to the string. The string will be 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * zero-terminated. The return pointer is owned by this iterator 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and must not be deleted by the caller. The pointer is valid 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * until the next call to any uenum_... method, including 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * uenum_next() or uenum_unext(). When all strings have been 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * traversed, returns NULL. 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.2 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE const char* U_EXPORT2 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_next(UEnumeration* en, 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* resultLength, 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Resets the iterator to the current list of service IDs. This 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * re-establishes sync with the service and rewinds the iterator 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to start at the first element. 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param en the iterator object 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the error code, set to U_ENUM_OUT_OF_SYNC_ERROR if 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the iterator is out of sync with its service. 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.2 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE void U_EXPORT2 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_reset(UEnumeration* en, UErrorCode* status); 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_SHOW_CPLUSPLUS_API 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Given a StringEnumeration, wrap it in a UEnumeration. The 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * StringEnumeration is adopted; after this call, the caller must not 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * delete it (regardless of error status). 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param adopted the C++ StringEnumeration to be wrapped in a UEnumeration. 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec the error code. 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a UEnumeration wrapping the adopted StringEnumeration. 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 4.2 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UEnumeration* U_EXPORT2 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec); 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Given an array of const UChar* strings, return a UEnumeration. String pointers from 0..count-1 must not be null. 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Do not free or modify either the string array or the characters it points to until this object has been destroyed with uenum_close. 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \snippet test/cintltst/uenumtst.c uenum_openUCharStringsEnumeration 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param strings array of const UChar* strings (each null terminated). All storage is owned by the caller. 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param count length of the array 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec error code 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the new UEnumeration object. Caller is responsible for calling uenum_close to free memory. 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see uenum_close 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 50 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UEnumeration* U_EXPORT2 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count, 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* Note: next function is not hidden as draft, as it is used internally (it was formerly an internal function). */ 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Given an array of const char* strings (invariant chars only), return a UEnumeration. String pointers from 0..count-1 must not be null. 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Do not free or modify either the string array or the characters it points to until this object has been destroyed with uenum_close. 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \snippet test/cintltst/uenumtst.c uenum_openCharStringsEnumeration 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param strings array of char* strings (each null terminated). All storage is owned by the caller. 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param count length of the array 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param ec error code 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the new UEnumeration object. Caller is responsible for calling uenum_close to free memory 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see uenum_close 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 50 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_STABLE UEnumeration* U_EXPORT2 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguenum_openCharStringsEnumeration(const char* const strings[], int32_t count, 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* ec); 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 207