X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/classfmt/ClassFileConstants.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/classfmt/ClassFileConstants.java index 364856e..a5dce4c 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/classfmt/ClassFileConstants.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/classfmt/ClassFileConstants.java @@ -1,19 +1,52 @@ /******************************************************************************* - * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 + * Copyright (c) 2000, 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * + * http://www.eclipse.org/legal/epl-v10.html + * * Contributors: * IBM Corporation - initial API and implementation - ******************************************************************************/ + *******************************************************************************/ package net.sourceforge.phpdt.internal.compiler.classfmt; -import net.sourceforge.phpdt.internal.compiler.env.*; +import net.sourceforge.phpdt.internal.compiler.ast.ASTNode; -public interface ClassFileConstants extends IConstants { +public interface ClassFileConstants { + int AccDefault = 0; + /* + * Modifiers + */ + int AccPublic = 0x0001; + int AccPrivate = 0x0002; + int AccProtected = 0x0004; + int AccStatic = 0x0008; + int AccFinal = 0x0010; + int AccSynchronized = 0x0020; + int AccVolatile = 0x0040; + int AccBridge = 0x0040; + int AccTransient = 0x0080; + int AccVarargs = 0x0080; + int AccNative = 0x0100; + int AccInterface = 0x0200; + int AccAbstract = 0x0400; + int AccStrictfp = 0x0800; + int AccSynthetic = 0x1000; + int AccAnnotation = 0x2000; + int AccEnum = 0x4000; + + /** + * Other VM flags. + */ + int AccSuper = 0x0020; + + /** + * Extra flags for types and members attributes. + */ + int AccAnnotationDefault = ASTNode.Bit18; // indicate presence of an attribute "DefaultValue" (annotation method) + int AccDeprecated = ASTNode.Bit21; // indicate presence of an attribute "Deprecated" + int Utf8Tag = 1; int IntegerTag = 3; int FloatTag = 4; @@ -37,4 +70,54 @@ public interface ClassFileConstants extends IConstants { int ConstantStringFixedSize = 3; int ConstantUtf8FixedSize = 3; int ConstantNameAndTypeFixedSize = 5; + + int MAJOR_VERSION_1_1 = 45; + int MAJOR_VERSION_1_2 = 46; + int MAJOR_VERSION_1_3 = 47; + int MAJOR_VERSION_1_4 = 48; + int MAJOR_VERSION_1_5 = 49; + int MAJOR_VERSION_1_6 = 50; + int MAJOR_VERSION_1_7 = 51; + + int MINOR_VERSION_0 = 0; + int MINOR_VERSION_1 = 1; + int MINOR_VERSION_2 = 2; + int MINOR_VERSION_3 = 3; + int MINOR_VERSION_4 = 4; + + // JDK 1.1 -> 1.7, comparable value allowing to check both major/minor version at once 1.4.1 > 1.4.0 + // 16 unsigned bits for major, then 16 bits for minor + long JDK1_1 = ((long)ClassFileConstants.MAJOR_VERSION_1_1 << 16) + ClassFileConstants.MINOR_VERSION_3; // 1.1. is 45.3 + long JDK1_2 = ((long)ClassFileConstants.MAJOR_VERSION_1_2 << 16) + ClassFileConstants.MINOR_VERSION_0; + long JDK1_3 = ((long)ClassFileConstants.MAJOR_VERSION_1_3 << 16) + ClassFileConstants.MINOR_VERSION_0; + long JDK1_4 = ((long)ClassFileConstants.MAJOR_VERSION_1_4 << 16) + ClassFileConstants.MINOR_VERSION_0; + long JDK1_5 = ((long)ClassFileConstants.MAJOR_VERSION_1_5 << 16) + ClassFileConstants.MINOR_VERSION_0; + long JDK1_6 = ((long)ClassFileConstants.MAJOR_VERSION_1_6 << 16) + ClassFileConstants.MINOR_VERSION_0; + long JDK1_7 = ((long)ClassFileConstants.MAJOR_VERSION_1_7 << 16) + ClassFileConstants.MINOR_VERSION_0; + + /* + * cldc1.1 is 45.3, but we modify it to be different from JDK1_1. + * In the code gen, we will generate the same target value as JDK1_1 + */ + long CLDC_1_1 = ((long)ClassFileConstants.MAJOR_VERSION_1_1 << 16) + ClassFileConstants.MINOR_VERSION_4; + + // jdk level used to denote future releases: optional behavior is not enabled for now, but may become so. In order to enable these, + // search for references to this constant, and change it to one of the official JDT constants above. + long JDK_DEFERRED = Long.MAX_VALUE; + + int INT_ARRAY = 10; + int BYTE_ARRAY = 8; + int BOOLEAN_ARRAY = 4; + int SHORT_ARRAY = 9; + int CHAR_ARRAY = 5; + int LONG_ARRAY = 11; + int FLOAT_ARRAY = 6; + int DOUBLE_ARRAY = 7; + + // Debug attributes + int ATTR_SOURCE = 0x1; // SourceFileAttribute + int ATTR_LINES = 0x2; // LineNumberAttribute + int ATTR_VARS = 0x4; // LocalVariableTableAttribute + int ATTR_STACK_MAP_TABLE = 0x8; // Stack map table attribute + int ATTR_STACK_MAP = 0x10; // Stack map attribute: cldc }