sig
type location = Utils.u1 list
type intervals = (Utils.u2 * Utils.u2 * Utils.u2) list
type target =
Typecast of Utils.u2
| Typecast_loc of Utils.u2 * Annotation.location
| Instance_of of Utils.u2
| Instance_of_loc of Utils.u2 * Annotation.location
| New of Utils.u2
| New_loc of Utils.u2 * Annotation.location
| Method_receiver
| Local_variable of Annotation.intervals
| Local_variable_loc of Annotation.intervals * Annotation.location
| Method_return_type
| Method_return_type_loc of Annotation.location
| Method_parameter of Utils.u1
| Method_parameter_loc of Utils.u1 * Annotation.location
| Field
| Field_loc of Annotation.location
| Class_type_parameter_bound of Utils.u1 * Utils.u1
| Class_type_parameter_bound_loc of Utils.u1 * Utils.u1 *
Annotation.location
| Method_type_parameter_bound of Utils.u1 * Utils.u1
| Method_type_parameter_bound_loc of Utils.u1 * Utils.u1 *
Annotation.location
| Super_type of Utils.u2
| Super_type_loc of Utils.u2 * Annotation.location
| Thrown_exception of Utils.u2
| Type_argument_constructor_call of Utils.u2 * Utils.u1
| Type_argument_constructor_call_loc of Utils.u2 * Utils.u1 *
Annotation.location
| Type_argument_method_call of Utils.u2 * Utils.u1
| Type_argument_method_call_loc of Utils.u2 * Utils.u1 *
Annotation.location
| Wildcard_bound of Annotation.target
| Wildcard_bound_loc of Annotation.target * Annotation.location
| Class_literal of Utils.u2
| Class_literal_loc of Utils.u2 * Annotation.location
| Method_type_parameter of Utils.u1
| Class_type_parameter of Utils.u1
type primitive_type =
[ `Boolean | `Byte | `Char | `Double | `Float | `Int | `Long | `Short ]
type info_element_value =
Primitive of Annotation.primitive_type * Utils.u2
| String of Utils.u2
| Enum of Utils.u2 * Utils.u2
| Class of Utils.u2
| Annotation of Annotation.info
| Array of Utils.u2 * Annotation.info_element_value array
and info = {
type_index : Utils.u2;
num_element_value_pairs : Utils.u2;
element_value_pairs : (Utils.u2 * Annotation.info_element_value) array;
}
and extended_info = {
ext_type_index : Utils.u2;
ext_num_element_value_pairs : Utils.u2;
ext_element_value_pairs :
(Utils.u2 * Annotation.info_element_value) array;
ext_target : Annotation.target;
}
type error =
Invalid_tag of Utils.UChar.t
| Inconsistent_primitive_value
| Invalid_string_value of Utils.u2
| Invalid_enum_value of Utils.u2 * Utils.u2
| Invalid_class_value of Utils.u2
| Invalid_annotation_type_value of Utils.u2
| Invalid_element_name of Utils.u2
| Invalid_list_length of int
| Invalid_target of int
exception Exception of Annotation.error
val string_of_error : Annotation.error -> string
val read_target : InputStream.t -> Annotation.target
val write_target : OutputStream.t -> Annotation.target -> unit
val read_info_element_value :
InputStream.t -> Annotation.info_element_value
val write_info_element_value :
OutputStream.t -> Annotation.info_element_value -> unit
val read_info : InputStream.t -> Annotation.info
val write_info : OutputStream.t -> Annotation.info -> unit
val read_extended_info : InputStream.t -> Annotation.extended_info
val write_extended_info :
OutputStream.t -> Annotation.extended_info -> unit
type element_value =
Boolean_value of bool
| Byte_value of int
| Char_value of Utils.UChar.t
| Double_value of float
| Float_value of float
| Int_value of int32
| Long_value of int64
| Short_value of int
| String_value of Utils.UTF8.t
| Enum_value of Name.for_class * Name.for_field
| Class_value of Name.for_class
| Annotation_value of Annotation.t
| Array_value of Annotation.element_value list
and t = Name.for_class * (Utils.UTF8.t * Annotation.element_value) list
and extended =
Name.for_class * (Utils.UTF8.t * Annotation.element_value) list *
Annotation.target
val equal_element_value :
Annotation.element_value -> Annotation.element_value -> bool
val compare_element_value :
Annotation.element_value -> Annotation.element_value -> int
val hash_element_value : Annotation.element_value -> int
val equal : Annotation.t -> Annotation.t -> bool
val compare : Annotation.t -> Annotation.t -> int
val hash : Annotation.t -> int
val equal_extended : Annotation.extended -> Annotation.extended -> bool
val compare_extended : Annotation.extended -> Annotation.extended -> int
val hash_extended : Annotation.extended -> int
val decode_element_value :
ConstantPool.t ->
Annotation.info_element_value -> Annotation.element_value
val decode : ConstantPool.t -> Annotation.info -> Annotation.t
val decode_extended :
ConstantPool.t -> Annotation.extended_info -> Annotation.extended
val encode_element_value :
ConstantPool.extendable ->
Annotation.element_value -> Annotation.info_element_value
val encode : ConstantPool.extendable -> Annotation.t -> Annotation.info
val encode_extended :
ConstantPool.extendable ->
Annotation.extended -> Annotation.extended_info
end