package slangc.streams; import slang.streams.SyncOutput; public class ArrayOutput implements SyncOutput { byte[] buffer; //int top; public ArrayOutput() { buffer = new byte[0]; } public void innerResize(int newsz) { byte[] nbuf = new byte[newsz]; for (int i = 0; i < nbuf.length && i < buffer.length; i++) { nbuf[i] = buffer[i]; } buffer = nbuf; } public int writeBuffer(byte[] b, int from, int max) { if (from >= b.length) { return 0; } if (from + max > b.length) { max = b.length - from; } int base = buffer.length; innerResize(buffer.length + max); for (int i = 0; i < max; i++) { buffer[base + i] = b[from + i]; } return max; } public void close() { } }