|
Java example source code file (constants.h)
The constants.h Java example source code/* * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* Java Class Version numbers history 1.0 to 1.3.X 45,3 1.4 to 1.4.X 46,0 1.5 to 1.5.X 49,0 1.6 to 1.5.x 50,0 NOTE Assumed for now */ // classfile constants #define JAVA_MAGIC 0xCAFEBABE #define JAVA_MIN_MAJOR_VERSION 45 #define JAVA_MIN_MINOR_VERSION 3 #define JAVA5_MAX_MAJOR_VERSION 49 #define JAVA5_MAX_MINOR_VERSION 0 #define JAVA6_MAX_MAJOR_VERSION 50 #define JAVA6_MAX_MINOR_VERSION 0 #define JAVA7_MAX_MAJOR_VERSION 51 #define JAVA7_MAX_MINOR_VERSION 0 #define JAVA8_MAX_MAJOR_VERSION 52 #define JAVA8_MAX_MINOR_VERSION 0 // package file constants #define JAVA_PACKAGE_MAGIC 0xCAFED00D #define JAVA5_PACKAGE_MAJOR_VERSION 150 #define JAVA5_PACKAGE_MINOR_VERSION 7 #define JAVA6_PACKAGE_MAJOR_VERSION 160 #define JAVA6_PACKAGE_MINOR_VERSION 1 #define JAVA7_PACKAGE_MAJOR_VERSION 170 #define JAVA7_PACKAGE_MINOR_VERSION 1 #define JAVA8_PACKAGE_MAJOR_VERSION 171 #define JAVA8_PACKAGE_MINOR_VERSION 0 // magic number for gzip streams (for processing pack200-gzip data) #define GZIP_MAGIC 0x1F8B0800 #define GZIP_MAGIC_MASK 0xFFFFFF00 // last byte is variable "flg" field enum { CONSTANT_None = 0, CONSTANT_Utf8 = 1, CONSTANT_unused = 2, /* unused, was Unicode */ CONSTANT_Integer = 3, CONSTANT_Float = 4, CONSTANT_Long = 5, CONSTANT_Double = 6, CONSTANT_Class = 7, CONSTANT_String = 8, CONSTANT_Fieldref = 9, CONSTANT_Methodref = 10, CONSTANT_InterfaceMethodref = 11, CONSTANT_NameandType = 12, CONSTANT_unused13 = 13, CONSTANT_unused14 = 14, CONSTANT_MethodHandle = 15, CONSTANT_MethodType = 16, CONSTANT_unused17 = 17, CONSTANT_InvokeDynamic = 18, CONSTANT_Limit = 19, CONSTANT_Signature = CONSTANT_unused13, CONSTANT_BootstrapMethod = CONSTANT_unused17, // used only for InvokeDynamic CONSTANT_All = 50, // combined global map CONSTANT_LoadableValue = 51, // used for 'KL' and qldc operands CONSTANT_AnyMember = 52, // union of refs to field or (interface) method CONSTANT_FieldSpecific = 53, // used only for 'KQ' ConstantValue attrs CONSTANT_GroupFirst = CONSTANT_All, // start group marker CONSTANT_GroupLimit = 54, // end group marker // CONSTANT_MethodHandle reference kinds REF_getField = 1, REF_getStatic = 2, REF_putField = 3, REF_putStatic = 4, REF_invokeVirtual = 5, REF_invokeStatic = 6, REF_invokeSpecial = 7, REF_newInvokeSpecial = 8, REF_invokeInterface = 9, SUBINDEX_BIT = 64, // combined with CONSTANT_xxx for ixTag ACC_STATIC = 0x0008, ACC_IC_LONG_FORM = (1<<16), //for ic_flags CLASS_ATTR_SourceFile = 17, CLASS_ATTR_EnclosingMethod = 18, CLASS_ATTR_InnerClasses = 23, CLASS_ATTR_ClassFile_version = 24, CLASS_ATTR_BootstrapMethods = 25, FIELD_ATTR_ConstantValue = 17, METHOD_ATTR_Code = 17, METHOD_ATTR_Exceptions = 18, METHOD_ATTR_RuntimeVisibleParameterAnnotations = 23, METHOD_ATTR_RuntimeInvisibleParameterAnnotations = 24, METHOD_ATTR_AnnotationDefault = 25, METHOD_ATTR_MethodParameters = 26, CODE_ATTR_StackMapTable = 0, CODE_ATTR_LineNumberTable = 1, CODE_ATTR_LocalVariableTable = 2, CODE_ATTR_LocalVariableTypeTable = 3, //X_ATTR_Synthetic = 12, // ACC_SYNTHETIC; not predefined X_ATTR_Signature = 19, X_ATTR_Deprecated = 20, X_ATTR_RuntimeVisibleAnnotations = 21, X_ATTR_RuntimeInvisibleAnnotations = 22, X_ATTR_RuntimeVisibleTypeAnnotations = 27, X_ATTR_RuntimeInvisibleTypeAnnotations = 28, X_ATTR_OVERFLOW = 16, X_ATTR_LIMIT_NO_FLAGS_HI = 32, X_ATTR_LIMIT_FLAGS_HI = 63, #define O_ATTR_DO(F) \ F(X_ATTR_OVERFLOW,01) \ /*(end)*/ #define X_ATTR_DO(F) \ O_ATTR_DO(F) \ F(X_ATTR_Signature,Signature) \ F(X_ATTR_Deprecated,Deprecated) \ F(X_ATTR_RuntimeVisibleAnnotations,RuntimeVisibleAnnotations) \ F(X_ATTR_RuntimeInvisibleAnnotations,RuntimeInvisibleAnnotations) \ F(X_ATTR_RuntimeVisibleTypeAnnotations,RuntimeVisibleTypeAnnotations) \ F(X_ATTR_RuntimeInvisibleTypeAnnotations,RuntimeInvisibleTypeAnnotations) \ /*F(X_ATTR_Synthetic,Synthetic)*/ \ /*(end)*/ #define CLASS_ATTR_DO(F) \ F(CLASS_ATTR_SourceFile,SourceFile) \ F(CLASS_ATTR_InnerClasses,InnerClasses) \ F(CLASS_ATTR_EnclosingMethod,EnclosingMethod) \ F(CLASS_ATTR_ClassFile_version,02) \ F(CLASS_ATTR_BootstrapMethods,BootstrapMethods) \ /*(end)*/ #define FIELD_ATTR_DO(F) \ F(FIELD_ATTR_ConstantValue,ConstantValue) \ /*(end)*/ #define METHOD_ATTR_DO(F) \ F(METHOD_ATTR_Code,Code) \ F(METHOD_ATTR_Exceptions,Exceptions) \ F(METHOD_ATTR_RuntimeVisibleParameterAnnotations,RuntimeVisibleParameterAnnotations) \ F(METHOD_ATTR_RuntimeInvisibleParameterAnnotations,RuntimeInvisibleParameterAnnotations) \ F(METHOD_ATTR_AnnotationDefault,AnnotationDefault) \ F(METHOD_ATTR_MethodParameters,MethodParameters) \ /*(end)*/ #define CODE_ATTR_DO(F) \ F(CODE_ATTR_StackMapTable,StackMapTable) \ F(CODE_ATTR_LineNumberTable,LineNumberTable) \ F(CODE_ATTR_LocalVariableTable,LocalVariableTable) \ F(CODE_ATTR_LocalVariableTypeTable,LocalVariableTypeTable) \ /*(end)*/ #define ALL_ATTR_DO(F) \ X_ATTR_DO(F) \ CLASS_ATTR_DO(F) \ FIELD_ATTR_DO(F) \ METHOD_ATTR_DO(F) \ CODE_ATTR_DO(F) \ /*(end)*/ // attribute "context types" ATTR_CONTEXT_CLASS = 0, ATTR_CONTEXT_FIELD = 1, ATTR_CONTEXT_METHOD = 2, ATTR_CONTEXT_CODE = 3, ATTR_CONTEXT_LIMIT = 4, // constants for parsed layouts (stored in band::le_kind) EK_NONE = 0, // not a layout element EK_INT = 'I', // B H I SH etc., also FH etc. EK_BCI = 'P', // PH etc. EK_BCID = 'Q', // POH etc. EK_BCO = 'O', // OH etc. EK_REPL = 'N', // NH[...] etc. EK_REF = 'R', // RUH, RUNH, KQH, etc. EK_UN = 'T', // TB(...)[...] etc. EK_CASE = 'K', // (...)[...] etc. EK_CALL = '(', // (0), (1), etc. EK_CBLE = '[', // [...][...] etc. NO_BAND_INDEX = -1, // File option bits, from LSB in ascending bit position. FO_DEFLATE_HINT = 1<<0, FO_IS_CLASS_STUB = 1<<1, // Archive option bits, from LSB in ascending bit position: AO_HAVE_SPECIAL_FORMATS = 1<<0, AO_HAVE_CP_NUMBERS = 1<<1, AO_HAVE_ALL_CODE_FLAGS = 1<<2, AO_HAVE_CP_EXTRAS = 1<<3, AO_HAVE_FILE_HEADERS = 1<<4, AO_DEFLATE_HINT = 1<<5, AO_HAVE_FILE_MODTIME = 1<<6, AO_HAVE_FILE_OPTIONS = 1<<7, AO_HAVE_FILE_SIZE_HI = 1<<8, AO_HAVE_CLASS_FLAGS_HI = 1<<9, AO_HAVE_FIELD_FLAGS_HI = 1<<10, AO_HAVE_METHOD_FLAGS_HI = 1<<11, AO_HAVE_CODE_FLAGS_HI = 1<<12, AO_UNUSED_MBZ = (-1)<<13, // options bits reserved for future use. #define ARCHIVE_BIT_DO(F) \ F(AO_HAVE_SPECIAL_FORMATS) \ F(AO_HAVE_CP_NUMBERS) \ F(AO_HAVE_ALL_CODE_FLAGS) \ F(AO_HAVE_CP_EXTRAS) \ F(AO_HAVE_FILE_HEADERS) \ F(AO_DEFLATE_HINT) \ F(AO_HAVE_FILE_MODTIME) \ F(AO_HAVE_FILE_OPTIONS) \ F(AO_HAVE_FILE_SIZE_HI) \ F(AO_HAVE_CLASS_FLAGS_HI) \ F(AO_HAVE_FIELD_FLAGS_HI) \ F(AO_HAVE_METHOD_FLAGS_HI) \ F(AO_HAVE_CODE_FLAGS_HI) \ /*(end)*/ // Constants for decoding attribute definition header bytes. ADH_CONTEXT_MASK = 0x3, // (hdr & ADH_CONTEXT_MASK) ADH_BIT_SHIFT = 0x2, // (hdr >> ADH_BIT_SHIFT) ADH_BIT_IS_LSB = 1, // (hdr >> ADH_BIT_SHIFT) - ADH_BIT_IS_LSB #define ADH_BYTE(context, index) \ ((((index) + ADH_BIT_IS_LSB)< Other Java examples (source code examples)Here is a short list of links related to this Java constants.h source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.