]>
Commit | Line | Data |
---|---|---|
729e4ab9 A |
1 | /******************************************************************** |
2 | * COPYRIGHT: | |
4388f060 | 3 | * Copyright (c) 2008-2011, International Business Machines Corporation and |
729e4ab9 A |
4 | * others. All Rights Reserved. |
5 | ********************************************************************/ | |
6 | // | |
7 | // file: regextxt.cpp | |
8 | // | |
9 | // This file contains utility code for supporting UText in the regular expression engine. | |
10 | // | |
11 | ||
4388f060 | 12 | #include "unicode/utf.h" |
729e4ab9 A |
13 | #include "regextxt.h" |
14 | ||
15 | U_NAMESPACE_BEGIN | |
16 | ||
17 | U_CFUNC UChar U_CALLCONV | |
18 | uregex_utext_unescape_charAt(int32_t offset, void *ct) { | |
19 | struct URegexUTextUnescapeCharContext *context = (struct URegexUTextUnescapeCharContext *)ct; | |
20 | UChar32 c; | |
21 | if (offset == context->lastOffset + 1) { | |
22 | c = UTEXT_NEXT32(context->text); | |
23 | context->lastOffset++; | |
24 | } else if (offset == context->lastOffset) { | |
25 | c = UTEXT_PREVIOUS32(context->text); | |
26 | UTEXT_NEXT32(context->text); | |
27 | } else { | |
28 | utext_moveIndex32(context->text, offset - context->lastOffset - 1); | |
29 | c = UTEXT_NEXT32(context->text); | |
30 | context->lastOffset = offset; | |
31 | } | |
4388f060 | 32 | |
729e4ab9 A |
33 | // !!!: Doesn't handle characters outside BMP |
34 | if (U_IS_BMP(c)) { | |
35 | return (UChar)c; | |
36 | } else { | |
37 | return 0; | |
38 | } | |
39 | } | |
40 | ||
41 | U_CFUNC UChar U_CALLCONV | |
42 | uregex_ucstr_unescape_charAt(int32_t offset, void *context) { | |
43 | return ((UChar *)context)[offset]; | |
44 | } | |
45 | ||
46 | U_NAMESPACE_END |