// PART OF THE MACHINE SIMULATION. DO NOT CHANGE. package nachos.machine; /** * A read-only <tt>OpenFile</tt> backed by a byte array. */ public class ArrayFile extends OpenFileWithPosition { /** * Allocate a new <tt>ArrayFile</tt>. * * @param array the array backing this file. */ public ArrayFile(byte[] array) { this.array = array; } public int length() { return array.length; } public void close() { array = null; } public int read(int position, byte[] buf, int offset, int length) { Lib.assertTrue(offset >= 0 && length >= 0 && offset+length <= buf.length); if (position < 0 || position >= array.length) return 0; length = Math.min(length, array.length-position); System.arraycopy(array, position, buf, offset, length); return length; } public int write(int position, byte[] buf, int offset, int length) { return 0; } private byte[] array; }