1a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch/* 2a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Copyright (C) 2006 George Staikos <staikos@kde.org> 3a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com> 4a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Copyright (C) 2007 Apple Computer, Inc. All rights reserved. 5a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Copyright (C) 2007-2009 Torch Mobile, Inc. 6a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Copyright (C) 2010 Company 100, Inc. 7a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * 8a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * This library is free software; you can redistribute it and/or 9a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * modify it under the terms of the GNU Library General Public 10a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * License as published by the Free Software Foundation; either 11a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * version 2 of the License, or (at your option) any later version. 12a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * 13a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * This library is distributed in the hope that it will be useful, 14a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 15a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Library General Public License for more details. 17a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * 18a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * You should have received a copy of the GNU Library General Public License 19a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * along with this library; see the file COPYING.LIB. If not, write to 20a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 21a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * Boston, MA 02110-1301, USA. 22a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * 23a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch */ 24a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 25a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#ifndef UnicodeBrew_h 26a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#define UnicodeBrew_h 27a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 28a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "UnicodeFromICU.h" 29a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "UnicodeMacrosFromICU.h" 30a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 31a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochnamespace WTF { 32a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochnamespace Unicode { 33a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 34a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochenum Direction { 35a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch LeftToRight = ICU::U_LEFT_TO_RIGHT, 36a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch RightToLeft = ICU::U_RIGHT_TO_LEFT, 37a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch EuropeanNumber = ICU::U_EUROPEAN_NUMBER, 38a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch EuropeanNumberSeparator = ICU::U_EUROPEAN_NUMBER_SEPARATOR, 39a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch EuropeanNumberTerminator = ICU::U_EUROPEAN_NUMBER_TERMINATOR, 40a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ArabicNumber = ICU::U_ARABIC_NUMBER, 41a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch CommonNumberSeparator = ICU::U_COMMON_NUMBER_SEPARATOR, 42a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch BlockSeparator = ICU::U_BLOCK_SEPARATOR, 43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch SegmentSeparator = ICU::U_SEGMENT_SEPARATOR, 44a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch WhiteSpaceNeutral = ICU::U_WHITE_SPACE_NEUTRAL, 45a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch OtherNeutral = ICU::U_OTHER_NEUTRAL, 46a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch LeftToRightEmbedding = ICU::U_LEFT_TO_RIGHT_EMBEDDING, 47a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch LeftToRightOverride = ICU::U_LEFT_TO_RIGHT_OVERRIDE, 48a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch RightToLeftArabic = ICU::U_RIGHT_TO_LEFT_ARABIC, 49a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch RightToLeftEmbedding = ICU::U_RIGHT_TO_LEFT_EMBEDDING, 50a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch RightToLeftOverride = ICU::U_RIGHT_TO_LEFT_OVERRIDE, 51a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch PopDirectionalFormat = ICU::U_POP_DIRECTIONAL_FORMAT, 52a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch NonSpacingMark = ICU::U_DIR_NON_SPACING_MARK, 53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch BoundaryNeutral = ICU::U_BOUNDARY_NEUTRAL 54a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}; 55a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 56a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochenum DecompositionType { 57a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionNone = ICU::U_DT_NONE, 58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionCanonical = ICU::U_DT_CANONICAL, 59a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionCompat = ICU::U_DT_COMPAT, 60a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionCircle = ICU::U_DT_CIRCLE, 61a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionFinal = ICU::U_DT_FINAL, 62a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionFont = ICU::U_DT_FONT, 63a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionFraction = ICU::U_DT_FRACTION, 64a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionInitial = ICU::U_DT_INITIAL, 65a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionIsolated = ICU::U_DT_ISOLATED, 66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionMedial = ICU::U_DT_MEDIAL, 67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionNarrow = ICU::U_DT_NARROW, 68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionNoBreak = ICU::U_DT_NOBREAK, 69a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionSmall = ICU::U_DT_SMALL, 70a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionSquare = ICU::U_DT_SQUARE, 71a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionSub = ICU::U_DT_SUB, 72a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionSuper = ICU::U_DT_SUPER, 73a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionVertical = ICU::U_DT_VERTICAL, 74a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DecompositionWide = ICU::U_DT_WIDE, 75a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}; 76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 77a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochenum CharCategory { 78a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch NoCategory = 0, 79a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Other_NotAssigned = TO_MASK(ICU::U_GENERAL_OTHER_TYPES), 80a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Letter_Uppercase = TO_MASK(ICU::U_UPPERCASE_LETTER), 81a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Letter_Lowercase = TO_MASK(ICU::U_LOWERCASE_LETTER), 82a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Letter_Titlecase = TO_MASK(ICU::U_TITLECASE_LETTER), 83a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Letter_Modifier = TO_MASK(ICU::U_MODIFIER_LETTER), 84a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Letter_Other = TO_MASK(ICU::U_OTHER_LETTER), 85a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 86a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Mark_NonSpacing = TO_MASK(ICU::U_NON_SPACING_MARK), 87a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Mark_Enclosing = TO_MASK(ICU::U_ENCLOSING_MARK), 88a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Mark_SpacingCombining = TO_MASK(ICU::U_COMBINING_SPACING_MARK), 89a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 90a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Number_DecimalDigit = TO_MASK(ICU::U_DECIMAL_DIGIT_NUMBER), 91a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Number_Letter = TO_MASK(ICU::U_LETTER_NUMBER), 92a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Number_Other = TO_MASK(ICU::U_OTHER_NUMBER), 93a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 94a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Separator_Space = TO_MASK(ICU::U_SPACE_SEPARATOR), 95a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Separator_Line = TO_MASK(ICU::U_LINE_SEPARATOR), 96a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Separator_Paragraph = TO_MASK(ICU::U_PARAGRAPH_SEPARATOR), 97a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 98a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Other_Control = TO_MASK(ICU::U_CONTROL_CHAR), 99a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Other_Format = TO_MASK(ICU::U_FORMAT_CHAR), 100a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Other_PrivateUse = TO_MASK(ICU::U_PRIVATE_USE_CHAR), 101a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Other_Surrogate = TO_MASK(ICU::U_SURROGATE), 102a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 103a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Punctuation_Dash = TO_MASK(ICU::U_DASH_PUNCTUATION), 104a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Punctuation_Open = TO_MASK(ICU::U_START_PUNCTUATION), 105a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Punctuation_Close = TO_MASK(ICU::U_END_PUNCTUATION), 106a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Punctuation_Connector = TO_MASK(ICU::U_CONNECTOR_PUNCTUATION), 107a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Punctuation_Other = TO_MASK(ICU::U_OTHER_PUNCTUATION), 108a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 109a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Symbol_Math = TO_MASK(ICU::U_MATH_SYMBOL), 110a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Symbol_Currency = TO_MASK(ICU::U_CURRENCY_SYMBOL), 111a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Symbol_Modifier = TO_MASK(ICU::U_MODIFIER_SYMBOL), 112a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Symbol_Other = TO_MASK(ICU::U_OTHER_SYMBOL), 113a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 114a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Punctuation_InitialQuote = TO_MASK(ICU::U_INITIAL_PUNCTUATION), 115a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch Punctuation_FinalQuote = TO_MASK(ICU::U_FINAL_PUNCTUATION) 116a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}; 117a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 118a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochUChar foldCase(UChar); 119a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 120a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochint foldCase(UChar* result, int resultLength, const UChar* source, int sourceLength, bool* isError); 121a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 122a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochint toLower(UChar* result, int resultLength, const UChar* source, int sourceLength, bool* isError); 123a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 124a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochUChar toUpper(UChar); 125a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochUChar toLower(UChar); 126a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 127a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isUpper(UChar); 128a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 129a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochint toUpper(UChar* result, int resultLength, const UChar* source, int sourceLength, bool* isError); 130a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 131a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochUChar toTitleCase(UChar); 132a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 133a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochinline bool isArabicChar(UChar32 c) 134a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 135a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return c >= 0x0600 && c <= 0x06FF; 136a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 137a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 138a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isAlphanumeric(UChar); 139a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 140a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochCharCategory category(unsigned int); 141a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 142a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochinline bool isSeparatorSpace(UChar c) 143a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 144a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return category(c) == Separator_Space; 145a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 146a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 147a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isPrintableChar(UChar); 148a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 149a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isDigit(UChar); 150a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 151a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isPunct(UChar); 152a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 153a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochinline bool hasLineBreakingPropertyComplexContext(UChar32) 154a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 155a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // FIXME: implement! 156a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return false; 157a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 158a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 159a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochinline bool hasLineBreakingPropertyComplexContextOrIdeographic(UChar32 c) 160a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 161a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch // FIXME 162a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return false; 163a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 164a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 165a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochUChar mirroredChar(UChar32); 166a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 167a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochDirection direction(UChar32); 168a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 169a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isLower(UChar); 170a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 171a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochint digitValue(UChar); 172a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 173a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochunsigned char combiningClass(UChar32); 174a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 175a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochDecompositionType decompositionType(UChar32); 176a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 177a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochinline int umemcasecmp(const UChar* a, const UChar* b, int len) 178a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 179a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch for (int i = 0; i < len; ++i) { 180a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch UChar c1 = foldCase(a[i]); 181a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch UChar c2 = foldCase(b[i]); 182a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (c1 != c2) 183a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return c1 - c2; 184a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 185a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return 0; 186a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 187a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 188a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isSpace(UChar); 189a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool isLetter(UChar); 190a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 191a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} // namespace Unicode 192a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} // namespace WTF 193a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 194a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif 195