123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /* javahost.h: Copyright (C) Codemist Ltd., 1996. */
-
- #define JAVA_MAGIC 0xCAFEBABE
- #define JAVA_THIS_MAJ 45
- #define JAVA_THIS_MIN 3
- /* The following structures define the internal format of a class file: */
- typedef int32 *(*JavaBuiltin)(int32 *);
- typedef enum Attribute_Sort
- { ATT_unknown,
- ATT_SourceFile,
- ATT_ConstantValue,
- ATT_Code,
- ATT_Exceptions,
- ATT_LineNumberTable,
- ATT_LocalVariableTable
- } Attribute_Sort;
- typedef struct Attribute_Info Attribute_Info;
- typedef struct SourceFile_Attribute
- { unsigned16 sourcefile_index;
- } SourceFile_Attribute;
- typedef struct ConstantValue_Attribute
- { unsigned16 constantvalue_index;
- } ConstantValue_Attribute;
- /* logically local to Code_Attribute */
- typedef struct Exception_Info
- { unsigned16 start_pc;
- unsigned16 end_pc;
- unsigned16 handler_pc;
- unsigned16 catch_type;
- } Exception_Info;
- typedef struct Code_Attribute
- { unsigned16 max_stack;
- unsigned16 max_locals;
- unsigned32 code_length;
- unsigned16 exception_table_length;
- unsigned16 attributes_count;
- unsigned8 *code;
- Exception_Info *exception_table;
- Attribute_Info *attributes;
- } Code_Attribute;
- typedef struct Exceptions_Attribute
- { unsigned16 number_of_exceptions;
- unsigned16 *exception_index_table;
- } Exceptions_Attribute;
- /* logically local to LineNumberTable_Attribute */
- typedef struct LineNumber_Info
- { unsigned16 start_pc;
- unsigned16 line_number;
- } LineNumber_Info;
- typedef struct LineNumberTable_Attribute
- { unsigned16 line_number_table_length;
- LineNumber_Info *line_number_table;
- } LineNumberTable_Attribute;
- /* logically local to LocalVariableTable_Attribute */
- typedef struct LocalVariable_Info
- { unsigned16 start_pc;
- unsigned16 length;
- unsigned16 name_index;
- unsigned16 signature_index;
- unsigned16 slot;
- } LocalVariable_Info;
- typedef struct LocalVariableTable_Attribute
- { unsigned16 local_variable_table_length;
- LocalVariable_Info *local_variable_table;
- } LocalVariableTable_Attribute;
- /*typedef*/ struct Attribute_Info
- { enum Attribute_Sort sort;
- union { SourceFile_Attribute *sourcefile;
- ConstantValue_Attribute *constantvalue;
- Code_Attribute *code;
- Exceptions_Attribute *exceptions;
- LineNumberTable_Attribute *linenumbertable;
- LocalVariableTable_Attribute *localvariabletable; } uattr;
- };
- typedef struct Cp_Info
- { unsigned8 tag;
- unsigned16 len;
- union { unsigned32 val; char *utf8; void *ptr; } u;
- } Cp_Info;
- /* Currently Field_Info and Method_Info are identical, but note they */
- /* allow different attributes. */
- typedef struct Field_Info
- { unsigned16 access_flags;
- unsigned16 name_index;
- unsigned16 signature_index;
- unsigned16 attributes_count;
- Attribute_Info *attributes;
- } Field_Info;
- typedef struct Method_Info
- { unsigned16 access_flags;
- unsigned16 name_index;
- unsigned16 signature_index;
- unsigned16 attributes_count;
- Attribute_Info *attributes;
- } Method_Info;
- typedef struct ClassFile {
- /* Internal representation of class file: see rdClassFile(). */
- unsigned16 access_flags;
- unsigned16 this_class;
- unsigned16 super_class;
- unsigned16 constant_pool_count;
- unsigned16 interfaces_count;
- unsigned16 fields_count;
- unsigned16 methods_count;
- unsigned16 attributes_count;
- Cp_Info *constant_pool;
- unsigned16 *interfaces;
- Field_Info *fields;
- Method_Info *methods;
- Attribute_Info *attributes;
- } ClassFile;
- /* Cp_Info tags: */
- #define CONSTANT_Class 7
- #define CONSTANT_FieldRef 9
- #define CONSTANT_MethodRef 10
- #define CONSTANT_InterfaceMethodRef 11
- #define CONSTANT_String 8
- #define CONSTANT_Integer 3
- #define CONSTANT_Float 4
- #define CONSTANT_Long 5
- #define CONSTANT_Double 6
- #define CONSTANT_NameAndType 12
- #define CONSTANT_Utf8 1
- #define CONSTANT_Unicode 2
- /* The next (illegal) tag represents the 2nd word of a long or double. */
- #define CONSTANT_Xhalf 42
- /* access_flags: */
- #define ACC_PUBLIC 0x0001
- #define ACC_PRIVATE 0x0002
- #define ACC_PROTECTED 0x0004
- #define ACC_STATIC 0x0008
- #define ACC_FINAL 0x0010
- #define ACC_SYNCHRONIZED 0x0020
- #define ACC_VOLATILE 0x0040
- #define ACC_TRANSIENT 0x0080
- #define ACC_NATIVE 0x0100
- #define ACC_INTERFACE 0x0200
- #define ACC_ABSTRACT 0x0400
- /* end of javahost.h */
|