00001
00002
00003
00004
00005
00006
00007
00008 #ifndef UBRK_H
00009 #define UBRK_H
00010
00011 #include "unicode/utypes.h"
00012 #include "unicode/uloc.h"
00013 #include "unicode/utext.h"
00014
00019 #ifndef UBRK_TYPEDEF_UBREAK_ITERATOR
00020 # define UBRK_TYPEDEF_UBREAK_ITERATOR
00021
00025 typedef void UBreakIterator;
00026 #endif
00027
00028 #if !UCONFIG_NO_BREAK_ITERATION
00029
00030 #include "unicode/parseerr.h"
00031
00086 typedef enum UBreakIteratorType {
00088 UBRK_CHARACTER = 0,
00090 UBRK_WORD = 1,
00092 UBRK_LINE = 2,
00094 UBRK_SENTENCE = 3,
00095
00096 #ifndef U_HIDE_DEPRECATED_API
00097
00105 UBRK_TITLE = 4,
00106 #endif
00107 UBRK_COUNT = 5
00108 } UBreakIteratorType;
00109
00113 #define UBRK_DONE ((int32_t) -1)
00114
00115
00124 typedef enum UWordBreak {
00127 UBRK_WORD_NONE = 0,
00129 UBRK_WORD_NONE_LIMIT = 100,
00131 UBRK_WORD_NUMBER = 100,
00133 UBRK_WORD_NUMBER_LIMIT = 200,
00136 UBRK_WORD_LETTER = 200,
00138 UBRK_WORD_LETTER_LIMIT = 300,
00140 UBRK_WORD_KANA = 300,
00142 UBRK_WORD_KANA_LIMIT = 400,
00144 UBRK_WORD_IDEO = 400,
00146 UBRK_WORD_IDEO_LIMIT = 500
00147 } UWordBreak;
00148
00157 typedef enum ULineBreakTag {
00160 UBRK_LINE_SOFT = 0,
00162 UBRK_LINE_SOFT_LIMIT = 100,
00164 UBRK_LINE_HARD = 100,
00166 UBRK_LINE_HARD_LIMIT = 200
00167 } ULineBreakTag;
00168
00169
00170
00179 typedef enum USentenceBreakTag {
00184 UBRK_SENTENCE_TERM = 0,
00186 UBRK_SENTENCE_TERM_LIMIT = 100,
00191 UBRK_SENTENCE_SEP = 100,
00193 UBRK_SENTENCE_SEP_LIMIT = 200
00195 } USentenceBreakTag;
00196
00197
00212 U_STABLE UBreakIterator* U_EXPORT2
00213 ubrk_open(UBreakIteratorType type,
00214 const char *locale,
00215 const UChar *text,
00216 int32_t textLength,
00217 UErrorCode *status);
00218
00234 U_STABLE UBreakIterator* U_EXPORT2
00235 ubrk_openRules(const UChar *rules,
00236 int32_t rulesLength,
00237 const UChar *text,
00238 int32_t textLength,
00239 UParseError *parseErr,
00240 UErrorCode *status);
00241
00258 U_STABLE UBreakIterator * U_EXPORT2
00259 ubrk_safeClone(
00260 const UBreakIterator *bi,
00261 void *stackBuffer,
00262 int32_t *pBufferSize,
00263 UErrorCode *status);
00264
00269 #define U_BRK_SAFECLONE_BUFFERSIZE 512
00270
00277 U_STABLE void U_EXPORT2
00278 ubrk_close(UBreakIterator *bi);
00279
00288 U_STABLE void U_EXPORT2
00289 ubrk_setText(UBreakIterator* bi,
00290 const UChar* text,
00291 int32_t textLength,
00292 UErrorCode* status);
00293
00294
00306 U_STABLE void U_EXPORT2
00307 ubrk_setUText(UBreakIterator* bi,
00308 UText* text,
00309 UErrorCode* status);
00310
00311
00312
00321 U_STABLE int32_t U_EXPORT2
00322 ubrk_current(const UBreakIterator *bi);
00323
00333 U_STABLE int32_t U_EXPORT2
00334 ubrk_next(UBreakIterator *bi);
00335
00345 U_STABLE int32_t U_EXPORT2
00346 ubrk_previous(UBreakIterator *bi);
00347
00356 U_STABLE int32_t U_EXPORT2
00357 ubrk_first(UBreakIterator *bi);
00358
00369 U_STABLE int32_t U_EXPORT2
00370 ubrk_last(UBreakIterator *bi);
00371
00381 U_STABLE int32_t U_EXPORT2
00382 ubrk_preceding(UBreakIterator *bi,
00383 int32_t offset);
00384
00394 U_STABLE int32_t U_EXPORT2
00395 ubrk_following(UBreakIterator *bi,
00396 int32_t offset);
00397
00407 U_STABLE const char* U_EXPORT2
00408 ubrk_getAvailable(int32_t index);
00409
00418 U_STABLE int32_t U_EXPORT2
00419 ubrk_countAvailable(void);
00420
00421
00431 U_STABLE UBool U_EXPORT2
00432 ubrk_isBoundary(UBreakIterator *bi, int32_t offset);
00433
00443 U_STABLE int32_t U_EXPORT2
00444 ubrk_getRuleStatus(UBreakIterator *bi);
00445
00463 U_STABLE int32_t U_EXPORT2
00464 ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status);
00465
00475 U_STABLE const char* U_EXPORT2
00476 ubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status);
00477
00478
00479 #endif
00480
00481 #endif