16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2011, International Business Machines 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* file name: patternprops.h 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* encoding: US-ASCII 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* tab size: 8 (not used) 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* indentation:4 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created on: 2011mar13 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created by: Markus W. Scherer 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __PATTERNPROPS_H__ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define __PATTERNPROPS_H__ 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Implements the immutable Unicode properties Pattern_Syntax and Pattern_White_Space. 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Hardcodes these properties, does not load data, does not depend on other ICU classes. 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Note: Both properties include ASCII as well as non-ASCII, non-Latin-1 code points, 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and both properties only include BMP code points (no supplementary ones). 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Pattern_Syntax includes some unassigned code points. 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * [:Pattern_White_Space:] = 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * [\u0009-\u000D\ \u0085\u200E\u200F\u2028\u2029] 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * [:Pattern_Syntax:] = 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * [!-/\:-@\[-\^`\{-~\u00A1-\u00A7\u00A9\u00AB\u00AC\u00AE 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \u00B0\u00B1\u00B6\u00BB\u00BF\u00D7\u00F7 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \u2010-\u2027\u2030-\u203E\u2041-\u2053\u2055-\u205E 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \u2190-\u245F\u2500-\u2775\u2794-\u2BFF\u2E00-\u2E7F 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \u3001-\u3003\u3008-\u3020\u3030\uFD3E\uFD3F\uFE45\uFE46] 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @author mscherer 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass U_COMMON_API PatternProps { 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return TRUE if c is a Pattern_Syntax code point. 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UBool isSyntax(UChar32 c); 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return TRUE if c is a Pattern_Syntax or Pattern_White_Space code point. 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UBool isSyntaxOrWhiteSpace(UChar32 c); 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return TRUE if c is a Pattern_White_Space character. 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UBool isWhiteSpace(UChar32 c); 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Skips over Pattern_White_Space starting at s. 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The smallest pointer at or after s with a non-white space character. 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const UChar *skipWhiteSpace(const UChar *s, int32_t length); 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return s except with leading and trailing Pattern_White_Space removed and length adjusted. 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const UChar *trimWhiteSpace(const UChar *s, int32_t &length); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests whether the string contains a "pattern identifier", that is, 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * whether it contains only non-Pattern_White_Space, non-Pattern_Syntax characters. 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return TRUE if there are no Pattern_White_Space or Pattern_Syntax characters in s. 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UBool isIdentifier(const UChar *s, int32_t length); 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Skips over a "pattern identifier" starting at index s. 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The smallest pointer at or after s with 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * a Pattern_White_Space or Pattern_Syntax character. 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const UChar *skipIdentifier(const UChar *s, int32_t length); 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PatternProps(); // no constructor: all static methods 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif // __PATTERNPROPS_H__ 90