package org.jerlang.stdlib.beam_lib; import java.io.DataInputStream; public class FunctionTableChunkReader extends AbstractChunkReader<FunctionTableChunk> { private final AtomChunk atomChunk; public FunctionTableChunkReader(Chunk chunk, DataInputStream inputStream, AtomChunk atomChunk) { super(chunk, inputStream); this.atomChunk = atomChunk; } public FunctionTableChunk read() throws Throwable { FunctionTableChunk functionTableChunk = new FunctionTableChunk(chunk()); int index = 0; int numberOfLambdas = read4Bytes(); while (numberOfLambdas-- > 0) { functionTableChunk.add(nextLambdaInfo(index++)); } return functionTableChunk; } private LambdaInfo nextLambdaInfo(int index) throws Throwable { return new LambdaInfo( read4Bytes(), // function atom id read4Bytes(), // arity read4Bytes(), // label read4Bytes(), // index read4Bytes(), // num-free read4Bytes(), // old-unique index, // old-index atomChunk); } }