00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00023 #ifndef UREGEX_H
00024 #define UREGEX_H
00025
00026 #include "unicode/utext.h"
00027 #include "unicode/utypes.h"
00028
00029 #if !UCONFIG_NO_REGULAR_EXPRESSIONS
00030
00031 #include "unicode/localpointer.h"
00032 #include "unicode/parseerr.h"
00033
00034 struct URegularExpression;
00040 typedef struct URegularExpression URegularExpression;
00041
00042
00047 typedef enum URegexpFlag{
00048
00049 #ifndef U_HIDE_DRAFT_API
00050
00053 UREGEX_CANON_EQ = 128,
00054 #endif
00055
00056 UREGEX_CASE_INSENSITIVE = 2,
00057
00059 UREGEX_COMMENTS = 4,
00060
00063 UREGEX_DOTALL = 32,
00064
00076 UREGEX_LITERAL = 16,
00077
00082 UREGEX_MULTILINE = 8,
00083
00089 UREGEX_UNIX_LINES = 1,
00090
00098 UREGEX_UWORD = 256,
00099
00107 UREGEX_ERROR_ON_UNKNOWN_ESCAPES = 512
00108
00109 } URegexpFlag;
00110
00133 U_STABLE URegularExpression * U_EXPORT2
00134 uregex_open( const UChar *pattern,
00135 int32_t patternLength,
00136 uint32_t flags,
00137 UParseError *pe,
00138 UErrorCode *status);
00139
00163 U_DRAFT URegularExpression * U_EXPORT2
00164 uregex_openUText(UText *pattern,
00165 uint32_t flags,
00166 UParseError *pe,
00167 UErrorCode *status);
00168
00192 #if !UCONFIG_NO_CONVERSION
00193 U_STABLE URegularExpression * U_EXPORT2
00194 uregex_openC( const char *pattern,
00195 uint32_t flags,
00196 UParseError *pe,
00197 UErrorCode *status);
00198 #endif
00199
00200
00201
00209 U_STABLE void U_EXPORT2
00210 uregex_close(URegularExpression *regexp);
00211
00212 #if U_SHOW_CPLUSPLUS_API
00213
00214 U_NAMESPACE_BEGIN
00215
00225 U_DEFINE_LOCAL_OPEN_POINTER(LocalURegularExpressionPointer, URegularExpression, uregex_close);
00226
00227 U_NAMESPACE_END
00228
00229 #endif
00230
00249 U_STABLE URegularExpression * U_EXPORT2
00250 uregex_clone(const URegularExpression *regexp, UErrorCode *status);
00251
00269 U_STABLE const UChar * U_EXPORT2
00270 uregex_pattern(const URegularExpression *regexp,
00271 int32_t *patLength,
00272 UErrorCode *status);
00273
00285 U_DRAFT UText * U_EXPORT2
00286 uregex_patternUText(const URegularExpression *regexp,
00287 UErrorCode *status);
00288
00289
00298 U_STABLE int32_t U_EXPORT2
00299 uregex_flags(const URegularExpression *regexp,
00300 UErrorCode *status);
00301
00302
00323 U_STABLE void U_EXPORT2
00324 uregex_setText(URegularExpression *regexp,
00325 const UChar *text,
00326 int32_t textLength,
00327 UErrorCode *status);
00328
00329
00346 U_DRAFT void U_EXPORT2
00347 uregex_setUText(URegularExpression *regexp,
00348 UText *text,
00349 UErrorCode *status);
00350
00371 U_STABLE const UChar * U_EXPORT2
00372 uregex_getText(URegularExpression *regexp,
00373 int32_t *textLength,
00374 UErrorCode *status);
00375
00376
00393 U_DRAFT UText * U_EXPORT2
00394 uregex_getUText(URegularExpression *regexp,
00395 UText *dest,
00396 UErrorCode *status);
00397
00418 U_STABLE UBool U_EXPORT2
00419 uregex_matches(URegularExpression *regexp,
00420 int32_t startIndex,
00421 UErrorCode *status);
00422
00427 U_DRAFT UBool U_EXPORT2
00428 uregex_matches64(URegularExpression *regexp,
00429 int64_t startIndex,
00430 UErrorCode *status);
00431
00455 U_STABLE UBool U_EXPORT2
00456 uregex_lookingAt(URegularExpression *regexp,
00457 int32_t startIndex,
00458 UErrorCode *status);
00459
00464 U_DRAFT UBool U_EXPORT2
00465 uregex_lookingAt64(URegularExpression *regexp,
00466 int64_t startIndex,
00467 UErrorCode *status);
00468
00488 U_STABLE UBool U_EXPORT2
00489 uregex_find(URegularExpression *regexp,
00490 int32_t startIndex,
00491 UErrorCode *status);
00492
00497 U_DRAFT UBool U_EXPORT2
00498 uregex_find64(URegularExpression *regexp,
00499 int64_t startIndex,
00500 UErrorCode *status);
00501
00515 U_STABLE UBool U_EXPORT2
00516 uregex_findNext(URegularExpression *regexp,
00517 UErrorCode *status);
00518
00526 U_STABLE int32_t U_EXPORT2
00527 uregex_groupCount(URegularExpression *regexp,
00528 UErrorCode *status);
00529
00546 U_STABLE int32_t U_EXPORT2
00547 uregex_group(URegularExpression *regexp,
00548 int32_t groupNum,
00549 UChar *dest,
00550 int32_t destCapacity,
00551 UErrorCode *status);
00552
00553
00576 U_DRAFT UText * U_EXPORT2
00577 uregex_groupUText(URegularExpression *regexp,
00578 int32_t groupNum,
00579 UText *dest,
00580 int64_t *groupLength,
00581 UErrorCode *status);
00582
00583
00601 U_INTERNAL UText * U_EXPORT2
00602 uregex_groupUTextDeep(URegularExpression *regexp,
00603 int32_t groupNum,
00604 UText *dest,
00605 UErrorCode *status);
00606
00621 U_STABLE int32_t U_EXPORT2
00622 uregex_start(URegularExpression *regexp,
00623 int32_t groupNum,
00624 UErrorCode *status);
00625
00630 U_DRAFT int64_t U_EXPORT2
00631 uregex_start64(URegularExpression *regexp,
00632 int32_t groupNum,
00633 UErrorCode *status);
00634
00648 U_STABLE int32_t U_EXPORT2
00649 uregex_end(URegularExpression *regexp,
00650 int32_t groupNum,
00651 UErrorCode *status);
00652
00657 U_DRAFT int64_t U_EXPORT2
00658 uregex_end64(URegularExpression *regexp,
00659 int32_t groupNum,
00660 UErrorCode *status);
00661
00675 U_STABLE void U_EXPORT2
00676 uregex_reset(URegularExpression *regexp,
00677 int32_t index,
00678 UErrorCode *status);
00679
00684 U_DRAFT void U_EXPORT2
00685 uregex_reset64(URegularExpression *regexp,
00686 int64_t index,
00687 UErrorCode *status);
00688
00708 U_STABLE void U_EXPORT2
00709 uregex_setRegion(URegularExpression *regexp,
00710 int32_t regionStart,
00711 int32_t regionLimit,
00712 UErrorCode *status);
00713
00718 U_DRAFT void U_EXPORT2
00719 uregex_setRegion64(URegularExpression *regexp,
00720 int64_t regionStart,
00721 int64_t regionLimit,
00722 UErrorCode *status);
00723
00729 U_DRAFT void U_EXPORT2
00730 uregex_setRegionAndStart(URegularExpression *regexp,
00731 int64_t regionStart,
00732 int64_t regionLimit,
00733 int64_t startIndex,
00734 UErrorCode *status);
00735
00745 U_STABLE int32_t U_EXPORT2
00746 uregex_regionStart(const URegularExpression *regexp,
00747 UErrorCode *status);
00748
00753 U_DRAFT int64_t U_EXPORT2
00754 uregex_regionStart64(const URegularExpression *regexp,
00755 UErrorCode *status);
00756
00767 U_STABLE int32_t U_EXPORT2
00768 uregex_regionEnd(const URegularExpression *regexp,
00769 UErrorCode *status);
00770
00775 U_DRAFT int64_t U_EXPORT2
00776 uregex_regionEnd64(const URegularExpression *regexp,
00777 UErrorCode *status);
00778
00789 U_STABLE UBool U_EXPORT2
00790 uregex_hasTransparentBounds(const URegularExpression *regexp,
00791 UErrorCode *status);
00792
00793
00813 U_STABLE void U_EXPORT2
00814 uregex_useTransparentBounds(URegularExpression *regexp,
00815 UBool b,
00816 UErrorCode *status);
00817
00818
00828 U_STABLE UBool U_EXPORT2
00829 uregex_hasAnchoringBounds(const URegularExpression *regexp,
00830 UErrorCode *status);
00831
00832
00846 U_STABLE void U_EXPORT2
00847 uregex_useAnchoringBounds(URegularExpression *regexp,
00848 UBool b,
00849 UErrorCode *status);
00850
00861 U_STABLE UBool U_EXPORT2
00862 uregex_hitEnd(const URegularExpression *regexp,
00863 UErrorCode *status);
00864
00876 U_STABLE UBool U_EXPORT2
00877 uregex_requireEnd(const URegularExpression *regexp,
00878 UErrorCode *status);
00879
00880
00881
00882
00883
00908 U_STABLE int32_t U_EXPORT2
00909 uregex_replaceAll(URegularExpression *regexp,
00910 const UChar *replacementText,
00911 int32_t replacementLength,
00912 UChar *destBuf,
00913 int32_t destCapacity,
00914 UErrorCode *status);
00915
00937 U_DRAFT UText * U_EXPORT2
00938 uregex_replaceAllUText(URegularExpression *regexp,
00939 UText *replacement,
00940 UText *dest,
00941 UErrorCode *status);
00942
00967 U_STABLE int32_t U_EXPORT2
00968 uregex_replaceFirst(URegularExpression *regexp,
00969 const UChar *replacementText,
00970 int32_t replacementLength,
00971 UChar *destBuf,
00972 int32_t destCapacity,
00973 UErrorCode *status);
00974
00996 U_DRAFT UText * U_EXPORT2
00997 uregex_replaceFirstUText(URegularExpression *regexp,
00998 UText *replacement,
00999 UText *dest,
01000 UErrorCode *status);
01001
01002
01049 U_STABLE int32_t U_EXPORT2
01050 uregex_appendReplacement(URegularExpression *regexp,
01051 const UChar *replacementText,
01052 int32_t replacementLength,
01053 UChar **destBuf,
01054 int32_t *destCapacity,
01055 UErrorCode *status);
01056
01057
01080 U_DRAFT void U_EXPORT2
01081 uregex_appendReplacementUText(URegularExpression *regexp,
01082 UText *replacementText,
01083 UText *dest,
01084 UErrorCode *status);
01085
01086
01111 U_STABLE int32_t U_EXPORT2
01112 uregex_appendTail(URegularExpression *regexp,
01113 UChar **destBuf,
01114 int32_t *destCapacity,
01115 UErrorCode *status);
01116
01117
01133 U_DRAFT UText * U_EXPORT2
01134 uregex_appendTailUText(URegularExpression *regexp,
01135 UText *dest,
01136 UErrorCode *status);
01137
01138
01139
01194 U_STABLE int32_t U_EXPORT2
01195 uregex_split( URegularExpression *regexp,
01196 UChar *destBuf,
01197 int32_t destCapacity,
01198 int32_t *requiredCapacity,
01199 UChar *destFields[],
01200 int32_t destFieldsCapacity,
01201 UErrorCode *status);
01202
01203
01230 U_DRAFT int32_t U_EXPORT2
01231 uregex_splitUText(URegularExpression *regexp,
01232 UText *destFields[],
01233 int32_t destFieldsCapacity,
01234 UErrorCode *status);
01235
01236
01237
01238
01261 U_STABLE void U_EXPORT2
01262 uregex_setTimeLimit(URegularExpression *regexp,
01263 int32_t limit,
01264 UErrorCode *status);
01265
01275 U_STABLE int32_t U_EXPORT2
01276 uregex_getTimeLimit(const URegularExpression *regexp,
01277 UErrorCode *status);
01278
01299 U_STABLE void U_EXPORT2
01300 uregex_setStackLimit(URegularExpression *regexp,
01301 int32_t limit,
01302 UErrorCode *status);
01303
01311 U_STABLE int32_t U_EXPORT2
01312 uregex_getStackLimit(const URegularExpression *regexp,
01313 UErrorCode *status);
01314
01315
01334 U_CDECL_BEGIN
01335 typedef UBool U_CALLCONV URegexMatchCallback (
01336 const void *context,
01337 int32_t steps);
01338 U_CDECL_END
01339
01354 U_STABLE void U_EXPORT2
01355 uregex_setMatchCallback(URegularExpression *regexp,
01356 URegexMatchCallback *callback,
01357 const void *context,
01358 UErrorCode *status);
01359
01360
01372 U_STABLE void U_EXPORT2
01373 uregex_getMatchCallback(const URegularExpression *regexp,
01374 URegexMatchCallback **callback,
01375 const void **context,
01376 UErrorCode *status);
01377
01378
01409 U_CDECL_BEGIN
01410 typedef UBool U_CALLCONV URegexFindProgressCallback (
01411 const void *context,
01412 int64_t matchIndex);
01413 U_CDECL_END
01414
01426 U_DRAFT void U_EXPORT2
01427 uregex_setFindProgressCallback(URegularExpression *regexp,
01428 URegexFindProgressCallback *callback,
01429 const void *context,
01430 UErrorCode *status);
01431
01432
01444 U_DRAFT void U_EXPORT2
01445 uregex_getFindProgressCallback(const URegularExpression *regexp,
01446 URegexFindProgressCallback **callback,
01447 const void **context,
01448 UErrorCode *status);
01449
01450 #endif
01451 #endif