package com.coderising.jvm.loader;
import java.util.Arrays;
import com.coderising.jvm.util.Util;
public class ByteCodeIterator {
private byte[] codes;
private int pos;
public ByteCodeIterator(byte[] codes) {
this.codes = codes;
}
public byte[] getBytes(int length){
byte[] data = Arrays.copyOfRange(codes, pos, pos + length);
pos += length;
return data;
}
public int nextU1ToInt(){
return Util.byteToInt(new byte[]{codes[pos++]});
}
public int nextU2ToInt(){
return Util.byteToInt(new byte[]{codes[pos++],codes[pos++]});
}
public int nextU4ToInt(){
return Util.byteToInt(new byte[]{codes[pos++],codes[pos++],codes[pos++],codes[pos++]});
}
public String nextU1ToString(){
return Util.byteToHexString(new byte[]{codes[pos++]});
}
public String nextU2ToString(){
return Util.byteToHexString(new byte[]{codes[pos++],codes[pos++]});
}
public String nextU4ToString(){
return Util.byteToHexString(new byte[]{codes[pos++],codes[pos++],codes[pos++],codes[pos++]});
}
}