sig
type info = { name_index : Utils.u2; length : Utils.u4; data : string; }
type error =
Invalid_code_attribute
| Invalid_code_length
| Defined_twice of string
| Invalid_field_attribute
| Invalid_method_attribute
| Invalid_class_attribute
| Invalid_package_attribute
| Invalid_module_attribute
| Invalid_constant_value
| Invalid_enclosing_method
| Invalid_local_variable_table
| Invalid_local_variable_type_table
| Invalid_list_length
| Invalid_attribute_name_value
| Invalid_exception_name
| Invalid_exception
| Invalid_inner_class
| Invalid_outer_class
| Invalid_signature
| Invalid_source_file
| Invalid_stack_map_frame
| Invalid_stack_map_verification_type
| Invalid_bootstrap_method_handle
| Invalid_bootstrap_argument
| Invalid_module
| Invalid_module_dependency_kind
| Missing_module_attribute
exception Exception of Attribute.error
val string_of_error : Attribute.error -> string
val read_info : InputStream.t -> Attribute.info
val write_info : OutputStream.t -> Attribute.info -> unit
type constant_value =
Long_value of int64
| Float_value of float
| Double_value of float
| Boolean_value of bool
| Byte_value of int
| Character_value of int
| Short_value of int
| Integer_value of int32
| String_value of Utils.UTF8.t
val equal_constant_value :
Attribute.constant_value -> Attribute.constant_value -> bool
val compare_constant_value :
Attribute.constant_value -> Attribute.constant_value -> int
val hash_constant_value : Attribute.constant_value -> int
type verification_type_info =
Top_variable_info
| Integer_variable_info
| Float_variable_info
| Long_variable_info
| Double_variable_info
| Null_variable_info
| Uninitialized_this_variable_info
| Object_variable_info of
[ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class ]
| Uninitialized_variable_info of Utils.u2
val equal_verification_type_info :
Attribute.verification_type_info ->
Attribute.verification_type_info -> bool
val compare_verification_type_info :
Attribute.verification_type_info ->
Attribute.verification_type_info -> int
val hash_verification_type_info : Attribute.verification_type_info -> int
type stack_map_frame =
Same_frame of Utils.u2
| Same_locals_1_stack_item_frame of Utils.u2 *
Attribute.verification_type_info
| Chop_1_frame of Utils.u2
| Chop_2_frame of Utils.u2
| Chop_3_frame of Utils.u2
| Append_1_frame of Utils.u2 * Attribute.verification_type_info
| Append_2_frame of Utils.u2 * Attribute.verification_type_info *
Attribute.verification_type_info
| Append_3_frame of Utils.u2 * Attribute.verification_type_info *
Attribute.verification_type_info * Attribute.verification_type_info
| Full_frame of Utils.u2 * Attribute.verification_type_info list *
Attribute.verification_type_info list
val equal_stack_map_frame :
Attribute.stack_map_frame -> Attribute.stack_map_frame -> bool
val compare_stack_map_frame :
Attribute.stack_map_frame -> Attribute.stack_map_frame -> int
val hash_stack_map_frame : Attribute.stack_map_frame -> int
type dependency_kind =
Optional_dependency
| Same_class_loader
| Not_observable
type t =
[ `AnnotationDefault of Annotation.element_value
| `BootstrapMethods of Bootstrap.method_specifier list
| `Code of Attribute.code_value
| `ConstantValue of Attribute.constant_value
| `Deprecated
| `EnclosingMethod of Attribute.enclosing_method_value
| `Exceptions of Name.for_class list
| `InnerClasses of Attribute.inner_class_element list
| `LineNumberTable of (Utils.u2 * Utils.u2) list
| `LocalVariableTable of Attribute.local_variable_table_element list
| `LocalVariableTypeTable of
Attribute.local_variable_type_table_element list
| `Module of Utils.UTF8.t * Utils.UTF8.t
| `ModulePermits of (Utils.UTF8.t * Utils.UTF8.t) list
| `ModuleProvides of (Utils.UTF8.t * Utils.UTF8.t) list
| `ModuleRequires of
(Utils.UTF8.t * Utils.UTF8.t * Attribute.dependency_kind) list
| `RuntimeInvisibleAnnotations of Annotation.t list
| `RuntimeInvisibleParameterAnnotations of Annotation.t list list
| `RuntimeInvisibleTypeAnnotations of Annotation.extended list
| `RuntimeVisibleAnnotations of Annotation.t list
| `RuntimeVisibleParameterAnnotations of Annotation.t list list
| `RuntimeVisibleTypeAnnotations of Annotation.extended list
| `Signature of Attribute.signature
| `SourceDebugExtension of Utils.UTF8.t
| `SourceFile of Utils.UTF8.t
| `StackMapTable of Attribute.stack_map_frame list
| `Synthetic
| `Unknown of Utils.UTF8.t * string ]
and signature =
[ `Class of Signature.class_signature
| `Field of Signature.field_type_signature
| `Method of Signature.method_signature ]
and code_attribute =
[ `LineNumberTable of (Utils.u2 * Utils.u2) list
| `LocalVariableTable of Attribute.local_variable_table_element list
| `LocalVariableTypeTable of
Attribute.local_variable_type_table_element list
| `StackMapTable of Attribute.stack_map_frame list
| `Unknown of Utils.UTF8.t * string ]
and code_value = {
max_stack : Utils.u2;
max_locals : Utils.u2;
code : Instruction.t list;
exception_table : Attribute.exception_table_element list;
attributes : Attribute.code_attribute list;
}
and exception_table_element = {
try_start : Utils.u2;
try_end : Utils.u2;
catch : Utils.u2;
caught : Name.for_class option;
}
and inner_class_element = {
inner_class : Name.for_class option;
outer_class : Name.for_class option;
inner_name : Utils.UTF8.t option;
inner_flags : AccessFlag.for_inner_class list;
}
and enclosing_method_value = {
innermost_class : Name.for_class;
enclosing_method : (Name.for_method * Descriptor.for_method) option;
}
and local_variable_table_element = {
local_start : Utils.u2;
local_length : Utils.u2;
local_name : Utils.UTF8.t;
local_descriptor : Descriptor.for_field;
local_index : Utils.u2;
}
and local_variable_type_table_element = {
local_type_start : Utils.u2;
local_type_length : Utils.u2;
local_type_name : Utils.UTF8.t;
local_type_signature : Signature.field_type_signature;
local_type_index : Utils.u2;
}
val equal_signature : Attribute.signature -> Attribute.signature -> bool
val compare_signature : Attribute.signature -> Attribute.signature -> int
val hash_signature : Attribute.signature -> int
val equal_code_attribute :
Attribute.code_attribute -> Attribute.code_attribute -> bool
val compare_code_attribute :
Attribute.code_attribute -> Attribute.code_attribute -> int
val hash_code_attribute : Attribute.code_attribute -> int
val equal_code_value : Attribute.code_value -> Attribute.code_value -> bool
val compare_code_value :
Attribute.code_value -> Attribute.code_value -> int
val hash_code_value : Attribute.code_value -> int
val equal_exception_table_element :
Attribute.exception_table_element ->
Attribute.exception_table_element -> bool
val compare_exception_table_element :
Attribute.exception_table_element ->
Attribute.exception_table_element -> int
val hash_exception_table_element : Attribute.exception_table_element -> int
val equal_inner_class_element :
Attribute.inner_class_element -> Attribute.inner_class_element -> bool
val compare_inner_class_element :
Attribute.inner_class_element -> Attribute.inner_class_element -> int
val hash_inner_class_element : Attribute.inner_class_element -> int
val equal_enclosing_method_value :
Attribute.enclosing_method_value ->
Attribute.enclosing_method_value -> bool
val compare_enclosing_method_value :
Attribute.enclosing_method_value ->
Attribute.enclosing_method_value -> int
val hash_enclosing_method_value : Attribute.enclosing_method_value -> int
val equal_local_variable_table_element :
Attribute.local_variable_table_element ->
Attribute.local_variable_table_element -> bool
val compare_local_variable_table_element :
Attribute.local_variable_table_element ->
Attribute.local_variable_table_element -> int
val hash_local_variable_table_element :
Attribute.local_variable_table_element -> int
val equal_local_variable_type_table_element :
Attribute.local_variable_type_table_element ->
Attribute.local_variable_type_table_element -> bool
val compare_local_variable_type_table_element :
Attribute.local_variable_type_table_element ->
Attribute.local_variable_type_table_element -> int
val hash_local_variable_type_table_element :
Attribute.local_variable_type_table_element -> int
val equal : Attribute.t -> Attribute.t -> bool
val compare : Attribute.t -> Attribute.t -> int
val hash : Attribute.t -> int
type for_field =
[ `ConstantValue of Attribute.constant_value
| `Deprecated
| `RuntimeInvisibleAnnotations of Annotation.t list
| `RuntimeInvisibleTypeAnnotations of Annotation.extended list
| `RuntimeVisibleAnnotations of Annotation.t list
| `RuntimeVisibleTypeAnnotations of Annotation.extended list
| `Signature of [ `Field of Signature.field_type_signature ]
| `Synthetic
| `Unknown of Utils.UTF8.t * string ]
type for_method =
[ `AnnotationDefault of Annotation.element_value
| `Code of Attribute.code_value
| `Deprecated
| `Exceptions of Name.for_class list
| `RuntimeInvisibleAnnotations of Annotation.t list
| `RuntimeInvisibleParameterAnnotations of Annotation.t list list
| `RuntimeInvisibleTypeAnnotations of Annotation.extended list
| `RuntimeVisibleAnnotations of Annotation.t list
| `RuntimeVisibleParameterAnnotations of Annotation.t list list
| `RuntimeVisibleTypeAnnotations of Annotation.extended list
| `Signature of [ `Method of Signature.method_signature ]
| `Synthetic
| `Unknown of Utils.UTF8.t * string ]
type for_class =
[ `BootstrapMethods of Bootstrap.method_specifier list
| `Deprecated
| `EnclosingMethod of Attribute.enclosing_method_value
| `InnerClasses of Attribute.inner_class_element list
| `Module of Utils.UTF8.t * Utils.UTF8.t
| `RuntimeInvisibleAnnotations of Annotation.t list
| `RuntimeInvisibleTypeAnnotations of Annotation.extended list
| `RuntimeVisibleAnnotations of Annotation.t list
| `RuntimeVisibleTypeAnnotations of Annotation.extended list
| `Signature of [ `Class of Signature.class_signature ]
| `SourceDebugExtension of Utils.UTF8.t
| `SourceFile of Utils.UTF8.t
| `Synthetic
| `Unknown of Utils.UTF8.t * string ]
type for_package =
[ `Module of Utils.UTF8.t * Utils.UTF8.t
| `RuntimeInvisibleAnnotations of Annotation.t list
| `RuntimeVisibleAnnotations of Annotation.t list
| `SourceFile of Utils.UTF8.t
| `Unknown of Utils.UTF8.t * string ]
type for_module =
[ `Module of Utils.UTF8.t * Utils.UTF8.t
| `ModulePermits of (Utils.UTF8.t * Utils.UTF8.t) list
| `ModuleProvides of (Utils.UTF8.t * Utils.UTF8.t) list
| `ModuleRequires of
(Utils.UTF8.t * Utils.UTF8.t * Attribute.dependency_kind) list
| `RuntimeInvisibleAnnotations of Annotation.t list
| `RuntimeVisibleAnnotations of Annotation.t list
| `SourceFile of Utils.UTF8.t
| `Unknown of Utils.UTF8.t * string ]
type enclosing_element = Class | Method | Field | Package | Module
val string_of_verification_type_info :
Attribute.verification_type_info -> string
val verification_type_info_of_parameter_descriptor :
Descriptor.for_parameter -> Attribute.verification_type_info
val check_code_attributes :
Attribute.t list -> Attribute.code_attribute list
val check_field_attributes : Attribute.t list -> Attribute.for_field list
val check_method_attributes : Attribute.t list -> Attribute.for_method list
val check_class_attributes : Attribute.t list -> Attribute.for_class list
val check_package_attributes :
Attribute.t list -> Attribute.for_package list
val check_module_attributes : Attribute.t list -> Attribute.for_module list
val decode :
Attribute.enclosing_element ->
Bootstrap.methods -> ConstantPool.t -> Attribute.info -> Attribute.t
val encode :
Bootstrap.methods ->
ConstantPool.extendable -> Attribute.t -> Attribute.info
val compare_according_to_significance : Attribute.t -> Attribute.t -> int
val version_bounds : Attribute.t -> Version.bounds
val extract_code : Attribute.t list -> Attribute.code_value
val extract_exceptions : Attribute.t list -> Name.for_class list
val extract_class_signature :
Attribute.for_class list -> Signature.class_signature
val extract_bootstrap_info :
Attribute.t list -> Bootstrap.method_specifier list
val extract_field_signature :
Attribute.for_field list -> Signature.field_type_signature
val extract_method_signature :
Attribute.for_method list -> Signature.method_signature
val extract_annotations : Attribute.t list -> Annotation.t list
end