]> git.saurik.com Git - apple/icu.git/blame - icuSources/i18n/regextxt.cpp
ICU-511.27.tar.gz
[apple/icu.git] / icuSources / i18n / regextxt.cpp
CommitLineData
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
15U_NAMESPACE_BEGIN
16
17U_CFUNC UChar U_CALLCONV
18uregex_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
41U_CFUNC UChar U_CALLCONV
42uregex_ucstr_unescape_charAt(int32_t offset, void *context) {
43 return ((UChar *)context)[offset];
44}
45
46U_NAMESPACE_END