Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Unified Diff: icu46/source/i18n/ucol_tok.h

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « icu46/source/i18n/ucol_sit.cpp ('k') | icu46/source/i18n/ucol_tok.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: icu46/source/i18n/ucol_tok.h
===================================================================
--- icu46/source/i18n/ucol_tok.h (revision 0)
+++ icu46/source/i18n/ucol_tok.h (revision 0)
@@ -0,0 +1,211 @@
+/*
+*******************************************************************************
+*
+* Copyright (C) 2001-2010, International Business Machines
+* Corporation and others. All Rights Reserved.
+*
+*******************************************************************************
+* file name: ucol_tok.h
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created 02/22/2001
+* created by: Vladimir Weinstein
+*
+* This module reads a tailoring rule string and produces a list of
+* tokens that will be turned into collation elements
+*
+*/
+
+#ifndef UCOL_TOKENS_H
+#define UCOL_TOKENS_H
+
+#include "unicode/utypes.h"
+#include "unicode/uset.h"
+
+#if !UCONFIG_NO_COLLATION
+
+#include "ucol_imp.h"
+#include "uhash.h"
+#include "unicode/parseerr.h"
+
+#define UCOL_TOK_UNSET 0xFFFFFFFF
+#define UCOL_TOK_RESET 0xDEADBEEF
+
+#define UCOL_TOK_POLARITY_NEGATIVE 0
+#define UCOL_TOK_POLARITY_POSITIVE 1
+
+#define UCOL_TOK_TOP 0x04
+#define UCOL_TOK_VARIABLE_TOP 0x08
+#define UCOL_TOK_BEFORE 0x03
+#define UCOL_TOK_SUCCESS 0x10
+
+/* this is space for the extra strings that need to be unquoted */
+/* during the parsing of the rules */
+#define UCOL_TOK_EXTRA_RULE_SPACE_SIZE 4096
+typedef struct UColToken UColToken;
+
+typedef struct {
+ UColToken* first;
+ UColToken* last;
+ UColToken* reset;
+ UBool indirect;
+ uint32_t baseCE;
+ uint32_t baseContCE;
+ uint32_t nextCE;
+ uint32_t nextContCE;
+ uint32_t previousCE;
+ uint32_t previousContCE;
+ int32_t pos[UCOL_STRENGTH_LIMIT];
+ uint32_t gapsLo[3*UCOL_CE_STRENGTH_LIMIT];
+ uint32_t gapsHi[3*UCOL_CE_STRENGTH_LIMIT];
+ uint32_t numStr[UCOL_CE_STRENGTH_LIMIT];
+ UColToken* fStrToken[UCOL_CE_STRENGTH_LIMIT];
+ UColToken* lStrToken[UCOL_CE_STRENGTH_LIMIT];
+} UColTokListHeader;
+
+struct UColToken {
+ UChar debugSource;
+ UChar debugExpansion;
+ UChar debugPrefix;
+ uint32_t CEs[128];
+ uint32_t noOfCEs;
+ uint32_t expCEs[128];
+ uint32_t noOfExpCEs;
+ uint32_t source;
+ uint32_t expansion;
+ uint32_t prefix;
+ uint32_t strength;
+ uint32_t toInsert;
+ uint32_t polarity; /* 1 for <, <<, <<<, , ; and -1 for >, >>, >>> */
+ UColTokListHeader *listHeader;
+ UColToken* previous;
+ UColToken* next;
+ UChar **rulesToParseHdl;
+ uint16_t flags;
+};
+
+/*
+ * This is a token that has been parsed
+ * but not yet processed. Used to reduce
+ * the number of arguments in the parser
+ */
+typedef struct {
+ uint32_t strength;
+ uint32_t charsOffset;
+ uint32_t charsLen;
+ uint32_t extensionOffset;
+ uint32_t extensionLen;
+ uint32_t prefixOffset;
+ uint32_t prefixLen;
+ uint16_t flags;
+ uint16_t indirectIndex;
+} UColParsedToken;
+
+
+typedef struct {
+ UColParsedToken parsedToken;
+ UChar *source;
+ UChar *end;
+ const UChar *current;
+ UChar *sourceCurrent;
+ UChar *extraCurrent;
+ UChar *extraEnd;
+ const InverseUCATableHeader *invUCA;
+ const UCollator *UCA;
+ UHashtable *tailored;
+ UColOptionSet *opts;
+ uint32_t resultLen;
+ uint32_t listCapacity;
+ UColTokListHeader *lh;
+ UColToken *varTop;
+ USet *copySet;
+ USet *removeSet;
+ UBool buildCCTabFlag; /* Tailoring rule requirs building combining class table. */
+
+ UChar32 previousCp; /* Previous code point. */
+ /* For processing starred lists. */
+ UBool isStarred; /* Are we processing a starred token? */
+ UBool savedIsStarred;
+ uint32_t currentStarredCharIndex; /* Index of the current charrecter in the starred expression. */
+ uint32_t lastStarredCharIndex; /* Index to the last character in the starred expression. */
+
+ /* For processing ranges. */
+ UBool inRange; /* Are we in a range? */
+ UChar32 currentRangeCp; /* Current code point in the range. */
+ UChar32 lastRangeCp; /* The last code point in the range. */
+
+ /* reorder codes for collation reordering */
+ int32_t* reorderCodes;
+ int32_t reorderCodesLength;
+
+} UColTokenParser;
+
+typedef struct {
+ const UChar *subName;
+ int32_t subLen;
+ UColAttributeValue attrVal;
+} ucolTokSuboption;
+
+typedef struct {
+ const UChar *optionName;
+ int32_t optionLen;
+ const ucolTokSuboption *subopts;
+ int32_t subSize;
+ UColAttribute attr;
+} ucolTokOption;
+
+#define ucol_tok_isSpecialChar(ch) \
+ (((((ch) <= 0x002F) && ((ch) >= 0x0020)) || \
+ (((ch) <= 0x003F) && ((ch) >= 0x003A)) || \
+ (((ch) <= 0x0060) && ((ch) >= 0x005B)) || \
+ (((ch) <= 0x007E) && ((ch) >= 0x007D)) || \
+ (ch) == 0x007B))
+
+
+U_CFUNC
+uint32_t ucol_tok_assembleTokenList(UColTokenParser *src,
+ UParseError *parseError,
+ UErrorCode *status);
+
+U_CFUNC
+void ucol_tok_initTokenList(UColTokenParser *src,
+ const UChar *rules,
+ const uint32_t rulesLength,
+ const UCollator *UCA,
+ GetCollationRulesFunction importFunc,
+ void* context,
+ UErrorCode *status);
+
+U_CFUNC void ucol_tok_closeTokenList(UColTokenParser *src);
+
+U_CAPI const UChar* U_EXPORT2 ucol_tok_parseNextToken(UColTokenParser *src,
+ UBool startOfRules,
+ UParseError *parseError,
+ UErrorCode *status);
+
+
+U_CAPI const UChar * U_EXPORT2
+ucol_tok_getNextArgument(const UChar *start, const UChar *end,
+ UColAttribute *attrib, UColAttributeValue *value,
+ UErrorCode *status);
+U_CAPI int32_t U_EXPORT2 ucol_inv_getNextCE(const UColTokenParser *src,
+ uint32_t CE, uint32_t contCE,
+ uint32_t *nextCE, uint32_t *nextContCE,
+ uint32_t strength);
+U_CFUNC int32_t U_EXPORT2 ucol_inv_getPrevCE(const UColTokenParser *src,
+ uint32_t CE, uint32_t contCE,
+ uint32_t *prevCE, uint32_t *prevContCE,
+ uint32_t strength);
+
+U_CFUNC const UChar* ucol_tok_getRulesFromBundle(
+ void* context,
+ const char* locale,
+ const char* type,
+ int32_t* pLength,
+ UErrorCode* status);
+
+#endif /* #if !UCONFIG_NO_COLLATION */
+
+#endif
Property changes on: icu46/source/i18n/ucol_tok.h
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « icu46/source/i18n/ucol_sit.cpp ('k') | icu46/source/i18n/ucol_tok.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698