2 *******************************************************************************
4 * Copyright (C) 2001-2008, 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
33 #define UPRV_CNTTAB_NEWELEMENT 0xFFFFFF
35 #define isCntTableElement(CE) (isSpecial((CE)) && \
36 ((getCETag((CE)) == CONTRACTION_TAG)||(getCETag((CE)) == SPEC_PROC_TAG)))
38 typedef struct ContractionTable ContractionTable
;
39 struct ContractionTable
{
47 ContractionTable
**elements
;
48 /*CompactEIntArray *mapping;*/
56 UColCETags currentTag
;
59 U_CAPI CntTable
* U_EXPORT2
60 /*uprv_cnttab_open(CompactEIntArray *mapping, UErrorCode *status);*/
61 uprv_cnttab_open(UNewTrie
*mapping
, UErrorCode
*status
);
62 U_CAPI CntTable
* U_EXPORT2
63 uprv_cnttab_clone(CntTable
*table
, UErrorCode
*status
);
65 uprv_cnttab_close(CntTable
*table
);
67 /* construct the table for output */
68 U_CAPI
int32_t U_EXPORT2
69 uprv_cnttab_constructTable(CntTable
*table
, uint32_t mainOffset
, UErrorCode
*status
);
70 /* adds more contractions in table. If element is non existant, it creates on. Returns element handle */
71 U_CAPI
uint32_t U_EXPORT2
72 uprv_cnttab_addContraction(CntTable
*table
, uint32_t element
, UChar codePoint
, uint32_t value
, UErrorCode
*status
);
73 /* sets a part of contraction sequence in table. If element is non existant, it creates on. Returns element handle */
74 U_CAPI
uint32_t U_EXPORT2
75 uprv_cnttab_setContraction(CntTable
*table
, uint32_t element
, uint32_t offset
, UChar codePoint
, uint32_t value
, UErrorCode
*status
);
76 /* 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 */
77 U_CAPI
uint32_t U_EXPORT2
78 uprv_cnttab_insertContraction(CntTable
*table
, uint32_t element
, UChar codePoint
, uint32_t value
, UErrorCode
*status
);
79 /* this is for adding non contractions */
80 U_CAPI
uint32_t U_EXPORT2
81 uprv_cnttab_changeLastCE(CntTable
*table
, uint32_t element
, uint32_t value
, UErrorCode
*status
);
83 U_CAPI
int32_t U_EXPORT2
84 uprv_cnttab_findCP(CntTable
*table
, uint32_t element
, UChar codePoint
, UErrorCode
*status
);
86 U_CAPI
uint32_t U_EXPORT2
87 uprv_cnttab_getCE(CntTable
*table
, uint32_t element
, uint32_t position
, UErrorCode
*status
);
89 U_CAPI
uint32_t U_EXPORT2
90 uprv_cnttab_changeContraction(CntTable
*table
, uint32_t element
, UChar codePoint
, uint32_t newCE
, UErrorCode
*status
);
92 U_CAPI
uint32_t U_EXPORT2
93 uprv_cnttab_findCE(CntTable
*table
, uint32_t element
, UChar codePoint
, UErrorCode
*status
);
95 U_CAPI UBool U_EXPORT2
96 uprv_cnttab_isTailored(CntTable
*table
, uint32_t element
, UChar
*ztString
, UErrorCode
*status
);
100 #endif /* #if !UCONFIG_NO_COLLATION */