1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Copyright (c) 2003-2011, International Business Machines 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Author: Alan Liu 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Created: September 24 2003 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Since: ICU 2.8 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef _RULEITER_H_ 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define _RULEITER_H_ 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uobject.h" 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass UnicodeString; 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass ParsePosition; 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass SymbolTable; 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * An iterator that returns 32-bit code points. This class is deliberately 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <em>not</em> related to any of the ICU character iterator classes 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * in order to minimize complexity. 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @author Alan Liu 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @since ICU 2.8 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass RuleCharacterIterator : public UMemory { 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // TODO: Ideas for later. (Do not implement if not needed, lest the 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // code coverage numbers go down due to unused methods.) 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // 1. Add a copy constructor, operator==() method. 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // 2. Rather than return DONE, throw an exception if the end 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // is reached -- this is an alternate usage model, probably not useful. 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate: 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Text being iterated. 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UnicodeString& text; 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Position of iterator. 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ParsePosition& pos; 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Symbol table used to parse and dereference variables. May be 0. 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const SymbolTable* sym; 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Current variable expansion, or 0 if none. 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UnicodeString* buf; 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Position within buf. Meaningless if buf == 0. 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t bufPos; 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic: 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Value returned when there are no more characters to iterate. 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru enum { DONE = -1 }; 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Bitmask option to enable parsing of variable names. If (options & 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * PARSE_VARIABLES) != 0, then an embedded variable will be expanded to 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * its value. Variables are parsed using the SymbolTable API. 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru enum { PARSE_VARIABLES = 1 }; 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Bitmask option to enable parsing of escape sequences. If (options & 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * PARSE_ESCAPES) != 0, then an embedded escape sequence will be expanded 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * to its value. Escapes are parsed using Utility.unescapeAt(). 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru enum { PARSE_ESCAPES = 2 }; 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Bitmask option to enable skipping of whitespace. If (options & 85b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * SKIP_WHITESPACE) != 0, then Pattern_White_Space characters will be silently 86b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * skipped, as if they were not present in the input. 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru enum { SKIP_WHITESPACE = 4 }; 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Constructs an iterator over the given text, starting at the given 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * position. 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param text the text to be iterated 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param sym the symbol table, or null if there is none. If sym is null, 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * then variables will not be deferenced, even if the PARSE_VARIABLES 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * option is set. 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param pos upon input, the index of the next character to return. If a 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * variable has been dereferenced, then pos will <em>not</em> increment as 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * characters of the variable value are iterated. 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru RuleCharacterIterator(const UnicodeString& text, const SymbolTable* sym, 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ParsePosition& pos); 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns true if this iterator has no more characters to return. 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UBool atEnd() const; 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns the next character using the given options, or DONE if there 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * are no more characters, and advance the position to the next 112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * character. 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param options one or more of the following options, bitwise-OR-ed 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE. 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param isEscaped output parameter set to TRUE if the character 116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * was escaped 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param ec input-output error code. An error will only be set by 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * this routing if options includes PARSE_VARIABLES and an unknown 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * variable name is seen, or if options includes PARSE_ESCAPES and 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * an invalid escape sequence is seen. 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return the current 32-bit code point, or DONE 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar32 next(int32_t options, UBool& isEscaped, UErrorCode& ec); 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns true if this iterator is currently within a variable expansion. 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru inline UBool inVariable() const; 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * An opaque object representing the position of a RuleCharacterIterator. 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru struct Pos : public UMemory { 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru private: 135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UnicodeString* buf; 136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t pos; 137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t bufPos; 138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru friend class RuleCharacterIterator; 139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru }; 140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Sets an object which, when later passed to setPos(), will 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * restore this iterator's position. Usage idiom: 144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * RuleCharacterIterator iterator = ...; 146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * RuleCharacterIterator::Pos pos; 147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * iterator.getPos(pos); 148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for (;;) { 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * iterator.getPos(pos); 150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * int c = iterator.next(...); 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * ... 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * } 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * iterator.setPos(pos); 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param p a position object to be set to this iterator's 156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * current position. 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void getPos(Pos& p) const; 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Restores this iterator to the position it had when getPos() 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * set the given object. 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param p a position object previously set by getPos() 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void setPos(const Pos& p); 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Skips ahead past any ignored characters, as indicated by the given 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * options. This is useful in conjunction with the lookahead() method. 170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Currently, this only has an effect for SKIP_WHITESPACE. 172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param options one or more of the following options, bitwise-OR-ed 173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE. 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void skipIgnored(int32_t options); 176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns a string containing the remainder of the characters to be 179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * returned by this iterator, without any option processing. If the 180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * iterator is currently within a variable expansion, this will only 181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * extend to the end of the variable expansion. This method is provided 182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * so that iterators may interoperate with string-based APIs. The typical 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * sequence of calls is to call skipIgnored(), then call lookahead(), then 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * parse the string returned by lookahead(), then call jumpahead() to 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * resynchronize the iterator. 186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param result a string to receive the characters to be returned 187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * by future calls to next() 188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param maxLookAhead The maximum to copy into the result. 189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return a reference to result 190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString& lookahead(UnicodeString& result, int32_t maxLookAhead = -1) const; 192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Advances the position by the given number of 16-bit code units. 195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This is useful in conjunction with the lookahead() method. 196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param count the number of 16-bit code units to jump over 197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void jumpahead(int32_t count); 199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns a string representation of this object, consisting of the 202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * characters being iterated, with a '|' marking the current position. 203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Position within an expanded variable is <em>not</em> indicated. 204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param result output parameter to receive a string 205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * representation of this object 206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// UnicodeString& toString(UnicodeString& result) const; 208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate: 210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns the current 32-bit code point without parsing escapes, parsing 212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * variables, or skipping whitespace. 213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return the current 32-bit code point 214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UChar32 _current() const; 216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Advances the position by the given amount. 219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param count the number of 16-bit code units to advance past 220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void _advance(int32_t count); 222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruinline UBool RuleCharacterIterator::inVariable() const { 225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return buf != 0; 226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END 229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif // _RULEITER_H_ 231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//eof 232