OLD | NEW |
(Empty) | |
| 1 /* |
| 2 ******************************************************************************* |
| 3 * |
| 4 * Copyright (C) 2002-2006, International Business Machines |
| 5 * Corporation and others. All Rights Reserved. |
| 6 * |
| 7 ******************************************************************************* |
| 8 * file name: uenumimp.h |
| 9 * encoding: US-ASCII |
| 10 * tab size: 8 (not used) |
| 11 * indentation:2 |
| 12 * |
| 13 * created on: 2002jul08 |
| 14 * created by: Vladimir Weinstein |
| 15 */ |
| 16 |
| 17 #ifndef __UENUMIMP_H |
| 18 #define __UENUMIMP_H |
| 19 |
| 20 #include "unicode/uenum.h" |
| 21 |
| 22 U_CDECL_BEGIN |
| 23 |
| 24 /** |
| 25 * following are the type declarations for |
| 26 * implementations of APIs. If any of these |
| 27 * functions are NULL, U_UNSUPPORTED_ERROR |
| 28 * is returned. If close is NULL, the enumeration |
| 29 * object is going to be released. |
| 30 * Initial error checking is done in the body |
| 31 * of API function, so the implementations |
| 32 * need not to check the initial error condition. |
| 33 */ |
| 34 |
| 35 /** |
| 36 * Function type declaration for uenum_close(). |
| 37 * |
| 38 * This function should cleanup the enumerator object |
| 39 * |
| 40 * @param en enumeration to be closed |
| 41 */ |
| 42 typedef void U_CALLCONV |
| 43 UEnumClose(UEnumeration *en); |
| 44 |
| 45 /** |
| 46 * Function type declaration for uenum_count(). |
| 47 * |
| 48 * This function should count the number of elements |
| 49 * in this enumeration |
| 50 * |
| 51 * @param en enumeration to be counted |
| 52 * @param status pointer to UErrorCode variable |
| 53 * @return number of elements in enumeration |
| 54 */ |
| 55 typedef int32_t U_CALLCONV |
| 56 UEnumCount(UEnumeration *en, UErrorCode *status); |
| 57 |
| 58 /** |
| 59 * Function type declaration for uenum_unext(). |
| 60 * |
| 61 * This function returns the next element as a UChar *, |
| 62 * or NULL after all elements haven been enumerated. |
| 63 * |
| 64 * @param en enumeration |
| 65 * @param resultLength pointer to result length |
| 66 * @param status pointer to UErrorCode variable |
| 67 * @return next element as UChar *, |
| 68 * or NULL after all elements haven been enumerated |
| 69 */ |
| 70 typedef const UChar* U_CALLCONV |
| 71 UEnumUNext(UEnumeration* en, |
| 72 int32_t* resultLength, |
| 73 UErrorCode* status); |
| 74 |
| 75 /** |
| 76 * Function type declaration for uenum_next(). |
| 77 * |
| 78 * This function returns the next element as a char *, |
| 79 * or NULL after all elements haven been enumerated. |
| 80 * |
| 81 * @param en enumeration |
| 82 * @param resultLength pointer to result length |
| 83 * @param status pointer to UErrorCode variable |
| 84 * @return next element as char *, |
| 85 * or NULL after all elements haven been enumerated |
| 86 */ |
| 87 typedef const char* U_CALLCONV |
| 88 UEnumNext(UEnumeration* en, |
| 89 int32_t* resultLength, |
| 90 UErrorCode* status); |
| 91 |
| 92 /** |
| 93 * Function type declaration for uenum_reset(). |
| 94 * |
| 95 * This function should reset the enumeration |
| 96 * object |
| 97 * |
| 98 * @param en enumeration |
| 99 * @param status pointer to UErrorCode variable |
| 100 */ |
| 101 typedef void U_CALLCONV |
| 102 UEnumReset(UEnumeration* en, |
| 103 UErrorCode* status); |
| 104 |
| 105 |
| 106 struct UEnumeration { |
| 107 /* baseContext. For the base class only. Don't touch! */ |
| 108 void *baseContext; |
| 109 |
| 110 /* context. Use it for what you need */ |
| 111 void *context; |
| 112 |
| 113 /** |
| 114 * these are functions that will |
| 115 * be used for APIs |
| 116 */ |
| 117 /* called from uenum_close */ |
| 118 UEnumClose *close; |
| 119 /* called from uenum_count */ |
| 120 UEnumCount *count; |
| 121 /* called from uenum_unext */ |
| 122 UEnumUNext *uNext; |
| 123 /* called from uenum_next */ |
| 124 UEnumNext *next; |
| 125 /* called from uenum_reset */ |
| 126 UEnumReset *reset; |
| 127 }; |
| 128 |
| 129 U_CDECL_END |
| 130 |
| 131 /* This is the default implementation for uenum_unext(). |
| 132 * It automatically converts the char * string to UChar *. |
| 133 * Don't call this directly. This is called internally by uenum_unext |
| 134 * when a UEnumeration is defined with 'uNext' pointing to this |
| 135 * function. |
| 136 */ |
| 137 U_CAPI const UChar* U_EXPORT2 |
| 138 uenum_unextDefault(UEnumeration* en, |
| 139 int32_t* resultLength, |
| 140 UErrorCode* status); |
| 141 |
| 142 /* This is the default implementation for uenum_next(). |
| 143 * It automatically converts the UChar * string to char *. |
| 144 * Don't call this directly. This is called internally by uenum_next |
| 145 * when a UEnumeration is defined with 'next' pointing to this |
| 146 * function. |
| 147 */ |
| 148 U_CAPI const char* U_EXPORT2 |
| 149 uenum_nextDefault(UEnumeration* en, |
| 150 int32_t* resultLength, |
| 151 UErrorCode* status); |
| 152 |
| 153 #endif |
OLD | NEW |