aboutsummaryrefslogtreecommitdiff
path: root/icu/icu4j/main/classes/core/src/com/ibm/icu/text/SCSU.java
blob: 39196fe31aeda4ec11711a4d37eddb2032d3d506 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
/*
 *******************************************************************************
 * Copyright (C) 1996-2007, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */

package com.ibm.icu.text;

/**
 * An interface defining  constants for the Standard Compression Scheme
 * for Unicode (SCSU) as outlined in <A
 * HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
 * Report #6</A>.
 *
 * @author Stephen F. Booth
 * @version 1.1 05 Aug 99
 * @version 1.0 26 Jul 99
 */
interface SCSU
{
    //==========================
    // Generic window shift
    //==========================
    final static int COMPRESSIONOFFSET           = 0x80;

    //==========================
    // Number of windows
    //==========================
    final static int NUMWINDOWS                  = 8;
    final static int NUMSTATICWINDOWS            = 8;

    //==========================
    // Indicates a window index is invalid
    //==========================
    final static int INVALIDWINDOW               = -1;

    //==========================
    // Indicates a character doesn't exist in input (past end of buffer)
    //==========================
    final static int INVALIDCHAR                 = -1;

    //==========================
    // Compression modes
    //==========================
    final static int SINGLEBYTEMODE              = 0;
    final static int UNICODEMODE                 = 1;

    //==========================
    // Maximum value for a window's index
    //==========================
    final static int MAXINDEX                    = 0xFF;

    //==========================
    // Reserved index value (characters belongs to first block)
    //==========================
    final static int RESERVEDINDEX               = 0x00;

    //==========================
    // Indices for scripts which cross a half-block boundary
    //==========================
    final static int LATININDEX                  = 0xF9;
    final static int IPAEXTENSIONINDEX           = 0xFA;
    final static int GREEKINDEX                  = 0xFB;
    final static int ARMENIANINDEX               = 0xFC;
    final static int HIRAGANAINDEX               = 0xFD;
    final static int KATAKANAINDEX               = 0xFE;
    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;

    //==========================
    // Single-byte mode tags
    //==========================
    final static int SDEFINEX                    = 0x0B;
    final static int SRESERVED                   = 0x0C;  // reserved value
    final static int SQUOTEU                     = 0x0E;
    final static int SCHANGEU                    = 0x0F;

    final static int SQUOTE0                     = 0x01;
    final static int SQUOTE1                     = 0x02;
    final static int SQUOTE2                     = 0x03;
    final static int SQUOTE3                     = 0x04;
    final static int SQUOTE4                     = 0x05;
    final static int SQUOTE5                     = 0x06;
    final static int SQUOTE6                     = 0x07;
    final static int SQUOTE7                     = 0x08;

    final static int SCHANGE0                    = 0x10;
    final static int SCHANGE1                    = 0x11;
    final static int SCHANGE2                    = 0x12;
    final static int SCHANGE3                    = 0x13;
    final static int SCHANGE4                    = 0x14;
    final static int SCHANGE5                    = 0x15;
    final static int SCHANGE6                    = 0x16;
    final static int SCHANGE7                    = 0x17;

    final static int SDEFINE0                    = 0x18;
    final static int SDEFINE1                    = 0x19;
    final static int SDEFINE2                    = 0x1A;
    final static int SDEFINE3                    = 0x1B;
    final static int SDEFINE4                    = 0x1C;
    final static int SDEFINE5                    = 0x1D;
    final static int SDEFINE6                    = 0x1E;
    final static int SDEFINE7                    = 0x1F;

    //==========================
    // Unicode mode tags
    //==========================
    final static int UCHANGE0                    = 0xE0;
    final static int UCHANGE1                    = 0xE1;
    final static int UCHANGE2                    = 0xE2;
    final static int UCHANGE3                    = 0xE3;
    final static int UCHANGE4                    = 0xE4;
    final static int UCHANGE5                    = 0xE5;
    final static int UCHANGE6                    = 0xE6;
    final static int UCHANGE7                    = 0xE7;

