| OLD | NEW |
| 1 // | 1 // |
| 2 // Copyright (C) 2012 International Business Machines Corporation | 2 // Copyright (C) 2012 International Business Machines Corporation |
| 3 // and others. All rights reserved. | 3 // and others. All rights reserved. |
| 4 // | 4 // |
| 5 // file: regeximp.cpp | 5 // file: regeximp.cpp |
| 6 // | 6 // |
| 7 // ICU Regular Expressions, | 7 // ICU Regular Expressions, |
| 8 // miscellaneous implementation functions. | 8 // miscellaneous implementation functions. |
| 9 // | 9 // |
| 10 | 10 |
| 11 #include "unicode/utypes.h" | 11 #include "unicode/utypes.h" |
| 12 | 12 |
| 13 #if !UCONFIG_NO_REGULAR_EXPRESSIONS | 13 #if !UCONFIG_NO_REGULAR_EXPRESSIONS |
| 14 #include "regeximp.h" | 14 #include "regeximp.h" |
| 15 | |
| 16 #include "uassert.h" | |
| 17 #include "unicode/utf16.h" | 15 #include "unicode/utf16.h" |
| 18 | 16 |
| 19 U_NAMESPACE_BEGIN | 17 U_NAMESPACE_BEGIN |
| 20 | 18 |
| 21 CaseFoldingUTextIterator::CaseFoldingUTextIterator(UText &text) : | 19 CaseFoldingUTextIterator::CaseFoldingUTextIterator(UText &text) : |
| 22 fUText(text), fcsp(NULL), fFoldChars(NULL), fFoldLength(0) { | 20 fUText(text), fcsp(NULL), fFoldChars(NULL), fFoldLength(0) { |
| 23 fcsp = ucase_getSingleton(); | 21 fcsp = ucase_getSingleton(); |
| 24 } | 22 } |
| 25 | 23 |
| 26 CaseFoldingUTextIterator::~CaseFoldingUTextIterator() {} | 24 CaseFoldingUTextIterator::~CaseFoldingUTextIterator() {} |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 | 106 |
| 109 | 107 |
| 110 UBool CaseFoldingUCharIterator::inExpansion() { | 108 UBool CaseFoldingUCharIterator::inExpansion() { |
| 111 return fFoldChars != NULL; | 109 return fFoldChars != NULL; |
| 112 } | 110 } |
| 113 | 111 |
| 114 int64_t CaseFoldingUCharIterator::getIndex() { | 112 int64_t CaseFoldingUCharIterator::getIndex() { |
| 115 return fIndex; | 113 return fIndex; |
| 116 } | 114 } |
| 117 | 115 |
| 118 // Assemble a pcode instruction from the opcode and operand values. | |
| 119 // Out-of-range values should not occur - if they do it is from an internal | |
| 120 // error in the regex compiler. | |
| 121 | |
| 122 // TODO: move into regexcmp, where it has access to fStatus. | |
| 123 // NOP cleanly if U_FAILURE. | |
| 124 // Set U_REGEX_INTERNAL_ERROR on bad operands. | |
| 125 | |
| 126 int32_t URX_BUILD(int32_t type, int32_t val) { | |
| 127 if (type < 0 || type > 255) { | |
| 128 U_ASSERT(FALSE); | |
| 129 type = URX_RESERVED_OP; | |
| 130 } | |
| 131 if (val > 0x00ffffff) { | |
| 132 U_ASSERT(FALSE); | |
| 133 val = 0; | |
| 134 } | |
| 135 return (type << 24) | val; | |
| 136 } | |
| 137 | |
| 138 | 116 |
| 139 U_NAMESPACE_END | 117 U_NAMESPACE_END |
| 140 | 118 |
| 141 #endif | 119 #endif |
| 142 | 120 |
| OLD | NEW |