package hep.io.xdr; import java.io.Closeable; import java.io.DataInput; import java.io.IOException; /** * An interface implemented by input streams that support XDR. * * The XDR format is almost identical to the normal Java DataInput * format, except that items are padded to 4 byte boundaries, and * strings are normally stored in ASCII format. * @author Tony Johnson (tonyj@slac.stanford.edu) * @version $Id: XDRDataInput.java 13659 2009-10-09 23:23:47Z tonyj $ */ public interface XDRDataInput extends DataInput, Closeable { /** * Skips appropriate amount to bring stream to 4-byte boundary. */ void pad() throws IOException; /** * Reads a double array. Assumes int length proceeds array. * Throws an exception if array length > 32767 to protect * against bad data exhausting memory. If buffer is not null, * and is large enough to hold array, it is filled and returned, * otherwise a new array is allocated and returned. */ double[] readDoubleArray(double[] buffer) throws IOException; /** * Reads a float array. Assumes int length proceeds array. * Throws an exception if array length > 32767 to protect * against bad data exhausting memory. If buffer is not null, * and is large enough to hold array, it is filled and returned, * otherwise a new array is allocated and returned. */ float[] readFloatArray(float[] buffer) throws IOException; /** * Reads an integer array. Assumes int length proceeds array. * Throws an exception if array length > 32767 to protect * against bad data exhausting memory. If buffer is not null, * and is large enough to hold array, it is filled and returned, * otherwise a new array is allocated and returned. */ int[] readIntArray(int[] buffer) throws IOException; /** * Read a String. Assumes int length proceeds String. * Throws an exception if string length > 32767 to protect * against bad data exhausting memory. */ String readString() throws IOException; /** * Reads a String of length l bytes, and skips appropriate * amount to bring stream to 4-byte boundary. */ String readString(int l) throws IOException; }