+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
//
-// Copyright (C) 2002-2012 International Business Machines Corporation
+// Copyright (C) 2002-2015 International Business Machines Corporation
// and others. All rights reserved.
//
// file: regeximp.h
U_NAMESPACE_BEGIN
-// For debugging, define REGEX_DEBUG
+// For debugging, define REGEX_DEBUG
// To define with configure,
-// ./runConfigureICU --enable-debug --disable-release Linux CPPFLAGS="-DREGEX_DEBUG"
+// CPPFLAGS="-DREGEX_DEBUG" ./runConfigureICU --enable-debug --disable-release Linux
-#ifdef REGEX_DEBUG
+#ifdef REGEX_DEBUG
//
// debugging options. Enable one or more of the three #defines immediately following
//
#define REGEX_SCAN_DEBUG_PRINTF(a)
#endif
-#ifdef REGEX_DUMP_DEBUG
-#define REGEX_DUMP_DEBUG_PRINTF(a) printf a
-#else
-#define REGEX_DUMP_DEBUG_PRINTF(a)
-#endif
-
-#ifdef REGEX_RUN_DEBUG
-#define REGEX_RUN_DEBUG_PRINTF(a) printf a
-#define REGEX_DUMP_DEBUG_PRINTF(a) printf a
-#else
-#define REGEX_RUN_DEBUG_PRINTF(a)
-#endif
-
//
// Opcode types In the compiled form of the regexp, these are the type, or opcodes,
URX_BACKSLASH_BU = 53, // \b or \B in UREGEX_UWORD mode, using Unicode style
// word boundaries.
URX_DOLLAR_D = 54, // $ end of input test, in UNIX_LINES mode.
- URX_DOLLAR_MD = 55 // $ end of input test, in MULTI_LINE and UNIX_LINES mode.
+ URX_DOLLAR_MD = 55, // $ end of input test, in MULTI_LINE and UNIX_LINES mode.
+ URX_BACKSLASH_H = 56, // Value field: 0: \h 1: \H
+ URX_BACKSLASH_R = 57, // Any line break sequence.
+ URX_BACKSLASH_V = 58 // Value field: 0: \v 1: \V
};
"LOOP_DOT_I", \
"BACKSLASH_BU", \
"DOLLAR_D", \
- "DOLLAR_MD"
+ "DOLLAR_MD", \
+ "URX_BACKSLASH_H", \
+ "URX_BACKSLASH_R", \
+ "URX_BACKSLASH_V"
//
// Convenience macros for assembling and disassembling a compiled operation.
//
-#define URX_BUILD(type, val) (int32_t)((type << 24) | (val))
#define URX_TYPE(x) ((uint32_t)(x) >> 24)
#define URX_VAL(x) ((x) & 0xffffff)
CaseFoldingUTextIterator(UText &text);
~CaseFoldingUTextIterator();
- UChar32 next(); // Next case folded character
+ UChar32 next(); // Next case folded character
- UBool inExpansion(); // True if last char returned from next() and the
+ UBool inExpansion(); // True if last char returned from next() and the
// next to be returned both originated from a string
// folding of the same code point from the orignal UText.
private:
UText &fUText;
- const UCaseProps *fcsp;
const UChar *fFoldChars;
int32_t fFoldLength;
int32_t fFoldIndex;
CaseFoldingUCharIterator(const UChar *chars, int64_t start, int64_t limit);
~CaseFoldingUCharIterator();
- UChar32 next(); // Next case folded character
+ UChar32 next(); // Next case folded character
- UBool inExpansion(); // True if last char returned from next() and the
+ UBool inExpansion(); // True if last char returned from next() and the
// next to be returned both originated from a string
// folding of the same code point from the orignal UText.
const UChar *fChars;
int64_t fIndex;
int64_t fLimit;
- const UCaseProps *fcsp;
const UChar *fFoldChars;
int32_t fFoldLength;
int32_t fFoldIndex;