]> git.saurik.com Git - apple/icu.git/blob - icuSources/i18n/regextxt.cpp
ICU-57131.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / regextxt.cpp
1 /********************************************************************
2 * COPYRIGHT:
3 * Copyright (c) 2008-2011, International Business Machines Corporation and
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
12 #include "unicode/utf.h"
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 }
32
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