/* Copyright 2006 by Daniel Kuebrich Licensed under the Academic Free License version 3.0 See the file "LICENSE" for more information */ package sim.app.lsystem; public class ByteList implements java.io.Serializable { // Use exactly this serialVersionUID: the lss classes were serialized under it private static final long serialVersionUID = -7841332939713409966L; public byte[] b; public int length = 0; ByteList() { b = new byte[16]; } ByteList(int size) { b = new byte[size]; } ByteList(ByteList a) { b = new byte[a.b.length]; System.arraycopy(a.b,0,b,0,a.length); length = a.length; } public void resize(int toAtLeast) { if (b.length >= toAtLeast) // already at least as big as requested return; if (b.length * 2 > toAtLeast) // worth doubling toAtLeast = b.length * 2; // now resize byte[] newb = new byte[toAtLeast]; System.arraycopy(b,0,newb,0,length); b=newb; } // assume only one addition at a time public void add(byte n) { if (length + 1 > b.length) resize(length + 1); b[length] = n; length++; } public void addAll(ByteList a) { if (length + a.length > b.length) resize(length + a.length); System.arraycopy(a.b, 0, b,length,a.length); length += a.length; } public void clear() { b = new byte[16]; length = 0; } }