Remove Java files from HEAD.

This commit is contained in:
Kurt Zeilenga 2000-01-25 22:47:53 +00:00
parent fe98d9fa7b
commit 92705f0061
2 changed files with 0 additions and 1029 deletions

View File

@ -1,935 +0,0 @@
/*
* $Id: UCData.java,v 1.2 1999/10/07 20:49:56 mleisher Exp $
*
* Copyright 1999 Computing Research Labs, New Mexico State University
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import java.io.*;
import java.net.*;
public class UCData {
private static byte[] buffer;
private static boolean endian;
private static int bytes, buffpos;
//
// Do the static initialization.
//
static {
buffer = new byte[24576];
}
private static boolean load_file(InputStream in) {
buffpos = 0;
try {
bytes = in.read(buffer);
} catch (IOException e) {
return false;
}
endian = (buffer[0] == -2 && buffer[1] == -2);
buffpos = 2;
return (bytes > 0);
}
private static int getInt() {
int b1, b2, b3, b4;
if (!endian) {
b1 = buffer[buffpos++];
b2 = buffer[buffpos++];
b3 = buffer[buffpos++];
b4 = buffer[buffpos++];
} else {
b4 = buffer[buffpos++];
b3 = buffer[buffpos++];
b2 = buffer[buffpos++];
b1 = buffer[buffpos++];
}
if (b1 < 0)
b1 += 256;
if (b2 < 0)
b2 += 256;
if (b3 < 0)
b3 += 256;
if (b4 < 0)
b4 += 256;
return ((b1 << 24) | (b2 << 16) | (b3 << 8) | b4);
}
private static int getInt(int from) {
buffpos = from;
return getInt();
}
private static short getShort() {
int b1, b2;
if (!endian) {
b1 = buffer[buffpos++];
b2 = buffer[buffpos++];
} else {
b2 = buffer[buffpos++];
b1 = buffer[buffpos++];
}
if (b1 < 0)
b1 += 256;
if (b2 < 0)
b2 += 256;
return (short) ((b1 << 8) | b2);
}
private static short getShort(int from) {
buffpos = from;
return getShort();
}
/**********************************************************************
*
* Character type info section.
*
**********************************************************************/
private static int masks32[] = {
0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000020,
0x00000040, 0x00000080, 0x00000100, 0x00000200, 0x00000400, 0x00000800,
0x00001000, 0x00002000, 0x00004000, 0x00008000, 0x00010000, 0x00020000,
0x00040000, 0x00080000, 0x00100000, 0x00200000, 0x00400000, 0x00800000,
0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000,
0x40000000, 0x80000000
};
//
// The arrays with the character property info.
//
private static short[] _ucprop_offsets = null;
private static int[] _ucprop_ranges = null;
public static final int UC_MN = 0x00000001;
public static final int UC_MC = 0x00000002;
public static final int UC_ME = 0x00000004;
public static final int UC_ND = 0x00000008;
public static final int UC_NL = 0x00000010;
public static final int UC_NO = 0x00000020;
public static final int UC_ZS = 0x00000040;
public static final int UC_ZL = 0x00000080;
public static final int UC_ZP = 0x00000100;
public static final int UC_CC = 0x00000200;
public static final int UC_CF = 0x00000400;
public static final int UC_OS = 0x00000800;
public static final int UC_CO = 0x00001000;
public static final int UC_CN = 0x00002000;
public static final int UC_LU = 0x00004000;
public static final int UC_LL = 0x00008000;
public static final int UC_LT = 0x00010000;
public static final int UC_LM = 0x00020000;
public static final int UC_LO = 0x00040000;
public static final int UC_PC = 0x00080000;
public static final int UC_PD = 0x00100000;
public static final int UC_PS = 0x00200000;
public static final int UC_PE = 0x00400000;
public static final int UC_PO = 0x00800000;
public static final int UC_SM = 0x01000000;
public static final int UC_SC = 0x02000000;
public static final int UC_SK = 0x04000000;
public static final int UC_SO = 0x08000000;
public static final int UC_L = 0x10000000;
public static final int UC_R = 0x20000000;
public static final int UC_EN = 0x40000000;
public static final int UC_ES = 0x80000000;
public static final int UC_ET = 0x00000001;
public static final int UC_AN = 0x00000002;
public static final int UC_CS = 0x00000004;
public static final int UC_B = 0x00000008;
public static final int UC_S = 0x00000010;
public static final int UC_WS = 0x00000020;
public static final int UC_ON = 0x00000040;
public static final int UC_CM = 0x00000080;
public static final int UC_NB = 0x00000100;
public static final int UC_SY = 0x00000200;
public static final int UC_HD = 0x00000400;
public static final int UC_QM = 0x00000800;
public static final int UC_MR = 0x00001000;
public static final int UC_SS = 0x00002000;
public static final int UC_CP = 0x00004000;
public static final int UC_PI = 0x00008000;
public static final int UC_PF = 0x00010000;
private static boolean _ucprop_load(URL where) {
int i, hsize, size = 0;
boolean res;
InputStream in = null;
//
// If the offsets array is not null, then this file has been loaded.
//
if (_ucprop_offsets != null)
return true;
try {
in = where.openStream();
} catch (IOException e1) {
return false;
}
res = load_file(in);
try {
in.close();
} catch (IOException e) {}
if (res == false)
return res;
hsize = getShort();
if (((size = (hsize + 1) << 1) & 3) != 0)
size += 4 - (size & 3);
_ucprop_offsets = new short[hsize + 1];
//
// Skip the byte count which won't be needed.
//
buffpos += 4;
//
// Adjust the byte count used to position at the beginning of the
// ranges to include the 4 bytes at the beginning and the byte count
// which is unused.
//
size += 8;
for (i = 0; i <= hsize; i++)
_ucprop_offsets[i] = getShort();
//
// Now allocate the ranges.
//
_ucprop_ranges = new int[_ucprop_offsets[hsize]];
for (i = 0, buffpos = size; i < _ucprop_offsets[hsize]; i++)
_ucprop_ranges[i] = getInt();
return true;
}
private static void _ucprop_unload() {
_ucprop_offsets = null;
_ucprop_ranges = null;
}
private static boolean uclookup(int code, int n) {
int l, r, m;
if ((l = _ucprop_offsets[n]) == -1)
return false;
for (m = 1; n + m < _ucprop_offsets.length &&
_ucprop_offsets[n + m] == -1; m++) ;
r = _ucprop_offsets[n + m] - 1;
while (l <= r) {
m = (l + r) >> 1;
m -= (m & 1);
if (code > _ucprop_ranges[m + 1])
l = m + 2;
else if (code < _ucprop_ranges[m])
r = m - 2;
else if (_ucprop_ranges[m] <= code && code <= _ucprop_ranges[m+1])
return true;
}
return false;
}
public static boolean ucisprop(int code, int mask1, int mask2) {
int i;
if (mask1 == 0 && mask2 == 0)
return false;
if (mask1 != 0) {
for (i = 0; i < 32; i++) {
if ((mask1 & masks32[i]) != 0 && uclookup(code, i))
return true;
}
}
if (mask2 != 0) {
for (i = 32; i < _ucprop_offsets.length; i++) {
if ((mask2 & masks32[i & 31]) != 0 && uclookup(code, i))
return true;
}
}
return false;
}
public static boolean ucisalpha(int code) {
return ucisprop(code, UC_LU|UC_LL|UC_LM|UC_LO|UC_LT, 0);
}
public static boolean ucisdigit(int code) {
return ucisprop(code, UC_ND, 0);
}
public static boolean ucisalnum(int code) {
return ucisprop(code, UC_LU|UC_LL|UC_LM|UC_LO|UC_LT|UC_ND, 0);
}
public static boolean uciscntrl(int code) {
return ucisprop(code, UC_CC|UC_CF, 0);
}
public static boolean ucisspace(int code) {
return ucisprop(code, UC_ZS|UC_SS, 0);
}
public static boolean ucisblank(int code) {
return ucisprop(code, UC_ZS, 0);
}
public static boolean ucispunct(int code) {
return ucisprop(code, UC_PD|UC_PS|UC_PE|UC_PO, UC_PI|UC_PF);
}
public static boolean ucisgraph(int code) {
return ucisprop(code, UC_MN|UC_MC|UC_ME|UC_ND|UC_NL|UC_NO|
UC_LU|UC_LL|UC_LT|UC_LM|UC_LO|UC_PC|UC_PD|
UC_PS|UC_PE|UC_PO|UC_SM|UC_SM|UC_SC|UC_SK|
UC_SO, UC_PI|UC_PF);
}
public static boolean ucisprint(int code) {
return ucisprop(code, UC_MN|UC_MC|UC_ME|UC_ND|UC_NL|UC_NO|
UC_LU|UC_LL|UC_LT|UC_LM|UC_LO|UC_PC|UC_PD|
UC_PS|UC_PE|UC_PO|UC_SM|UC_SM|UC_SC|UC_SK|
UC_SO|UC_ZS, UC_PI|UC_PF);
}
public static boolean ucisupper(int code) {
return ucisprop(code, UC_LU, 0);
}
public static boolean ucislower(int code) {
return ucisprop(code, UC_LL, 0);
}
public static boolean ucistitle(int code) {
return ucisprop(code, UC_LT, 0);
}
public static boolean ucisxdigit(int code) {
return ucisprop(code, 0, UC_HD);
}
public static boolean ucisisocntrl(int code) {
return ucisprop(code, UC_CC, 0);
}
public static boolean ucisfmtcntrl(int code) {
return ucisprop(code, UC_CF, 0);
}
public static boolean ucissymbol(int code) {
return ucisprop(code, UC_SM|UC_SC|UC_SO|UC_SK, 0);
}
public static boolean ucisnumber(int code) {
return ucisprop(code, UC_ND|UC_NO|UC_NL, 0);
}
public static boolean ucisnonspacing(int code) {
return ucisprop(code, UC_MN, 0);
}
public static boolean ucisopenpunct(int code) {
return ucisprop(code, UC_PS, 0);
}
public static boolean ucisclosepunct(int code) {
return ucisprop(code, UC_PE, 0);
}
public static boolean ucisinitialpunct(int code) {
return ucisprop(code, 0, UC_PI);
}
public static boolean ucisfinalpunct(int code) {
return ucisprop(code, 0, UC_PF);
}
public static boolean uciscomposite(int code) {
return ucisprop(code, 0, UC_CM);
}
public static boolean ucishex(int code) {
return ucisprop(code, 0, UC_HD);
}
public static boolean ucisquote(int code) {
return ucisprop(code, 0, UC_QM);
}
public static boolean ucissymmetric(int code) {
return ucisprop(code, 0, UC_SY);
}
public static boolean ucismirroring(int code) {
return ucisprop(code, 0, UC_MR);
}
public static boolean ucisnonbreaking(int code) {
return ucisprop(code, 0, UC_NB);
}
public static boolean ucisrtl(int code) {
return ucisprop(code, UC_R, 0);
}
public static boolean ucisltr(int code) {
return ucisprop(code, UC_L, 0);
}
public static boolean ucisstrong(int code) {
return ucisprop(code, UC_L|UC_R, 0);
}
public static boolean ucisweak(int code) {
return ucisprop(code, UC_EN|UC_ES, UC_ET|UC_AN|UC_CS);
}
public static boolean ucisneutral(int code) {
return ucisprop(code, 0, UC_B|UC_S|UC_WS|UC_ON);
}
public static boolean ucisseparator(int code) {
return ucisprop(code, 0, UC_B|UC_S);
}
public static boolean ucismark(int code) {
return ucisprop(code, UC_MN|UC_MC|UC_ME, 0);
}
public static boolean ucismodif(int code) {
return ucisprop(code, UC_LM, 0);
}
public static boolean ucisletnum(int code) {
return ucisprop(code, UC_NL, 0);
}
public static boolean ucisconnect(int code) {
return ucisprop(code, UC_PC, 0);
}
public static boolean ucisdash(int code) {
return ucisprop(code, UC_PD, 0);
}
public static boolean ucismath(int code) {
return ucisprop(code, UC_SM, 0);
}
public static boolean uciscurrency(int code) {
return ucisprop(code, UC_SC, 0);
}
public static boolean ucismodifsymbol(int code) {
return ucisprop(code, UC_SK, 0);
}
public static boolean ucisnsmark(int code) {
return ucisprop(code, UC_MN, 0);
}
public static boolean ucisspmark(int code) {
return ucisprop(code, UC_MC, 0);
}
public static boolean ucisenclosing(int code) {
return ucisprop(code, UC_ME, 0);
}
public static boolean ucisprivate(int code) {
return ucisprop(code, UC_CO, 0);
}
public static boolean ucissurrogate(int code) {
return ucisprop(code, UC_OS, 0);
}
public static boolean ucislsep(int code) {
return ucisprop(code, UC_ZL, 0);
}
public static boolean ucispsep(int code) {
return ucisprop(code, UC_ZP, 0);
}
public static boolean ucisidentstart(int code) {
return ucisprop(code, UC_LU|UC_LL|UC_LT|UC_LO|UC_NL, 0);
}
public static boolean ucisidentpart(int code) {
return ucisprop(code, UC_LU|UC_LL|UC_LT|UC_LO|UC_NL|
UC_MN|UC_MC|UC_ND|UC_PC|UC_CF, 0);
}
public static boolean ucisdefined(int code) {
return ucisprop(code, 0, UC_CP);
}
public static boolean ucisundefined(int code) {
return (ucisprop(code, 0, UC_CP) == true) ? false : true;
}
public static boolean ucishan(int code) {
return ((0x4e00 <= code && code <= 0x9fff) ||
(0xf900 <= code && code <= 0xfaff)) ? true : false;
}
public static boolean ucishangul(int code) {
return (0xac00 <= code && code <= 0xd7ff) ? true : false;
}
/**********************************************************************
*
* Case mapping section.
*
**********************************************************************/
private static int[] _uccase_len = {0, 0};
private static int[] _uccase_map = null;
private static boolean _uccase_load(URL where) {
int i, n;
boolean res;
InputStream in = null;
//
// If this array exists, then the file has already been loaded.
//
if (_uccase_map != null)
return true;
try {
in = where.openStream();
} catch (IOException e1) {
return false;
}
res = load_file(in);
try {
in.close();
} catch (IOException e) {}
if (res == false)
return res;
n = getShort(2) * 3;
_uccase_len[0] = getShort() * 3;
_uccase_len[1] = getShort() * 3;
_uccase_map = new int[n];
for (i = 0; i < n; i++)
_uccase_map[i] = getInt();
return true;
}
private static void _uccase_unload() {
_uccase_len[0] = _uccase_len[1] = 0;
_uccase_map = null;
}
private static int _uccase_lookup(int code, int l, int r, int field) {
int m;
while (l <= r) {
m = (l + r) >> 1;
m -= (m % 3);
if (code > _uccase_map[m])
l = m + 3;
else if (code < _uccase_map[m])
r = m - 3;
else
return _uccase_map[m + field];
}
return -1;
}
public static int uctoupper(int code) {
int l, r, field;
if (ucisupper(code))
return code;
if (ucislower(code)) {
//
// Lower case.
//
field = 2;
l = _uccase_len[0];
r = (l + _uccase_len[1]) - 3;
} else {
//
// Title case.
//
field = 1;
l = _uccase_len[0] + _uccase_len[1];
r = _uccase_map.length - 3;
}
return _uccase_lookup(code, l, r, field);
}
public static int uctolower(int code) {
int l, r, field;
if (ucislower(code))
return code;
if (ucisupper(code)) {
//
// Upper case.
//
field = 1;
l = 0;
r = _uccase_len[0] - 3;
} else {
//
// Title case.
//
field = 2;
l = _uccase_len[0] + _uccase_len[1];
r = _uccase_map.length - 1;
}
return _uccase_lookup(code, l, r, field);
}
public static int uctotitle(int code) {
int l, r, field;
if (ucistitle(code))
return code;
field = 2;
if (ucisupper(code)) {
//
// Upper case.
//
l = 0;
r = _uccase_len[0] - 3;
} else {
//
// Lower case.
//
l = _uccase_len[0];
r = (l + _uccase_len[1]) - 3;
}
return _uccase_lookup(code, l, r, field);
}
/**********************************************************************
*
* Character decomposition section.
*
**********************************************************************/
static int _ucdcmp_node_count = 0;
static int[] _ucdcmp_data = null;
private static boolean _ucdcmp_load(URL where) {
int i, bcnt;
boolean res;
InputStream in = null;
//
// If this array is not null, then the file has already been loaded.
//
if (_ucdcmp_data != null)
return true;
try {
in = where.openStream();
} catch (IOException e1) {
return false;
}
res = load_file(in);
try {
in.close();
} catch (IOException e) {}
if (res == false)
return res;
//
// This specifies how many of the _ucdmp_data elements are nodes which
// leaves the remaining number to be decompositions.
//
_ucdcmp_node_count = getShort() << 1;
bcnt = getInt() >> 2;
_ucdcmp_data = new int[bcnt];
for (i = 0; i < bcnt; i++)
_ucdcmp_data[i] = getInt();
return res;
}
private static void _ucdcmp_unload() {
_ucdcmp_node_count = 0;
_ucdcmp_data = null;
}
public static int[] ucdecomp(int code) {
int l, r, m, out[];
l = 0;
r = _ucdcmp_data[_ucdcmp_node_count] - 1;
while (l <= r) {
//
// Determine a "mid" point and adjust to make sure the mid point
// is at the beginning of a code+offset pair.
//
m = (l + r) >> 1;
m -= (m & 1);
if (code > _ucdcmp_data[m])
l = m + 2;
else if (code < _ucdcmp_data[m])
r = m - 2;
else {
l = _ucdcmp_data[m + 3] - _ucdcmp_data[m + 1];
out = new int[l];
for (r = 0; r < l; r++)
out[r] = _ucdcmp_data[_ucdcmp_node_count + 1 +
_ucdcmp_data[m + 1] + r];
return out;
}
}
return null;
}
public static int[] ucdecomp_hangul(int code) {
int out[], decomp[] = {0, 0, 0};
if (!ucishangul(code))
return null;
code -= 0xac00;
decomp[0] = 0x1100 + (code / 588);
decomp[1] = 0x1161 + ((code % 588) / 28);
decomp[2] = 0x11a7 + (code % 28);
out = new int[(decomp[2] != 0x11a7) ? 3 : 2];
out[0] = decomp[0];
out[1] = decomp[1];
if (decomp[0] != 0x11a7)
out[2] = decomp[2];
return out;
}
/**********************************************************************
*
* Combining class section.
*
**********************************************************************/
private static int[] _uccmbcl_nodes = null;
private static boolean _uccmbcl_load(URL where) {
int i, n;
boolean res;
InputStream in = null;
//
// If this array is not null, the file has already been loaded.
//
if (_uccmbcl_nodes != null)
return true;
try {
in = where.openStream();
} catch (IOException e1) {
return false;
}
res = load_file(in);
try {
in.close();
} catch (IOException e) {}
if (res == false)
return res;
n = getShort() * 3;
buffpos += 4;
_uccmbcl_nodes = new int[n];
for (i = 0; i < n; i++)
_uccmbcl_nodes[i] = getInt();
return true;
}
private static void _uccmbcl_unload() {
_uccmbcl_nodes = null;
}
public static int uccombining_class(int code) {
int l, r, m;
l = 0;
r = _uccmbcl_nodes.length - 3;
while (l <= r) {
m = (l + r) >> 1;
m -= (m % 3);
if (code > _uccmbcl_nodes[m + 1])
l = m + 3;
else if (code < _uccmbcl_nodes[m])
r = m - 3;
else if (_uccmbcl_nodes[m] <= code &&
code <= _uccmbcl_nodes[m + 1])
return _uccmbcl_nodes[m + 2];
}
return 0;
}
/**********************************************************************
*
* Number section.
*
**********************************************************************/
private static short[] _ucnum_vals;
private static int[] _ucnum_nodes;
private static boolean _ucnumb_load(URL where) {
int i, n, b;
boolean res;
InputStream in = null;
//
// If this array is not null, then the file has already been loaded.
//
if (_ucnum_nodes != null)
return true;
try {
in = where.openStream();
} catch (IOException e1) {
return false;
}
res = load_file(in);
try {
in.close();
} catch (IOException e) {}
if (res == false)
return res;
n = getShort();
b = (getInt() - (n << 2)) >> 1;
_ucnum_nodes = new int[n];
for (i = 0; i < n; i++)
_ucnum_nodes[i] = getInt();
_ucnum_vals = new short[b];
for (i = 0; i < b; i++)
_ucnum_vals[i] = getShort();
return true;
}
private static void _ucnumb_unload() {
_ucnum_vals = null;
_ucnum_nodes = null;
}
public static boolean ucnumber_lookup(int code, int[] result) {
int l, r, m;
result[0] = result[1] = 0;
l = 0;
r = _ucnum_nodes.length - 1;
while (l <= r) {
m = (l + r) >> 1;
m -= (m & 1);
if (code > _ucnum_nodes[m])
l = m + 2;
else if (code < _ucnum_nodes[m])
r = m - 2;
else {
result[0] = _ucnum_vals[_ucnum_nodes[m + 1]];
result[1] = _ucnum_vals[_ucnum_nodes[m + 1] + 1];
return true;
}
}
return false;
}
public static boolean ucdigit_lookup(int code, int[] result) {
int l, r, m;
result[0] = -1;
l = 0;
r = _ucnum_nodes.length - 1;
while (l <= r) {
m = (l + r) >> 1;
m -= (m & 1);
if (code > _ucnum_nodes[m])
l = m + 2;
else if (code < _ucnum_nodes[m])
r = m - 2;
else {
short d1 = _ucnum_vals[_ucnum_nodes[m + 1]];
short d2 = _ucnum_vals[_ucnum_nodes[m + 1] + 1];
if (d1 == d2) {
result[0] = d1;
return true;
}
return false;
}
}
return false;
}
/**********************************************************************
*
* File loading and unloading routines.
*
**********************************************************************/
//
// Masks that combine to load and unload files using a base URL.
//
public final static int UCDATA_CASE = 0x01;
public final static int UCDATA_CTYPE = 0x02;
public final static int UCDATA_DECOMP = 0x04;
public final static int UCDATA_CMBCL = 0x08;
public final static int UCDATA_NUM = 0x10;
public final static int UCDATA_ALL = 0x1f;
public static void ucdata_load(URL base, int masks) {
//
// Make sure the base has the trailing slash.
//
String url = base.toString();
if (url.lastIndexOf('/') != url.length() - 1)
url += "/";
if ((masks & UCDATA_CTYPE) != 0) {
try {
_ucprop_load(new URL(url + "ctype.dat"));
} catch (MalformedURLException mue) {}
}
if ((masks & UCDATA_CASE) != 0) {
try {
_uccase_load(new URL(url + "case.dat"));
} catch (MalformedURLException mue) {}
}
if ((masks & UCDATA_DECOMP) != 0) {
try {
_ucdcmp_load(new URL(url + "decomp.dat"));
} catch (MalformedURLException mue) {}
}
if ((masks & UCDATA_CMBCL) != 0) {
try {
_uccmbcl_load(new URL(url + "cmbcl.dat"));
} catch (MalformedURLException mue) {}
}
if ((masks & UCDATA_NUM) != 0) {
try {
_ucnumb_load(new URL(url + "num.dat"));
} catch (MalformedURLException mue) {}
}
}
public static void ucdata_unload(int masks) {
if ((masks & UCDATA_CTYPE) != 0)
_ucprop_unload();
if ((masks & UCDATA_CASE) != 0)
_uccase_unload();
if ((masks & UCDATA_DECOMP) != 0)
_ucdcmp_unload();
if ((masks & UCDATA_CMBCL) != 0)
_uccmbcl_unload();
if ((masks & UCDATA_NUM) != 0)
_ucnumb_unload();
}
}

