16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2001-2011, International Business Machines 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* file name: ucol_tok.h 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* encoding: US-ASCII 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* tab size: 8 (not used) 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* indentation:4 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created 02/22/2001 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* created by: Vladimir Weinstein 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* This module reads a tailoring rule string and produces a list of 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* tokens that will be turned into collation elements 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef UCOL_TOKENS_H 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOKENS_H 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uset.h" 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_COLLATION 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "ucol_imp.h" 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "uhash.h" 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/parseerr.h" 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_UNSET 0xFFFFFFFF 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_RESET 0xDEADBEEF 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_POLARITY_NEGATIVE 0 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_POLARITY_POSITIVE 1 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_TOP 0x04 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_VARIABLE_TOP 0x08 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_BEFORE 0x03 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_SUCCESS 0x10 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* this is space for the extra strings that need to be unquoted */ 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* during the parsing of the rules */ 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define UCOL_TOK_EXTRA_RULE_SPACE_SIZE 4096 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct UColToken UColToken; 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct { 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken* first; 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken* last; 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken* reset; 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool indirect; 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t baseCE; 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t baseContCE; 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t nextCE; 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t nextContCE; 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t previousCE; 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t previousContCE; 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos[UCOL_STRENGTH_LIMIT]; 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t gapsLo[3*UCOL_CE_STRENGTH_LIMIT]; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t gapsHi[3*UCOL_CE_STRENGTH_LIMIT]; 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t numStr[UCOL_CE_STRENGTH_LIMIT]; 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken* fStrToken[UCOL_CE_STRENGTH_LIMIT]; 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken* lStrToken[UCOL_CE_STRENGTH_LIMIT]; 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UColTokListHeader; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct UColToken { 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar debugSource; 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar debugExpansion; 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar debugPrefix; 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t CEs[128]; 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t noOfCEs; 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t expCEs[128]; 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t noOfExpCEs; 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t source; 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t expansion; 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t prefix; 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t strength; 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t toInsert; 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t polarity; /* 1 for <, <<, <<<, , ; and -1 for >, >>, >>> */ 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColTokListHeader *listHeader; 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken* previous; 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken* next; 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar **rulesToParseHdl; 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint16_t flags; 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This is a token that has been parsed 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * but not yet processed. Used to reduce 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the number of arguments in the parser 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct { 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t strength; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t charsOffset; 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t charsLen; 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t extensionOffset; 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t extensionLen; 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t prefixOffset; 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t prefixLen; 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint16_t flags; 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint16_t indirectIndex; 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UColParsedToken; 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct { 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColParsedToken parsedToken; 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *source; 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *end; 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *current; 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *sourceCurrent; 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *extraCurrent; 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *extraEnd; 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const InverseUCATableHeader *invUCA; 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UCollator *UCA; 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UHashtable *tailored; 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColOptionSet *opts; 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t resultLen; 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t listCapacity; 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColTokListHeader *lh; 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColToken *varTop; 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org USet *copySet; 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org USet *removeSet; 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool buildCCTabFlag; /* Tailoring rule requirs building combining class table. */ 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar32 previousCp; /* Previous code point. */ 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* For processing starred lists. */ 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool isStarred; /* Are we processing a starred token? */ 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool savedIsStarred; 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t currentStarredCharIndex; /* Index of the current charrecter in the starred expression. */ 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t lastStarredCharIndex; /* Index to the last character in the starred expression. */ 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* For processing ranges. */ 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool inRange; /* Are we in a range? */ 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar32 currentRangeCp; /* Current code point in the range. */ 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar32 lastRangeCp; /* The last code point in the range. */ 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* reorder codes for collation reordering */ 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* reorderCodes; 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t reorderCodesLength; 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} UColTokenParser; 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct { 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *subName; 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t subLen; 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColAttributeValue attrVal; 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} ucolTokSuboption; 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct { 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *optionName; 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t optionLen; 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const ucolTokSuboption *subopts; 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t subSize; 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColAttribute attr; 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} ucolTokOption; 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define ucol_tok_isSpecialChar(ch) \ 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (((((ch) <= 0x002F) && ((ch) >= 0x0020)) || \ 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (((ch) <= 0x003F) && ((ch) >= 0x003A)) || \ 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (((ch) <= 0x0060) && ((ch) >= 0x005B)) || \ 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (((ch) <= 0x007E) && ((ch) >= 0x007D)) || \ 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (ch) == 0x007B)) 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CFUNC 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguint32_t ucol_tok_assembleTokenList(UColTokenParser *src, 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError *parseError, 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CFUNC 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ucol_tok_initTokenList(UColTokenParser *src, 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *rules, 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const uint32_t rulesLength, 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UCollator *UCA, 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org GetCollationRulesFunction importFunc, 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void* context, 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CFUNC void ucol_tok_closeTokenList(UColTokenParser *src); 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI const UChar* U_EXPORT2 ucol_tok_parseNextToken(UColTokenParser *src, 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool startOfRules, 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UParseError *parseError, 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI const UChar * U_EXPORT2 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgucol_tok_getNextArgument(const UChar *start, const UChar *end, 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UColAttribute *attrib, UColAttributeValue *value, 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status); 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 ucol_inv_getNextCE(const UColTokenParser *src, 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t CE, uint32_t contCE, 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t *nextCE, uint32_t *nextContCE, 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t strength); 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CFUNC int32_t U_EXPORT2 ucol_inv_getPrevCE(const UColTokenParser *src, 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t CE, uint32_t contCE, 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t *prevCE, uint32_t *prevContCE, 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uint32_t strength); 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst UChar* U_CALLCONV ucol_tok_getRulesFromBundle( 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void* context, 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale, 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* type, 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t* pLength, 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode* status); 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_COLLATION */ 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 212