    final static int UDEFINE0                    = 0xE8;
    final static int UDEFINE1                    = 0xE9;
    final static int UDEFINE2                    = 0xEA;
    final static int UDEFINE3                    = 0xEB;
    final static int UDEFINE4                    = 0xEC;
    final static int UDEFINE5                    = 0xED;
    final static int UDEFINE6                    = 0xEE;
    final static int UDEFINE7                    = 0xEF;

    final static int UQUOTEU                     = 0xF0;
    final static int UDEFINEX                    = 0xF1;
    final static int URESERVED                   = 0xF2;  // reserved value


    //==========================
    // Class variables
    //==========================

    /** For window offset mapping */
    final static int [] sOffsetTable = { 
        // table generated by CompressionTableGenerator
        0x0, 0x80, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
    0x480, 0x500, 0x580, 0x600, 0x680, 0x700, 0x780, 0x800, 0x880,
    0x900, 0x980, 0xa00, 0xa80, 0xb00, 0xb80, 0xc00, 0xc80, 0xd00,
    0xd80, 0xe00, 0xe80, 0xf00, 0xf80, 0x1000, 0x1080, 0x1100,
    0x1180, 0x1200, 0x1280, 0x1300, 0x1380, 0x1400, 0x1480,
    0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780, 0x1800,
    0x1880, 0x1900, 0x1980, 0x1a00, 0x1a80, 0x1b00, 0x1b80,
    0x1c00, 0x1c80, 0x1d00, 0x1d80, 0x1e00, 0x1e80, 0x1f00,
    0x1f80, 0x2000, 0x2080, 0x2100, 0x2180, 0x2200, 0x2280,
    0x2300, 0x2380, 0x2400, 0x2480, 0x2500, 0x2580, 0x2600,
    0x2680, 0x2700, 0x2780, 0x2800, 0x2880, 0x2900, 0x2980,
    0x2a00, 0x2a80, 0x2b00, 0x2b80, 0x2c00, 0x2c80, 0x2d00,
    0x2d80, 0x2e00, 0x2e80, 0x2f00, 0x2f80, 0x3000, 0x3080,
    0x3100, 0x3180, 0x3200, 0x3280, 0x3300, 0x3380, 0xe000,
    0xe080, 0xe100, 0xe180, 0xe200, 0xe280, 0xe300, 0xe380,
    0xe400, 0xe480, 0xe500, 0xe580, 0xe600, 0xe680, 0xe700,
    0xe780, 0xe800, 0xe880, 0xe900, 0xe980, 0xea00, 0xea80,
    0xeb00, 0xeb80, 0xec00, 0xec80, 0xed00, 0xed80, 0xee00,
    0xee80, 0xef00, 0xef80, 0xf000, 0xf080, 0xf100, 0xf180,
    0xf200, 0xf280, 0xf300, 0xf380, 0xf400, 0xf480, 0xf500,
    0xf580, 0xf600, 0xf680, 0xf700, 0xf780, 0xf800, 0xf880,
    0xf900, 0xf980, 0xfa00, 0xfa80, 0xfb00, 0xfb80, 0xfc00,
    0xfc80, 0xfd00, 0xfd80, 0xfe00, 0xfe80, 0xff00, 0xff80, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x250, 0x370,
    0x530, 0x3040, 0x30a0, 0xff60  
    };

    /** Static compression window offsets */
    final static int [] sOffsets = {
        0x0000,  // for quoting single-byte mode tags
        0x0080,  // Latin-1 Supplement
        0x0100,  // Latin Extended-A
        0x0300,  // Combining Diacritical Marks
        0x2000,  // General Punctuation
        0x2080,  // Curency Symbols
        0x2100,  // Letterlike Symbols and Number Forms
        0x3000   // CJK Symbols and Punctuation
    };

}