mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-05-22 09:14:50 +00:00
131 lines
2.6 KiB
Java
131 lines
2.6 KiB
Java
package com.jpexs.proxy;
|
|
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
|
|
public class ByteArray {
|
|
|
|
public byte[] bytes;
|
|
public int offset = 0;
|
|
|
|
/**
|
|
* Create a ByteArray with the default size.
|
|
*/
|
|
public ByteArray() {
|
|
this(512);
|
|
}
|
|
|
|
/**
|
|
* Create a ByteArray with a specific default size.
|
|
*/
|
|
public ByteArray(int size) {
|
|
bytes = new byte[size];
|
|
}
|
|
|
|
/**
|
|
* Create a ByteArray from a String.
|
|
*/
|
|
public ByteArray(String s) {
|
|
this(s.length());
|
|
append(s);
|
|
}
|
|
|
|
/**
|
|
* Create a ByteArray from an array of bytes.
|
|
*/
|
|
public ByteArray(byte[] b) {
|
|
this(b.length);
|
|
append(b);
|
|
}
|
|
|
|
/**
|
|
* Append a byte.
|
|
*/
|
|
public void append(byte ch) {
|
|
if (offset == bytes.length) {
|
|
byte[] tmpbytes = bytes;
|
|
bytes = new byte[tmpbytes.length * 2];
|
|
System.arraycopy(tmpbytes, 0, bytes, 0, offset);
|
|
}
|
|
bytes[offset++] = ch;
|
|
}
|
|
|
|
/**
|
|
* Append a ByteArray.
|
|
*/
|
|
public void append(ByteArray b) {
|
|
if (bytes.length - offset < b.length()) {
|
|
byte[] tmpbytes = bytes;
|
|
bytes = new byte[tmpbytes.length + b.length()];
|
|
System.arraycopy(tmpbytes, 0, bytes, 0, offset);
|
|
}
|
|
System.arraycopy(b.bytes, 0, bytes, offset, b.length());
|
|
offset += b.length();
|
|
}
|
|
|
|
/**
|
|
* Append an array of bytes.
|
|
*/
|
|
public void append(byte[] b) {
|
|
if (bytes.length - offset < b.length) {
|
|
byte[] tmpbytes = bytes;
|
|
bytes = new byte[tmpbytes.length + b.length];
|
|
System.arraycopy(tmpbytes, 0, bytes, 0, offset);
|
|
}
|
|
System.arraycopy(b, 0, bytes, offset, b.length);
|
|
offset += b.length;
|
|
}
|
|
|
|
/**
|
|
* Append a String.
|
|
*/
|
|
public void append(String s) {
|
|
append(s.getBytes());
|
|
}
|
|
|
|
/**
|
|
* Convert to String.
|
|
*/
|
|
public String toString() {
|
|
return new String(bytes, 0, offset);
|
|
}
|
|
|
|
/**
|
|
* Return the bytes.
|
|
*/
|
|
public byte[] getBytes() {
|
|
return bytes;
|
|
}
|
|
|
|
public void writeTo(OutputStream out)
|
|
throws IOException {
|
|
out.write(bytes, 0, offset);
|
|
}
|
|
|
|
public byte get(int i) {
|
|
return bytes[i];
|
|
}
|
|
|
|
/**
|
|
* Return the number of bytes.
|
|
*/
|
|
public int length() {
|
|
return offset;
|
|
}
|
|
|
|
public void erase() {
|
|
offset = 0;
|
|
}
|
|
|
|
public void chop() {
|
|
chop(1);
|
|
}
|
|
|
|
public void chop(int i) {
|
|
offset -= i;
|
|
if (offset < 0) {
|
|
offset = 0;
|
|
}
|
|
}
|
|
}
|