From f99b4ece2504b8e71e9bf0a069d499ac669de9d3 Mon Sep 17 00:00:00 2001 From: Markus Scherer Date: Mon, 25 Apr 2016 23:22:09 +0000 Subject: [PATCH] ICU-12450 move com.ibm.icu.dev.util.DataInputCompressor & DataOutputCompressor to org.unicode.unused X-SVN-Rev: 38647 --- .../ibm/icu/dev/util/DataInputCompressor.java | 229 ------------------ .../icu/dev/util/DataOutputCompressor.java | 207 ---------------- 2 files changed, 436 deletions(-) delete mode 100644 icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataInputCompressor.java delete mode 100644 icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataOutputCompressor.java diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataInputCompressor.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataInputCompressor.java deleted file mode 100644 index e38c06cc7e..0000000000 --- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataInputCompressor.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 1996-2012, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.dev.util; - -import java.io.DataInput; -import java.io.IOException; -import java.io.ObjectInput; -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.List; - -import com.ibm.icu.text.UTF16; - -/** - * Simple data input compressor. Nothing fancy, but much smaller footprint for - * ints and many strings. - */ -public final class DataInputCompressor implements ObjectInput { - static final boolean SHOW = false; - - private ObjectInput dataInput; - - private transient StringBuffer stringBuffer = new StringBuffer(); - - public DataInputCompressor(ObjectInput dataInput) { - this.dataInput = dataInput; - } - - public DataInput getDataInput() { - return dataInput; - } - - public void setDataInput(ObjectInput dataInput) { - this.dataInput = dataInput; - } - - public boolean readBoolean() throws IOException { - return dataInput.readBoolean(); - } - - public byte readByte() throws IOException { - return dataInput.readByte(); - } - - public int readUnsignedByte() throws IOException { - return dataInput.readUnsignedByte(); - } - - public double readDouble() throws IOException { - return dataInput.readDouble(); - } - - public float readFloat() throws IOException { - return dataInput.readFloat(); - } - - public void readFully(byte[] b) throws IOException { - dataInput.readFully(b); - } - - public void readFully(byte[] b, int off, int len) throws IOException { - dataInput.readFully(b, off, len); - } - - public int skipBytes(int n) throws IOException { - return dataInput.skipBytes(n); - } - - public String readLine() throws IOException { - return dataInput.readLine(); - } - - public int available() throws IOException { - return dataInput.available(); - } - public void close() throws IOException { - dataInput.close(); - } - public int read() throws IOException { - return dataInput.read(); - } - public int read(byte[] b) throws IOException { - return dataInput.read(b); - } - public int read(byte[] b, int off, int len) throws IOException { - return dataInput.read(b, off, len); - } - public Object readObject() throws ClassNotFoundException, IOException { - return dataInput.readObject(); - } - public long skip(long n) throws IOException { - return dataInput.skip(n); - } - public String toString() { - return dataInput.toString(); - } - // ==== New Routines ==== - - public char readChar() throws IOException { - return (char) readULong(); - } - - public short readShort() throws IOException { - return (short) readLong(); - } - - public int readUnsignedShort() throws IOException { - return (int) readULong(); - } - - public int readUShort() throws IOException { - return (int) readULong(); - } - - public int readInt() throws IOException { - return (int) readLong(); - } - - public int readUInt() throws IOException { - return (int) readULong(); - } - - public String readChars(int len) throws IOException { - stringBuffer.setLength(0); - for (int i = 0; i < len; ++i) { - int cp = (int) readULong(); - UTF16.append(stringBuffer, cp); - } - return stringBuffer.toString(); - } - - public String readUTF() throws IOException { - int len = (int) readULong(); - return readChars(len); - } - - public long readLong() throws IOException { - long result = 0; - int offset = 0; - while (true) { - long input = readByte(); - result |= (input & 0x7F) << offset; - if ((input & 0x80) == 0) - break; - offset += 7; - } - boolean negative = (result & 1) != 0; // get sign bit from the bottom, - // and invert - result >>>= 1; - if (negative) - result = ~result; - return result; - } - - public long readULong() throws IOException { - long result = 0; - int offset = 0; - while (true) { // read sequence of 7 bits, with top bit = 1 for - // continuation - int input = readByte(); - result |= (input & 0x7F) << offset; - if ((input & 0x80) == 0) - return result; - offset += 7; - } - } - - /** - * - */ - public Object[] readStringSet(Collection availableValues) - throws IOException { - int size = readUInt(); - if (SHOW) System.out.println("readStringSet"); - Object[] valuesList = new Object[size + 1]; - // first item is null - String lastString = ""; - ReadPool trailingPool = new ReadPool(); - for (int i = 0; i < size; ++i) { - int common = readUInt(); - boolean inPool = (common & 1) != 0; - common >>>= 1; - if (SHOW) System.out.println(common); - String current; - if (inPool) { - int poolIndex = readUInt(); - if (SHOW) System.out.println("\t" + poolIndex); - current = (String) trailingPool.get(poolIndex); - } else { - current = readUTF(); - trailingPool.add(current); - } - valuesList[i + 1] = lastString = lastString.substring(0, common) - + current; - if (SHOW) System.out.println("\t\t" + lastString); - if (availableValues != null) availableValues.add(current); - } - return valuesList; - } - - public static class ReadPool { - private List trailingPool = new ArrayList(); - public Object get(int index) { - return trailingPool.get(index); - } - public void add(Object o) { - trailingPool.add(o); - } - } - - /** - * @throws IOException - * @throws ClassNotFoundException - * - */ - public Object[] readCollection(LinkedHashSet availableValues) throws ClassNotFoundException, IOException { - int size = readUInt(); - Object[] valuesList = new Object[size + 1]; - for (int i = 0; i < size; ++i) { - valuesList[i + 1] = readObject(); - } - return valuesList; - } -} diff --git a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataOutputCompressor.java b/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataOutputCompressor.java deleted file mode 100644 index 9882522246..0000000000 --- a/icu4j/main/tests/framework/src/com/ibm/icu/dev/util/DataOutputCompressor.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 1996-2012, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.dev.util; - -import java.io.DataOutput; -import java.io.IOException; -import java.io.ObjectOutput; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.SortedSet; - -import com.ibm.icu.text.UTF16; - -/** - * Simple data output compressor. Nothing fancy, but much smaller footprint for ints and many strings. - */ -public final class DataOutputCompressor implements ObjectOutput { - static final boolean SHOW = false; - - private ObjectOutput dataOutput; - - public DataOutputCompressor(ObjectOutput dataOutput) { - this.dataOutput = dataOutput; - } - - public DataOutput getDataOutput() { - return dataOutput; - } - - public void setDataOutput(ObjectOutput dataOutput) { - this.dataOutput = dataOutput; - } - - public void write(byte[] b) throws IOException { - dataOutput.write(b); - } - - public void write(byte[] b, int off, int len) throws IOException { - dataOutput.write(b, off, len); - } - - public void write(int b) throws IOException { - dataOutput.write(b); - } - - public void writeBoolean(boolean v) throws IOException { - dataOutput.writeBoolean(v); - } - - public void writeByte(int v) throws IOException { - dataOutput.writeByte(v); - } - - public void writeBytes(String s) throws IOException { - dataOutput.writeBytes(s); - } - - public void writeDouble(double v) throws IOException { - dataOutput.writeDouble(v); - } - - public void writeFloat(float v) throws IOException { - dataOutput.writeFloat(v); - } - - public void close() throws IOException { - dataOutput.close(); - } - public void flush() throws IOException { - dataOutput.flush(); - } - public String toString() { - return dataOutput.toString(); - } - public void writeObject(Object obj) throws IOException { - dataOutput.writeObject(obj); - } - // ==== New Routines ==== - - public void writeChar(int v) throws IOException { - writeULong(v); - } - - public void writeShort(int v) throws IOException { - writeLong(v); - } - - public void writeUShort(int v) throws IOException { - writeULong(v); - } - - public void writeInt(int v) throws IOException { - writeLong(v); - } - - public void writeUInt(int v) throws IOException { - writeULong(v); - } - - public void writeUTF(String str) throws IOException { - writeULong(UTF16.countCodePoint(str)); - writeChars(str); - } - - public void writeChars(String s) throws IOException { - int cp = 0; - for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) { - cp = UTF16.charAt(s, i); - writeULong(cp); - } - } - - public void writeLong(long v) throws IOException { - long flag = 0; // put sign bit at the bottom, and invert - if (v < 0) { - v = ~v; - flag = 1; - } - v <<= 1; - v |= flag; - while (true) { - if ((v & ~0x7FL) == 0) { - dataOutput.writeByte((byte) v); - break; - } - dataOutput.writeByte((byte) (0x80L | v)); - v >>>= 7; - } - } - - public void writeULong(long v) throws IOException { - while (true) { // write sequence of 7 bits, with top bit = 1 for continuation - if ((v & ~0x7FL) == 0) { - dataOutput.writeByte((byte) v); - break; - } - dataOutput.writeByte((byte) (0x80L | v)); - v >>>= 7; - } - } - - /** - * - */ - public void writeStringSet(SortedSet c, Map object_index) throws IOException { - if (SHOW) System.out.println("writeStringSet"); - writeUInt(c.size()); - int i = 0; - object_index.put(null, new Integer(i++)); - WritePool trailingPool = new WritePool(); - String lastString = ""; - for (Iterator it = c.iterator(); it.hasNext();) { - String s = (String) it.next(); - object_index.put(s, new Integer(i++)); - int common = UnicodeMap.findCommonPrefix(lastString, s); // runlength encode - lastString = s; - String piece = s.substring(common); - if (SHOW) System.out.println(common); - common <<= 1; - int inPool = trailingPool.getIndex(piece); - if (inPool < 0) { - writeUInt(common); - writeUTF(piece); - trailingPool.put(piece); - } else { - writeUInt(common | 1); - writeUInt(inPool); - if (SHOW) System.out.println("\t" + inPool); - } - if (SHOW) System.out.println("\t\t" + lastString); - } - } - - public static class WritePool { - private Map trailingPool = new HashMap(); - private int poolCount = 0; - public int getIndex(Object o) { - Integer inPool = (Integer) trailingPool.get(o); - if (inPool == null) return -1; - return inPool.intValue(); - } - public void put(Object o) { - trailingPool.put(o, new Integer(poolCount++)); - } - } - - /** - * @throws IOException - * - */ - public void writeCollection(Collection c, Map object_index) throws IOException { - writeUInt(c.size()); - int i = 0; - object_index.put(null, new Integer(i++)); - for (Iterator it = c.iterator(); it.hasNext();) { - Object s = it.next(); - dataOutput.writeObject(s); - if (object_index != null) object_index.put(s, new Integer(i++)); - } - } -}