1 package com.tapina.robe.runtime; 2 3 /*** 4 * This class is a data block which is nothing but a byte array. 5 */ 6 public class RawDataBlock extends DataBlock { 7 private byte[] bytes; 8 private int size; 9 10 public RawDataBlock(int address, int size) { 11 super(address); 12 this.size = size; 13 bytes = new byte[size]; 14 } 15 16 public RawDataBlock(int address, byte[] bytes) { 17 super(address); 18 this.size = bytes.length; 19 this.bytes = bytes; 20 } 21 22 public final byte[] getBytes() { 23 return bytes; 24 } 25 26 public final void extendBackwards(int extension) { 27 byte[] newBytes = new byte[this.size + extension]; 28 System.arraycopy(bytes, 0, newBytes, extension, this.size); 29 setAddress(getAddress() - extension); 30 this.bytes = newBytes; 31 this.size += extension; 32 } 33 34 public final void extendForwards(int extension) { 35 setSize(this.size + extension); 36 } 37 38 public final int getSize() { 39 return size; 40 } 41 42 public void setSize(int newSize) { 43 byte[] newBytes = new byte[newSize]; 44 System.arraycopy(bytes, 0, newBytes, 0, newSize < size? newSize : size); 45 this.size = newSize; 46 this.bytes = newBytes; 47 } 48 49 public String toString() { 50 return "Length " + size + "/&" + Integer.toHexString(size) + ": &" + Integer.toHexString(getAddress()) + "-" + 51 Integer.toHexString(getAddress() + size - 1); 52 } 53 }