View File

@ -1,94 +0,0 @@
/*
* $Id: UCDataTest.java,v 1.1 1999/08/23 16:14:08 mleisher Exp $
*
* Copyright 1999 Computing Research Labs, New Mexico State University
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import java.io.*;
import java.net.*;
import UCData.*;
public class UCDataTest {
/**********************************************************************
*
* Main.
*
**********************************************************************/
public static void main(String[] args) {
URL url = null;
try {
url = new URL("file:/home/mleisher/unicode/textutils/ucdata");
} catch (MalformedURLException mue) {}
UCData.ucdata_load(url, UCData.UCDATA_ALL);
if (UCData.ucisalpha(0x1d5))
System.out.println("0x1d5 is alpha");
else
System.out.println("0x1d5 is not alpha");
int c;
c = UCData.uctolower(0x1f1);
System.out.println("0x1f1 lower is 0x"+Integer.toHexString(c));
c = UCData.uctotitle(0x1f1);
System.out.println("0x1f1 title is 0x"+Integer.toHexString(c));
c = UCData.uctolower(0xff3a);
System.out.println("0xff3a lower is 0x"+Integer.toHexString(c));
c = UCData.uctotitle(0xff3a);
System.out.println("0xff3a title is 0x"+Integer.toHexString(c));
int[] decomp = UCData.ucdecomp(0x1d5);
if (decomp != null) {
System.out.print("0x1d5 decomposition :");
for (int i = 0; i < decomp.length; i++)
System.out.print("0x"+Integer.toHexString(decomp[i])+" ");
System.out.println("");
}
int ccl = UCData.uccombining_class(0x41);
System.out.println("0x41 combining class " + ccl);
ccl = UCData.uccombining_class(0xfe23);
System.out.println("0xfe23 combining class " + ccl);
int num[] = {0,0};
if (UCData.ucnumber_lookup(0x30, num)) {
if (num[0] != num[1])
System.out.println("0x30 is fraction "+num[0]+"/"+num[1]);
else
System.out.println("0x30 is digit "+num[0]);
}
if (UCData.ucnumber_lookup(0xbc, num)) {
if (num[0] != num[1])
System.out.println("0xbc is fraction "+num[0]+"/"+num[1]);
else
System.out.println("0xbc is digit "+num[0]);
}
if (UCData.ucdigit_lookup(0x6f9, num))
System.out.println("0x6f9 is digit " + num[0]);
else
System.out.println("0x6f9 is not a digit");
}
}