| Index: third_party/jmake/src/org/pantsbuild/jmake/BinaryFileReader.java
|
| diff --git a/third_party/jmake/src/org/pantsbuild/jmake/BinaryFileReader.java b/third_party/jmake/src/org/pantsbuild/jmake/BinaryFileReader.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6e2cb4ef42ca648307440407c1319757ec322b00
|
| --- /dev/null
|
| +++ b/third_party/jmake/src/org/pantsbuild/jmake/BinaryFileReader.java
|
| @@ -0,0 +1,96 @@
|
| +/* Copyright (c) 2002-2008 Sun Microsystems, Inc. All rights reserved
|
| + *
|
| + * This program is distributed under the terms of
|
| + * the GNU General Public License Version 2. See the LICENSE file
|
| + * at the top of the source tree.
|
| + */
|
| +package org.pantsbuild.jmake;
|
| +
|
| +import java.io.DataInputStream;
|
| +import java.io.ByteArrayInputStream;
|
| +import java.io.IOException;
|
| +
|
| +/**
|
| + * Basic operations for reading a byte array representing a binary file.
|
| + *
|
| + * @author Misha Dmitriev
|
| + * 10 November 2001
|
| + */
|
| +public class BinaryFileReader {
|
| +
|
| + protected byte[] buf;
|
| + protected int curBufPos;
|
| + protected String fileFullPath; // Required only for nice error reports
|
| +
|
| + protected void initBuf(byte[] buf, String fileFullPath) {
|
| + this.buf = buf;
|
| + curBufPos = 0;
|
| + this.fileFullPath = fileFullPath;
|
| + }
|
| +
|
| + protected char nextChar() {
|
| + return (char) (((buf[curBufPos++] & 255) << 8) + (buf[curBufPos++] & 255));
|
| + }
|
| +
|
| + protected char getChar(int bufPos) {
|
| + return (char) (((buf[bufPos] & 255) << 8) + (buf[bufPos+1] & 255));
|
| + }
|
| +
|
| + protected int nextInt() {
|
| + return ((buf[curBufPos++] & 255) << 24) + ((buf[curBufPos++] & 255) << 16) +
|
| + ((buf[curBufPos++] & 255) << 8) + (buf[curBufPos++] & 255);
|
| + }
|
| +
|
| + protected int getInt(int bufPos) {
|
| + return ((buf[bufPos] & 255) << 24) + ((buf[bufPos+1] & 255) << 16) +
|
| + ((buf[bufPos+2] & 255) << 8) + (buf[bufPos+3] & 255);
|
| + }
|
| +
|
| + protected long nextLong() {
|
| + long res = getLong(curBufPos);
|
| + curBufPos += 8;
|
| + return res;
|
| + }
|
| +
|
| + protected long getLong(int bufPos) {
|
| + DataInputStream bufin =
|
| + new DataInputStream(new ByteArrayInputStream(buf, bufPos, 8));
|
| + try {
|
| + return bufin.readLong();
|
| + } catch (IOException e) {
|
| + throw new PrivateException(e);
|
| + }
|
| + }
|
| +
|
| + protected float nextFloat() {
|
| + float res = getFloat(curBufPos);
|
| + curBufPos += 4;
|
| + return res;
|
| + }
|
| +
|
| + protected float getFloat(int bufPos) {
|
| + DataInputStream bufin =
|
| + new DataInputStream(new ByteArrayInputStream(buf, bufPos, 4));
|
| + try {
|
| + return bufin.readFloat();
|
| + } catch (IOException e) {
|
| + throw new PrivateException(e);
|
| + }
|
| + }
|
| +
|
| + protected double nextDouble() {
|
| + double res = getDouble(curBufPos);
|
| + curBufPos += 8;
|
| + return res;
|
| + }
|
| +
|
| + protected double getDouble(int bufPos) {
|
| + DataInputStream bufin =
|
| + new DataInputStream(new ByteArrayInputStream(buf, bufPos, 8));
|
| + try {
|
| + return bufin.readDouble();
|
| + } catch (IOException e) {
|
| + throw new PrivateException(e);
|
| + }
|
| + }
|
| +}
|
|
|