@@ -1,164 +1,164 @@ -/* 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 */ +/* 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 */