summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-xetex/i18n/ucol_elm.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-xetex/i18n/ucol_elm.h')
-rw-r--r--Build/source/libs/icu/icu-xetex/i18n/ucol_elm.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-xetex/i18n/ucol_elm.h b/Build/source/libs/icu/icu-xetex/i18n/ucol_elm.h
new file mode 100644
index 00000000000..fbe966eaefb
--- /dev/null
+++ b/Build/source/libs/icu/icu-xetex/i18n/ucol_elm.h
@@ -0,0 +1,148 @@
+/*
+*******************************************************************************
+*
+* Copyright (C) 2000-2006, International Business Machines
+* Corporation and others. All Rights Reserved.
+*
+*******************************************************************************
+* file name: ucol_elm.h
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created 02/22/2001
+* created by: Vladimir Weinstein
+*
+* This program reads the Franctional UCA table and generates
+* internal format for UCA table as well as inverse UCA table.
+* It then writes binary files containing the data: ucadata.dat
+* & invuca.dat
+*/
+#ifndef UCOL_UCAELEMS_H
+#define UCOL_UCAELEMS_H
+
+#include "unicode/utypes.h"
+#include "ucol_tok.h"
+
+#if !UCONFIG_NO_COLLATION
+
+#include "ucol_cnt.h"
+#include "ucol_imp.h"
+
+#ifdef UCOL_DEBUG
+#include "cmemory.h"
+#include <stdio.h>
+#endif
+
+U_CDECL_BEGIN
+
+/* This is the maximum trie capacity for the mapping trie.
+Due to current limitations in genuca and the design of UTrie,
+this number can't be more than 256K.
+As of Unicode 5, it currently could safely go to 128K without
+a problem. Normally, less than 32K are tailored.
+*/
+#define UCOL_ELM_TRIE_CAPACITY 0x40000
+
+/* This is the maxmun capacity for temparay combining class
+ * table. The table will be compacted after scanning all the
+ * Unicode codepoints.
+*/
+#define UCOL_MAX_CM_TAB 0x10000
+
+
+typedef struct {
+ uint32_t *CEs;
+ int32_t position;
+ int32_t size;
+} ExpansionTable;
+
+typedef struct {
+ UChar prefixChars[128];
+ UChar *prefix;
+ uint32_t prefixSize;
+ UChar uchars[128];
+ UChar *cPoints;
+ uint32_t cSize; /* Number of characters in sequence - for contraction */
+ uint32_t noOfCEs; /* Number of collation elements */
+ uint32_t CEs[128]; /* These are collation elements - there could be more than one - in case of expansion */
+ uint32_t mapCE; /* This is the value element maps in original table */
+ uint32_t sizePrim[128];
+ uint32_t sizeSec[128];
+ uint32_t sizeTer[128];
+ UBool variableTop;
+ UBool caseBit;
+ UBool isThai;
+} UCAElements;
+
+typedef struct {
+ uint32_t *endExpansionCE;
+ UBool *isV;
+ int32_t position;
+ int32_t size;
+ uint8_t maxLSize;
+ uint8_t maxVSize;
+ uint8_t maxTSize;
+} MaxJamoExpansionTable;
+
+typedef struct {
+ uint32_t *endExpansionCE;
+ uint8_t *expansionCESize;
+ int32_t position;
+ int32_t size;
+} MaxExpansionTable;
+
+typedef struct {
+ uint16_t index[256]; /* index of cPoints by combining class 0-255. */
+ UChar *cPoints; /* code point array of all combining marks */
+ uint32_t size; /* total number of combining marks */
+} CombinClassTable;
+
+typedef struct {
+ /*CompactEIntArray *mapping; */
+ UNewTrie *mapping;
+ ExpansionTable *expansions;
+ struct CntTable *contractions;
+ UCATableHeader *image;
+ UColOptionSet *options;
+ MaxExpansionTable *maxExpansions;
+ MaxJamoExpansionTable *maxJamoExpansions;
+ uint8_t *unsafeCP;
+ uint8_t *contrEndCP;
+ const UCollator *UCA;
+ UHashtable *prefixLookup;
+ CombinClassTable *cmLookup; /* combining class lookup for tailoring. */
+} tempUCATable;
+
+typedef struct {
+ UChar cp;
+ uint16_t cClass; // combining class
+}CompData;
+
+typedef struct {
+ CompData *precomp;
+ int32_t precompLen;
+ UChar *decomp;
+ int32_t decompLen;
+ UChar *comp;
+ int32_t compLen;
+ uint16_t curClass;
+ uint16_t tailoringCM;
+ int32_t cmPos;
+}tempTailorContext;
+
+U_CAPI tempUCATable * U_EXPORT2 uprv_uca_initTempTable(UCATableHeader *image, UColOptionSet *opts, const UCollator *UCA, UColCETags initTag, UColCETags supplementaryInitTag, UErrorCode *status);
+U_CAPI tempUCATable * U_EXPORT2 uprv_uca_cloneTempTable(tempUCATable *t, UErrorCode *status);
+U_CAPI void U_EXPORT2 uprv_uca_closeTempTable(tempUCATable *t);
+U_CAPI uint32_t U_EXPORT2 uprv_uca_addAnElement(tempUCATable *t, UCAElements *element, UErrorCode *status);
+U_CAPI UCATableHeader * U_EXPORT2 uprv_uca_assembleTable(tempUCATable *t, UErrorCode *status);
+U_CAPI int32_t U_EXPORT2
+uprv_uca_canonicalClosure(tempUCATable *t, UColTokenParser *src, UErrorCode *status);
+#define paddedsize(something) ((something)+((((something)%4)!=0)?(4-(something)%4):0))
+#define headersize (paddedsize(sizeof(UCATableHeader))+paddedsize(sizeof(UColOptionSet)))
+
+U_CDECL_END
+
+#endif /* #if !UCONFIG_NO_COLLATION */
+
+#endif