2 *******************************************************************************
4 * Copyright (C) 2001, International Business Machines
5 * Corporation and others. All Rights Reserved.
7 *******************************************************************************
8 * file name: ucol_tok.cpp
10 * tab size: 8 (not used)
14 * created by: Vladimir Weinstein
16 * This module maintains a contraction table structure in expanded form
17 * and provides means to flatten this structure
21 #ifndef UCOL_CNTTABLE_H
22 #define UCOL_CNTTABLE_H
24 #include "unicode/utypes.h"
26 #if !UCONFIG_NO_COLLATION
28 /*#include "ucmpe32.h"*/
36 #define UPRV_CNTTAB_NEWELEMENT 0xFFFFFF
38 #define isCntTableElement(CE) (isSpecial((CE)) && \
39 ((getCETag((CE)) == CONTRACTION_TAG)||(getCETag((CE)) == SPEC_PROC_TAG)))
41 typedef struct ContractionTable ContractionTable
;
42 struct ContractionTable
{
50 ContractionTable
**elements
;
51 /*CompactEIntArray *mapping;*/
59 UColCETags currentTag
;
62 U_CAPI CntTable
* U_EXPORT2
63 /*uprv_cnttab_open(CompactEIntArray *mapping, UErrorCode *status);*/
64 uprv_cnttab_open(UNewTrie
*mapping
, UErrorCode
*status
);
65 U_CAPI CntTable
* U_EXPORT2
66 uprv_cnttab_clone(CntTable
*table
, UErrorCode
*status
);
68 uprv_cnttab_close(CntTable
*table
);
70 /* construct the table for output */
71 U_CAPI
int32_t U_EXPORT2
72 uprv_cnttab_constructTable(CntTable
*table
, uint32_t mainOffset
, UErrorCode
*status
);
73 /* adds more contractions in table. If element is non existant, it creates on. Returns element handle */
74 U_CAPI
uint32_t U_EXPORT2
75 uprv_cnttab_addContraction(CntTable
*table
, uint32_t element
, UChar codePoint
, uint32_t value
, UErrorCode
*status
);
76 /* sets a part of contraction sequence in table. If element is non existant, it creates on. Returns element handle */
77 U_CAPI
uint32_t U_EXPORT2
78 uprv_cnttab_setContraction(CntTable
*table
, uint32_t element
, uint32_t offset
, UChar codePoint
, uint32_t value
, UErrorCode
*status
);
79 /* inserts a part of contraction sequence in table. Sequences behind the offset are moved back. If element is non existant, it creates on. Returns element handle */
80 U_CAPI
uint32_t U_EXPORT2
81 uprv_cnttab_insertContraction(CntTable
*table
, uint32_t element
, UChar codePoint
, uint32_t value
, UErrorCode
*status
);
82 /* this is for adding non contractions */
83 U_CAPI
uint32_t U_EXPORT2
84 uprv_cnttab_changeLastCE(CntTable
*table
, uint32_t element
, uint32_t value
, UErrorCode
*status
);
86 U_CAPI
int32_t U_EXPORT2
87 uprv_cnttab_findCP(CntTable
*table
, uint32_t element
, UChar codePoint
, UErrorCode
*status
);
89 U_CAPI
uint32_t U_EXPORT2
90 uprv_cnttab_getCE(CntTable
*table
, uint32_t element
, uint32_t position
, UErrorCode
*status
);
92 U_CAPI
uint32_t U_EXPORT2
93 uprv_cnttab_changeContraction(CntTable
*table
, uint32_t element
, UChar codePoint
, uint32_t newCE
, UErrorCode
*status
);
95 U_CAPI
uint32_t U_EXPORT2
96 uprv_cnttab_findCE(CntTable
*table
, uint32_t element
, UChar codePoint
, UErrorCode
*status
);
98 U_CAPI UBool U_EXPORT2
99 uprv_cnttab_isTailored(CntTable
*table
, uint32_t element
, UChar
*ztString
, UErrorCode
*status
);
103 #endif /* #if !UCONFIG_NO_COLLATION */