X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Feclipse%2Fjdt%2Finternal%2Fcompiler%2Fclassfmt%2FClassFileStruct.java;fp=src%2Forg%2Feclipse%2Fjdt%2Finternal%2Fcompiler%2Fclassfmt%2FClassFileStruct.java;h=0000000000000000000000000000000000000000;hb=6f0cd02d46e011bd5599e1b7fefc6159cb811135;hp=caaaa17e370283d004800be70e1b048e254786fd;hpb=622d0e5a4b1b35b6918a516a79a0cc22272a919e;p=org.ibex.tool.git diff --git a/src/org/eclipse/jdt/internal/compiler/classfmt/ClassFileStruct.java b/src/org/eclipse/jdt/internal/compiler/classfmt/ClassFileStruct.java deleted file mode 100644 index caaaa17..0000000 --- a/src/org/eclipse/jdt/internal/compiler/classfmt/ClassFileStruct.java +++ /dev/null @@ -1,188 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jdt.internal.compiler.classfmt; - -abstract public class ClassFileStruct implements ClassFileConstants { - byte[] reference; - int structOffset; -public ClassFileStruct(byte classFileBytes[], int off) { - reference = classFileBytes; - structOffset = off; -} -public ClassFileStruct (byte classFileBytes[], int off, boolean verifyStructure) { - reference = classFileBytes; - structOffset = off; -} -public double doubleAt(int relativeOffset) { - return (Double.longBitsToDouble(this.i8At(relativeOffset))); -} -public float floatAt(int relativeOffset) { - return (Float.intBitsToFloat(this.i4At(relativeOffset))); -} -public int i1At(int relativeOffset) { - return reference[relativeOffset + structOffset]; -} -public int i2At(int relativeOffset) { - int position = relativeOffset + structOffset; - return (reference[position++] << 8) + (reference[position] & 0xFF); -} -public int i4At(int relativeOffset) { - int position = relativeOffset + structOffset; - return ((reference[position++] & 0xFF) << 24) + ((reference[position++] & 0xFF) << 16) + ((reference[position++] & 0xFF) << 8) + (reference[position] & 0xFF); -} -public long i8At(int relativeOffset) { - int position = relativeOffset + structOffset; - return (((long) (reference[position++] & 0xFF)) << 56) - + (((long) (reference[position++] & 0xFF)) << 48) - + (((long) (reference[position++] & 0xFF)) << 40) - + (((long) (reference[position++] & 0xFF)) << 32) - + (((long) (reference[position++] & 0xFF)) << 24) - + (((long) (reference[position++] & 0xFF)) << 16) - + (((long) (reference[position++] & 0xFF)) << 8) - + (reference[position++] & 0xFF); -} -public static String printTypeModifiers(int modifiers) { - - java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream(); - java.io.PrintWriter print = new java.io.PrintWriter(out); - - if ((modifiers & AccPublic) != 0) print.print("public "); //$NON-NLS-1$ - if ((modifiers & AccPrivate) != 0) print.print("private "); //$NON-NLS-1$ - if ((modifiers & AccFinal) != 0) print.print("final "); //$NON-NLS-1$ - if ((modifiers & AccSuper) != 0) print.print("super "); //$NON-NLS-1$ - if ((modifiers & AccInterface) != 0) print.print("interface "); //$NON-NLS-1$ - if ((modifiers & AccAbstract) != 0) print.print("abstract "); //$NON-NLS-1$ - print.flush(); - return out.toString(); -} -public int u1At(int relativeOffset) { - return (reference[relativeOffset + structOffset] & 0xFF); -} -public int u2At(int relativeOffset) { - int position = relativeOffset + structOffset; - return ((reference[position++] & 0xFF) << 8) + (reference[position] & 0xFF); -} -public long u4At(int relativeOffset) { - int position = relativeOffset + structOffset; - return (((reference[position++] & 0xFFL) << 24) + ((reference[position++] & 0xFF) << 16) + ((reference[position++] & 0xFF) << 8) + (reference[position] & 0xFF)); -} -public char[] utf8At(int relativeOffset, int bytesAvailable) { - int length = bytesAvailable; - char outputBuf[] = new char[bytesAvailable]; - int outputPos = 0; - int readOffset = this.structOffset + relativeOffset; - - while (length != 0) { - int x = this.reference[readOffset++] & 0xFF; - length--; - if ((0x80 & x) != 0) { - if ((x & 0x20) != 0) { - length-=2; - x = ((x & 0xF) << 12) | ((this.reference[readOffset++] & 0x3F) << 6) | (this.reference[readOffset++] & 0x3F); - } else { - length--; - x = ((x & 0x1F) << 6) | (this.reference[readOffset++] & 0x3F); - } - } - outputBuf[outputPos++] = (char) x; - } - - if (outputPos != bytesAvailable) { - System.arraycopy(outputBuf, 0, (outputBuf = new char[outputPos]), 0, outputPos); - } - return outputBuf; -} - -protected void reset() { - this.reference = null; -} - -public char[] utf8At(int relativeOffset, int bytesAvailable, boolean testValidity) throws ClassFormatException { - int x, y, z; - int length = bytesAvailable; - char outputBuf[] = new char[bytesAvailable]; - int outputPos = 0; - int readOffset = structOffset + relativeOffset; - - while (length != 0) { - x = reference[readOffset++] & 0xFF; - length--; - if ((0x80 & x) != 0) { - if (testValidity) { - if ((0x40 & x) == 0) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - if (length < 1) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - } - y = this.reference[readOffset++] & 0xFF; - length--; - if (testValidity) { - if ((y & 0xC0) != 0x80) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - } - if ((x & 0x20) != 0) { - if (testValidity && (length < 1)) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - z = this.reference[readOffset++] & 0xFF; - length--; - if (testValidity && ((z & 0xC0) != 0x80)) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - x = ((x & 0x1F) << 12) + ((y & 0x3F) << 6) + (z & 0x3F); - if (testValidity && (x < 0x0800)) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - } else { - x = ((x & 0x1F) << 6) + (y & 0x3F); - if (testValidity && !((x == 0) || (x >= 0x80))) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - } - } else { - if (testValidity && x == 0) { - throw new ClassFormatException(ClassFormatException.ErrMalformedUtf8); - } - } - outputBuf[outputPos++] = (char) x; - } - - if (outputPos != bytesAvailable) { - System.arraycopy(outputBuf, 0, (outputBuf = new char[outputPos]), 0, outputPos); - } - return outputBuf; -} -public static void verifyMethodNameAndSignature(char[] name, char[] signature) throws ClassFormatException { - - // ensure name is not empty - if (name.length == 0) { - throw new ClassFormatException(ClassFormatException.ErrInvalidMethodName); - } - - // if name begins with the < character it must be clinit or init - if (name[0] == '<') { - if (new String(name).equals("") || new String(name).equals("")) { //$NON-NLS-2$ //$NON-NLS-1$ - int signatureLength = signature.length; - if (!((signatureLength > 2) - && (signature[0] == '(') - && (signature[signatureLength - 2] == ')') - && (signature[signatureLength - 1] == 'V'))) { - throw new ClassFormatException(ClassFormatException.ErrInvalidMethodSignature); - } - } else { - throw new ClassFormatException(ClassFormatException.ErrInvalidMethodName); - } - } -} -}