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 && !UCONFIG_NO_BREAK_ITERATION
00015
00016 #include "unicode/localpointer.h"
00017 #include "unicode/ucol.h"
00018 #include "unicode/ucoleitr.h"
00019 #include "unicode/ubrk.h"
00020
00140 #define USEARCH_DONE -1
00141
00146 struct UStringSearch;
00151 typedef struct UStringSearch UStringSearch;
00152
00156 typedef enum {
00158 USEARCH_OVERLAP,
00163 USEARCH_CANONICAL_MATCH,
00169 USEARCH_ELEMENT_COMPARISON,
00170
00171 USEARCH_ATTRIBUTE_COUNT
00172 } USearchAttribute;
00173
00177 typedef enum {
00179 USEARCH_DEFAULT = -1,
00181 USEARCH_OFF,
00183 USEARCH_ON,
00190 USEARCH_STANDARD_ELEMENT_COMPARISON,
00204 USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD,
00218 USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD,
00219
00220 USEARCH_ATTRIBUTE_VALUE_COUNT
00221 } USearchAttributeValue;
00222
00223
00224
00247 U_STABLE UStringSearch * U_EXPORT2 usearch_open(const UChar *pattern,
00248 int32_t patternlength,
00249 const UChar *text,
00250 int32_t textlength,
00251 const char *locale,
00252 UBreakIterator *breakiter,
00253 UErrorCode *status);
00254
00279 U_STABLE UStringSearch * U_EXPORT2 usearch_openFromCollator(
00280 const UChar *pattern,
00281 int32_t patternlength,
00282 const UChar *text,
00283 int32_t textlength,
00284 const UCollator *collator,
00285 UBreakIterator *breakiter,
00286 UErrorCode *status);
00287
00294 U_STABLE void U_EXPORT2 usearch_close(UStringSearch *searchiter);
00295
00296 #if U_SHOW_CPLUSPLUS_API
00297
00298 U_NAMESPACE_BEGIN
00299
00309 U_DEFINE_LOCAL_OPEN_POINTER(LocalUStringSearchPointer, UStringSearch, usearch_close);
00310
00311 U_NAMESPACE_END
00312
00313 #endif
00314
00315
00316
00332 U_STABLE void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch,
00333 int32_t position,
00334 UErrorCode *status);
00335
00344 U_STABLE int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
00345
00357 U_STABLE void U_EXPORT2 usearch_setAttribute(UStringSearch *strsrch,
00358 USearchAttribute attribute,
00359 USearchAttributeValue value,
00360 UErrorCode *status);
00361
00370 U_STABLE USearchAttributeValue U_EXPORT2 usearch_getAttribute(
00371 const UStringSearch *strsrch,
00372 USearchAttribute attribute);
00373
00393 U_STABLE int32_t U_EXPORT2 usearch_getMatchedStart(
00394 const UStringSearch *strsrch);
00395
00413 U_STABLE int32_t U_EXPORT2 usearch_getMatchedLength(
00414 const UStringSearch *strsrch);
00415
00441 U_STABLE int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch,
00442 UChar *result,
00443 int32_t resultCapacity,
00444 UErrorCode *status);
00445
00446 #if !UCONFIG_NO_BREAK_ITERATION
00447
00463 U_STABLE void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch,
00464 UBreakIterator *breakiter,
00465 UErrorCode *status);
00466
00478 U_STABLE const UBreakIterator * U_EXPORT2 usearch_getBreakIterator(
00479 const UStringSearch *strsrch);
00480
00481 #endif
00482
00496 U_STABLE void U_EXPORT2 usearch_setText( UStringSearch *strsrch,
00497 const UChar *text,
00498 int32_t textlength,
00499 UErrorCode *status);
00500
00509 U_STABLE const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch,
00510 int32_t *length);
00511
00522 U_STABLE UCollator * U_EXPORT2 usearch_getCollator(
00523 const UStringSearch *strsrch);
00524
00535 U_STABLE void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch,
00536 const UCollator *collator,
00537 UErrorCode *status);
00538
00551 U_STABLE void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch,
00552 const UChar *pattern,
00553 int32_t patternlength,
00554 UErrorCode *status);
00555
00564 U_STABLE const UChar * U_EXPORT2 usearch_getPattern(
00565 const UStringSearch *strsrch,
00566 int32_t *length);
00567
00568
00569
00585 U_STABLE int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch,
00586 UErrorCode *status);
00587
00609 U_STABLE int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch,
00610 int32_t position,
00611 UErrorCode *status);
00612
00628 U_STABLE int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch,
00629 UErrorCode *status);
00630
00651 U_STABLE int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch,
00652 int32_t position,
00653 UErrorCode *status);
00654
00672 U_STABLE int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch,
00673 UErrorCode *status);
00674
00692 U_STABLE int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch,
00693 UErrorCode *status);
00694
00705 U_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch);
00706
00761 U_INTERNAL UBool U_EXPORT2 usearch_search(UStringSearch *strsrch,
00762 int32_t startIdx,
00763 int32_t *matchStart,
00764 int32_t *matchLimit,
00765 UErrorCode *status);
00766
00821 U_INTERNAL UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch,
00822 int32_t startIdx,
00823 int32_t *matchStart,
00824 int32_t *matchLimit,
00825 UErrorCode *status);
00826
00827 #endif
00828
00829 #endif