00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __UITER_H__
00018 #define __UITER_H__
00019
00027 #include "unicode/utypes.h"
00028 #ifdef XP_CPLUSPLUS
00029 # include "unicode/chariter.h"
00030 # include "unicode/rep.h"
00031 #endif
00032
00033 U_CDECL_BEGIN
00034
00035 struct UCharIterator;
00036 typedef struct UCharIterator UCharIterator;
00037
00044 enum UCharIteratorOrigin {
00045 UITER_START, UITER_CURRENT, UITER_LIMIT
00046 };
00047 typedef enum UCharIteratorOrigin UCharIteratorOrigin;
00048
00063 typedef int32_t U_CALLCONV
00064 UCharIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin);
00065
00083 typedef int32_t U_CALLCONV
00084 UCharIteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin);
00085
00098 typedef UBool U_CALLCONV
00099 UCharIteratorHasNext(UCharIterator *iter);
00100
00112 typedef UBool U_CALLCONV
00113 UCharIteratorHasPrevious(UCharIterator *iter);
00114
00127 typedef int32_t U_CALLCONV
00128 UCharIteratorCurrent(UCharIterator *iter);
00129
00143 typedef int32_t U_CALLCONV
00144 UCharIteratorNext(UCharIterator *iter);
00145
00159 typedef int32_t U_CALLCONV
00160 UCharIteratorPrevious(UCharIterator *iter);
00161
00173 typedef int32_t U_CALLCONV
00174 UCharIteratorReserved(UCharIterator *iter, int32_t something);
00175
00176
00198 struct UCharIterator {
00203 const void *context;
00204
00209 int32_t length;
00210
00215 int32_t start;
00216
00221 int32_t index;
00222
00227 int32_t limit;
00228
00232 int32_t reservedField;
00233
00240 UCharIteratorGetIndex *getIndex;
00241
00250 UCharIteratorMove *move;
00251
00258 UCharIteratorHasNext *hasNext;
00259
00265 UCharIteratorHasPrevious *hasPrevious;
00266
00273 UCharIteratorCurrent *current;
00274
00282 UCharIteratorNext *next;
00283
00291 UCharIteratorPrevious *previous;
00292
00298 UCharIteratorReserved *reservedFn;
00299 };
00300
00319 U_CAPI int32_t U_EXPORT2
00320 uiter_current32(UCharIterator *iter);
00321
00336 U_CAPI int32_t U_EXPORT2
00337 uiter_next32(UCharIterator *iter);
00338
00353 U_CAPI int32_t U_EXPORT2
00354 uiter_previous32(UCharIterator *iter);
00355
00375 U_CAPI void U_EXPORT2
00376 uiter_setString(UCharIterator *iter, const UChar *s, int32_t length);
00377
00378 #ifdef XP_CPLUSPLUS
00379
00397 U_CAPI void U_EXPORT2
00398 uiter_setCharacterIterator(UCharIterator *iter, CharacterIterator *charIter);
00399
00419 U_CAPI void U_EXPORT2
00420 uiter_setReplaceable(UCharIterator *iter, const Replaceable *rep);
00421
00422 #endif
00423
00424 U_CDECL_END
00425
00426 #endif