binaryoutputcapsule.java
来自「java 3d game jme 工程开发源代码」· Java 代码 · 共 880 行 · 第 1/2 页
JAVA
880 行
write(value[x]);
}
// int primitive
protected void write(int value) throws IOException {
baos.write(deflate(ByteUtils.convertToBytes(value)));
}
protected void write(int[] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
protected void write(int[][] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
// float primitive
protected void write(float value) throws IOException {
baos.write(ByteUtils.convertToBytes(value));
}
protected void write(float[] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
protected void write(float[][] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
// double primitive
protected void write(double value) throws IOException {
baos.write(ByteUtils.convertToBytes(value));
}
protected void write(double[] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
protected void write(double[][] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
// long primitive
protected void write(long value) throws IOException {
baos.write(deflate(ByteUtils.convertToBytes(value)));
}
protected void write(long[] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
protected void write(long[][] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
// short primitive
protected void write(short value) throws IOException {
baos.write(ByteUtils.convertToBytes(value));
}
protected void write(short[] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
protected void write(short[][] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
// boolean primitive
protected void write(boolean value) throws IOException {
baos.write(ByteUtils.convertToBytes(value));
}
protected void write(boolean[] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
protected void write(boolean[][] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
// String
protected void write(String value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
// write our output as UTF-8. Java misspells UTF-8 as UTF8 for official use in java.lang
byte[] bytes = value.getBytes("UTF8");
write(bytes.length);
baos.write(bytes);
}
protected void write(String[] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
protected void write(String[][] value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.length);
for (int x = 0; x < value.length; x++)
write(value[x]);
}
// BitSet
protected void write(BitSet value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
write(value.size());
// TODO: MAKE THIS SMALLER
for (int x = 0, max = value.size(); x < max; x++)
write(value.get(x));
}
// DEFLATOR for int and long
protected static byte[] deflate(byte[] bytes) {
int size = bytes.length;
if (size == 4) {
int possibleMagic = ByteUtils.convertIntFromBytes(bytes);
if (possibleMagic == NULL_OBJECT)
return NULL_BYTES;
else if (possibleMagic == DEFAULT_OBJECT)
return DEFAULT_BYTES;
}
for (int x = 0; x < bytes.length; x++) {
if (bytes[x] != 0)
break;
size--;
}
if (size == 0)
return new byte[1];
byte[] rVal = new byte[1 + size];
rVal[0] = (byte) size;
for (int x = 1; x < rVal.length; x++)
rVal[x] = bytes[bytes.length - size - 1 + x];
return rVal;
}
// BinarySavable
protected void write(Savable object) throws IOException {
if (object == null) {
write(NULL_OBJECT);
return;
}
int id = exporter.processBinarySavable(object);
write(id);
}
// BinarySavable array
protected void write(Savable[] objects) throws IOException {
if (objects == null) {
write(NULL_OBJECT);
return;
}
write(objects.length);
for (int x = 0; x < objects.length; x++) {
write(objects[x]);
}
}
protected void write(Savable[][] objects) throws IOException {
if (objects == null) {
write(NULL_OBJECT);
return;
}
write(objects.length);
for (int x = 0; x < objects.length; x++) {
write(objects[x]);
}
}
// ArrayList<BinarySavable>
protected void writeSavableArrayList(ArrayList array) throws IOException {
if (array == null) {
write(NULL_OBJECT);
return;
}
write(array.size());
for (Object bs : array) {
write((Savable) bs);
}
}
protected void writeSavableArrayListArray(ArrayList[] array)
throws IOException {
if (array == null) {
write(NULL_OBJECT);
return;
}
write(array.length);
for (ArrayList bs : array) {
writeSavableArrayList(bs);
}
}
protected void writeSavableArrayListArray2D(ArrayList[][] array)
throws IOException {
if (array == null) {
write(NULL_OBJECT);
return;
}
write(array.length);
for (ArrayList[] bs : array) {
writeSavableArrayListArray(bs);
}
}
// Map<BinarySavable, BinarySavable>
protected void writeSavableMap(
Map<? extends Savable, ? extends Savable> array) throws IOException {
if (array == null) {
write(NULL_OBJECT);
return;
}
write(array.size());
for (Savable key : array.keySet()) {
write(new Savable[] { key, array.get(key) });
}
}
protected void writeStringSavableMap(Map<String, ? extends Savable> array)
throws IOException {
if (array == null) {
write(NULL_OBJECT);
return;
}
write(array.size());
// write String array for keys
String[] keys = array.keySet().toArray(new String[] {});
write(keys);
// write Savable array for values
Savable[] values = array.values().toArray(new Savable[] {});
write(values);
}
// ArrayList<FloatBuffer>
protected void writeFloatBufferArrayList(ArrayList<FloatBuffer> array)
throws IOException {
if (array == null) {
write(NULL_OBJECT);
return;
}
write(array.size());
for (FloatBuffer buf : array) {
write(buf);
}
}
// ArrayList<FloatBuffer>
protected void writeByteBufferArrayList(ArrayList<ByteBuffer> array)
throws IOException {
if (array == null) {
write(NULL_OBJECT);
return;
}
write(array.size());
for (ByteBuffer buf : array) {
write(buf);
}
}
// NIO BUFFERS
// float buffer
protected void write(FloatBuffer value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
value.rewind();
int length = value.limit();
write(length);
for (int x = 0; x < length; x++) {
write(value.get());
}
value.rewind();
}
// int buffer
protected void write(IntBuffer value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
value.rewind();
int length = value.limit();
write(length);
for (int x = 0; x < length; x++) {
write(value.get());
}
value.rewind();
}
// byte buffer
protected void write(ByteBuffer value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
value.rewind();
int length = value.limit();
write(length);
for (int x = 0; x < length; x++) {
write(value.get());
}
value.rewind();
}
// short buffer
protected void write(ShortBuffer value) throws IOException {
if (value == null) {
write(NULL_OBJECT);
return;
}
value.rewind();
int length = value.limit();
write(length);
for (int x = 0; x < length; x++) {
write(value.get());
}
value.rewind();
}
public void write(Enum value, String name, Enum defVal) throws IOException {
if (value == defVal)
return;
if (value == null) {
write(NULL_OBJECT);
return;
} else {
write(value.name(), name, null);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?