00001
00002
00003
00004
00005
00006
00007
00008
00009
#ifndef USEARCH_H
00010
#define USEARCH_H
00011
00012
#include "unicode/utypes.h"
00013
00014
#if !UCONFIG_NO_COLLATION
00015
00016
#include "unicode/ucol.h"
00017
#include "unicode/ucoleitr.h"
00018
#include "unicode/ubrk.h"
00019
00136
#define USEARCH_DONE -1
00137
00142
struct UStringSearch;
00147
typedef struct UStringSearch UStringSearch;
00148
00152
typedef enum {
00154
USEARCH_OVERLAP,
00159
USEARCH_CANONICAL_MATCH,
00160
USEARCH_ATTRIBUTE_COUNT
00161 }
USearchAttribute;
00162
00166
typedef enum {
00168
USEARCH_DEFAULT = -1,
00170
USEARCH_OFF,
00172 USEARCH_ON,
00173
USEARCH_ATTRIBUTE_VALUE_COUNT
00174 }
USearchAttributeValue;
00175
00176
00177
00200
U_STABLE UStringSearch *
U_EXPORT2 usearch_open(
const UChar *pattern,
00201 int32_t patternlength,
00202
const UChar *text,
00203 int32_t textlength,
00204
const char *locale,
00205 UBreakIterator *breakiter,
00206 UErrorCode *status);
00207
00232
U_STABLE UStringSearch *
U_EXPORT2 usearch_openFromCollator(
00233
const UChar *pattern,
00234 int32_t patternlength,
00235
const UChar *text,
00236 int32_t textlength,
00237
const UCollator *collator,
00238 UBreakIterator *breakiter,
00239 UErrorCode *status);
00240
00247
U_STABLE void U_EXPORT2 usearch_close(UStringSearch *searchiter);
00248
00249
00250
00266
U_STABLE void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch,
00267 int32_t position,
00268 UErrorCode *status);
00269
00278
U_STABLE int32_t U_EXPORT2 usearch_getOffset(
const UStringSearch *strsrch);
00279
00291
U_STABLE void U_EXPORT2 usearch_setAttribute(UStringSearch *strsrch,
00292 USearchAttribute attribute,
00293 USearchAttributeValue value,
00294 UErrorCode *status);
00295
00304
U_STABLE USearchAttributeValue U_EXPORT2 usearch_getAttribute(
00305
const UStringSearch *strsrch,
00306 USearchAttribute attribute);
00307
00327
U_STABLE int32_t U_EXPORT2 usearch_getMatchedStart(
00328
const UStringSearch *strsrch);
00329
00347
U_STABLE int32_t U_EXPORT2 usearch_getMatchedLength(
00348
const UStringSearch *strsrch);
00349
00375
U_STABLE int32_t U_EXPORT2 usearch_getMatchedText(
const UStringSearch *strsrch,
00376 UChar *result,
00377 int32_t resultCapacity,
00378 UErrorCode *status);
00379
00380
#if !UCONFIG_NO_BREAK_ITERATION
00381
00397
U_STABLE void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch,
00398 UBreakIterator *breakiter,
00399 UErrorCode *status);
00400
00412
U_STABLE const UBreakIterator *
U_EXPORT2 usearch_getBreakIterator(
00413
const UStringSearch *strsrch);
00414
00415
#endif
00416
00430
U_STABLE void U_EXPORT2 usearch_setText( UStringSearch *strsrch,
00431
const UChar *text,
00432 int32_t textlength,
00433 UErrorCode *status);
00434
00443
U_STABLE const UChar *
U_EXPORT2 usearch_getText(
const UStringSearch *strsrch,
00444 int32_t *length);
00445
00456
U_STABLE UCollator *
U_EXPORT2 usearch_getCollator(
00457
const UStringSearch *strsrch);
00458
00469
U_STABLE void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch,
00470
const UCollator *collator,
00471 UErrorCode *status);
00472
00485
U_STABLE void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch,
00486
const UChar *pattern,
00487 int32_t patternlength,
00488 UErrorCode *status);
00489
00498
U_STABLE const UChar *
U_EXPORT2 usearch_getPattern(
00499
const UStringSearch *strsrch,
00500 int32_t *length);
00501
00502
00503
00519
U_STABLE int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch,
00520 UErrorCode *status);
00521
00543
U_STABLE int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch,
00544 int32_t position,
00545 UErrorCode *status);
00546
00562
U_STABLE int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch,
00563 UErrorCode *status);
00564
00585
U_STABLE int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch,
00586 int32_t position,
00587 UErrorCode *status);
00588
00606
U_STABLE int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch,
00607 UErrorCode *status);
00608
00626
U_STABLE int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch,
00627 UErrorCode *status);
00628
00639
U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
00640
00641
#endif
00642
00643
#endif