| /* |
| ******************************************************************************* |
| * |
| * Copyright (C) 2002-2006, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************* |
| * file name: uenumimp.h |
| * encoding: US-ASCII |
| * tab size: 8 (not used) |
| * indentation:2 |
| * |
| * created on: 2002jul08 |
| * created by: Vladimir Weinstein |
| */ |
| |
| #ifndef __UENUMIMP_H |
| #define __UENUMIMP_H |
| |
| #include "unicode/uenum.h" |
| |
| U_CDECL_BEGIN |
| |
| /** |
| * following are the type declarations for |
| * implementations of APIs. If any of these |
| * functions are NULL, U_UNSUPPORTED_ERROR |
| * is returned. If close is NULL, the enumeration |
| * object is going to be released. |
| * Initial error checking is done in the body |
| * of API function, so the implementations |
| * need not to check the initial error condition. |
| */ |
| |
| /** |
| * Function type declaration for uenum_close(). |
| * |
| * This function should cleanup the enumerator object |
| * |
| * @param en enumeration to be closed |
| */ |
| typedef void U_CALLCONV |
| UEnumClose(UEnumeration *en); |
| |
| /** |
| * Function type declaration for uenum_count(). |
| * |
| * This function should count the number of elements |
| * in this enumeration |
| * |
| * @param en enumeration to be counted |
| * @param status pointer to UErrorCode variable |
| * @return number of elements in enumeration |
| */ |
| typedef int32_t U_CALLCONV |
| UEnumCount(UEnumeration *en, UErrorCode *status); |
| |
| /** |
| * Function type declaration for uenum_unext(). |
| * |
| * This function returns the next element as a UChar *, |
| * or NULL after all elements haven been enumerated. |
| * |
| * @param en enumeration |
| * @param resultLength pointer to result length |
| * @param status pointer to UErrorCode variable |
| * @return next element as UChar *, |
| * or NULL after all elements haven been enumerated |
| */ |
| typedef const UChar* U_CALLCONV |
| UEnumUNext(UEnumeration* en, |
| int32_t* resultLength, |
| UErrorCode* status); |
| |
| /** |
| * Function type declaration for uenum_next(). |
| * |
| * This function returns the next element as a char *, |
| * or NULL after all elements haven been enumerated. |
| * |
| * @param en enumeration |
| * @param resultLength pointer to result length |
| * @param status pointer to UErrorCode variable |
| * @return next element as char *, |
| * or NULL after all elements haven been enumerated |
| */ |
| typedef const char* U_CALLCONV |
| UEnumNext(UEnumeration* en, |
| int32_t* resultLength, |
| UErrorCode* status); |
| |
| /** |
| * Function type declaration for uenum_reset(). |
| * |
| * This function should reset the enumeration |
| * object |
| * |
| * @param en enumeration |
| * @param status pointer to UErrorCode variable |
| */ |
| typedef void U_CALLCONV |
| UEnumReset(UEnumeration* en, |
| UErrorCode* status); |
| |
| |
| struct UEnumeration { |
| /* baseContext. For the base class only. Don't touch! */ |
| void *baseContext; |
| |
| /* context. Use it for what you need */ |
| void *context; |
| |
| /** |
| * these are functions that will |
| * be used for APIs |
| */ |
| /* called from uenum_close */ |
| UEnumClose *close; |
| /* called from uenum_count */ |
| UEnumCount *count; |
| /* called from uenum_unext */ |
| UEnumUNext *uNext; |
| /* called from uenum_next */ |
| UEnumNext *next; |
| /* called from uenum_reset */ |
| UEnumReset *reset; |
| }; |
| |
| U_CDECL_END |
| |
| /* This is the default implementation for uenum_unext(). |
| * It automatically converts the char * string to UChar *. |
| * Don't call this directly. This is called internally by uenum_unext |
| * when a UEnumeration is defined with 'uNext' pointing to this |
| * function. |
| */ |
| U_CAPI const UChar* U_EXPORT2 |
| uenum_unextDefault(UEnumeration* en, |
| int32_t* resultLength, |
| UErrorCode* status); |
| |
| /* This is the default implementation for uenum_next(). |
| * It automatically converts the UChar * string to char *. |
| * Don't call this directly. This is called internally by uenum_next |
| * when a UEnumeration is defined with 'next' pointing to this |
| * function. |
| */ |
| U_CAPI const char* U_EXPORT2 |
| uenum_nextDefault(UEnumeration* en, |
| int32_t* resultLength, |
| UErrorCode* status); |
| |
| #endif |