001: /*
002: *******************************************************************************
003: * Copyright (C) 1996-2004, International Business Machines Corporation and *
004: * others. All Rights Reserved. *
005: *******************************************************************************
006: */
007:
008: package com.ibm.icu.text;
009:
010: /**
011: * An interface defining constants for the Standard Compression Scheme
012: * for Unicode (SCSU) as outlined in <A
013: * HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
014: * Report #6</A>.
015: *
016: * @author Stephen F. Booth
017: * @version 1.1 05 Aug 99
018: * @version 1.0 26 Jul 99
019: */
020: interface SCSU {
021: //==========================
022: // Generic window shift
023: //==========================
024: final static int COMPRESSIONOFFSET = 0x80;
025:
026: //==========================
027: // Number of windows
028: //==========================
029: final static int NUMWINDOWS = 8;
030: final static int NUMSTATICWINDOWS = 8;
031:
032: //==========================
033: // Indicates a window index is invalid
034: //==========================
035: final static int INVALIDWINDOW = -1;
036:
037: //==========================
038: // Indicates a character doesn't exist in input (past end of buffer)
039: //==========================
040: final static int INVALIDCHAR = -1;
041:
042: //==========================
043: // Compression modes
044: //==========================
045: final static int SINGLEBYTEMODE = 0;
046: final static int UNICODEMODE = 1;
047:
048: //==========================
049: // Maximum value for a window's index
050: //==========================
051: final static int MAXINDEX = 0xFF;
052:
053: //==========================
054: // Reserved index value (characters belongs to first block)
055: //==========================
056: final static int RESERVEDINDEX = 0x00;
057:
058: //==========================
059: // Indices for scripts which cross a half-block boundary
060: //==========================
061: final static int LATININDEX = 0xF9;
062: final static int IPAEXTENSIONINDEX = 0xFA;
063: final static int GREEKINDEX = 0xFB;
064: final static int ARMENIANINDEX = 0xFC;
065: final static int HIRAGANAINDEX = 0xFD;
066: final static int KATAKANAINDEX = 0xFE;
067: final static int HALFWIDTHKATAKANAINDEX = 0xFF;
068:
069: //==========================
070: // Single-byte mode tags
071: //==========================
072: final static int SDEFINEX = 0x0B;
073: final static int SRESERVED = 0x0C; // reserved value
074: final static int SQUOTEU = 0x0E;
075: final static int SCHANGEU = 0x0F;
076:
077: final static int SQUOTE0 = 0x01;
078: final static int SQUOTE1 = 0x02;
079: final static int SQUOTE2 = 0x03;
080: final static int SQUOTE3 = 0x04;
081: final static int SQUOTE4 = 0x05;
082: final static int SQUOTE5 = 0x06;
083: final static int SQUOTE6 = 0x07;
084: final static int SQUOTE7 = 0x08;
085:
086: final static int SCHANGE0 = 0x10;
087: final static int SCHANGE1 = 0x11;
088: final static int SCHANGE2 = 0x12;
089: final static int SCHANGE3 = 0x13;
090: final static int SCHANGE4 = 0x14;
091: final static int SCHANGE5 = 0x15;
092: final static int SCHANGE6 = 0x16;
093: final static int SCHANGE7 = 0x17;
094:
095: final static int SDEFINE0 = 0x18;
096: final static int SDEFINE1 = 0x19;
097: final static int SDEFINE2 = 0x1A;
098: final static int SDEFINE3 = 0x1B;
099: final static int SDEFINE4 = 0x1C;
100: final static int SDEFINE5 = 0x1D;
101: final static int SDEFINE6 = 0x1E;
102: final static int SDEFINE7 = 0x1F;
103:
104: //==========================
105: // Unicode mode tags
106: //==========================
107: final static int UCHANGE0 = 0xE0;
108: final static int UCHANGE1 = 0xE1;
109: final static int UCHANGE2 = 0xE2;
110: final static int UCHANGE3 = 0xE3;
111: final static int UCHANGE4 = 0xE4;
112: final static int UCHANGE5 = 0xE5;
113: final static int UCHANGE6 = 0xE6;
114: final static int UCHANGE7 = 0xE7;
115:
116: final static int UDEFINE0 = 0xE8;
117: final static int UDEFINE1 = 0xE9;
118: final static int UDEFINE2 = 0xEA;
119: final static int UDEFINE3 = 0xEB;
120: final static int UDEFINE4 = 0xEC;
121: final static int UDEFINE5 = 0xED;
122: final static int UDEFINE6 = 0xEE;
123: final static int UDEFINE7 = 0xEF;
124:
125: final static int UQUOTEU = 0xF0;
126: final static int UDEFINEX = 0xF1;
127: final static int URESERVED = 0xF2; // reserved value
128:
129: //==========================
130: // Class variables
131: //==========================
132:
133: /** For window offset mapping */
134: final static int[] sOffsetTable = {
135: // table generated by CompressionTableGenerator
136: 0x0, 0x80, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
137: 0x480, 0x500, 0x580, 0x600, 0x680, 0x700, 0x780, 0x800,
138: 0x880, 0x900, 0x980, 0xa00, 0xa80, 0xb00, 0xb80, 0xc00,
139: 0xc80, 0xd00, 0xd80, 0xe00, 0xe80, 0xf00, 0xf80, 0x1000,
140: 0x1080, 0x1100, 0x1180, 0x1200, 0x1280, 0x1300, 0x1380,
141: 0x1400, 0x1480, 0x1500, 0x1580, 0x1600, 0x1680, 0x1700,
142: 0x1780, 0x1800, 0x1880, 0x1900, 0x1980, 0x1a00, 0x1a80,
143: 0x1b00, 0x1b80, 0x1c00, 0x1c80, 0x1d00, 0x1d80, 0x1e00,
144: 0x1e80, 0x1f00, 0x1f80, 0x2000, 0x2080, 0x2100, 0x2180,
145: 0x2200, 0x2280, 0x2300, 0x2380, 0x2400, 0x2480, 0x2500,
146: 0x2580, 0x2600, 0x2680, 0x2700, 0x2780, 0x2800, 0x2880,
147: 0x2900, 0x2980, 0x2a00, 0x2a80, 0x2b00, 0x2b80, 0x2c00,
148: 0x2c80, 0x2d00, 0x2d80, 0x2e00, 0x2e80, 0x2f00, 0x2f80,
149: 0x3000, 0x3080, 0x3100, 0x3180, 0x3200, 0x3280, 0x3300,
150: 0x3380, 0xe000, 0xe080, 0xe100, 0xe180, 0xe200, 0xe280,
151: 0xe300, 0xe380, 0xe400, 0xe480, 0xe500, 0xe580, 0xe600,
152: 0xe680, 0xe700, 0xe780, 0xe800, 0xe880, 0xe900, 0xe980,
153: 0xea00, 0xea80, 0xeb00, 0xeb80, 0xec00, 0xec80, 0xed00,
154: 0xed80, 0xee00, 0xee80, 0xef00, 0xef80, 0xf000, 0xf080,
155: 0xf100, 0xf180, 0xf200, 0xf280, 0xf300, 0xf380, 0xf400,
156: 0xf480, 0xf500, 0xf580, 0xf600, 0xf680, 0xf700, 0xf780,
157: 0xf800, 0xf880, 0xf900, 0xf980, 0xfa00, 0xfa80, 0xfb00,
158: 0xfb80, 0xfc00, 0xfc80, 0xfd00, 0xfd80, 0xfe00, 0xfe80,
159: 0xff00, 0xff80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
160: 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
161: 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
162: 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
163: 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
164: 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
165: 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
166: 0x0, 0xc0, 0x250, 0x370, 0x530, 0x3040, 0x30a0, 0xff60 };
167:
168: /** Static compression window offsets */
169: final static int[] sOffsets = { 0x0000, // for quoting single-byte mode tags
170: 0x0080, // Latin-1 Supplement
171: 0x0100, // Latin Extended-A
172: 0x0300, // Combining Diacritical Marks
173: 0x2000, // General Punctuation
174: 0x2080, // Curency Symbols
175: 0x2100, // Letterlike Symbols and Number Forms
176: 0x3000 // CJK Symbols and Punctuation
177: };
178:
179: };
|