Module IR.Struct
type field= Fieldname.t * Typ.t * Annot.Item.t
type fields= field listtype java_class_kind=|Interface|AbstractClass|NormalClass
val equal_java_class_kind : java_class_kind -> java_class_kind -> bool
type java_class_info={kind : java_class_kind;class kind in Java
loc : IBase.Location.t option;None should correspond to rare cases when it was impossible to fetch the location in source file
}type t={fields : fields;non-static fields
statics : fields;static fields
supers : Typ.Name.t list;superclasses
objc_protocols : Typ.Name.t list;ObjC protocols
methods : Procname.t list;methods defined
exported_objc_methods : Procname.t list;methods in ObjC interface, subset of
methodsannots : Annot.Item.t;annotations
java_class_info : java_class_info option;present if and only if the class is Java
dummy : bool;dummy struct for class including static method
}Type for a structured value.
type lookup= Typ.Name.t -> t option
val pp_field : IStdlib.Pp.env -> F.formatter -> field -> unitval pp : IStdlib.Pp.env -> Typ.Name.t -> F.formatter -> t -> unitPretty print a struct type.
val internal_mk_struct : ?default:t -> ?fields:fields -> ?statics:fields -> ?methods:Procname.t list -> ?exported_objc_methods:Procname.t list -> ?supers:Typ.Name.t list -> ?objc_protocols:Typ.Name.t list -> ?annots:Annot.Item.t -> ?java_class_info:java_class_info -> ?dummy:bool -> unit -> tConstruct a struct_typ, normalizing field types
val get_extensible_array_element_typ : lookup:lookup -> Typ.t -> Typ.t optionthe element typ of the final extensible array in the given typ, if any
type field_info={typ : Typ.t;annotations : Annot.Item.t;is_static : bool;}
val get_field_info : lookup:lookup -> Fieldname.t -> Typ.t -> field_info optionLookup for info associated with the field
fn. None iftyphas no field namedfn
val fld_typ : lookup:lookup -> default:Typ.t -> Fieldname.t -> Typ.t -> Typ.tIf a struct type with field f, return the type of f. If not, return the default type if given, otherwise raise an exception
val get_field_type_and_annotation : lookup:lookup -> Fieldname.t -> Typ.t -> (Typ.t * Annot.Item.t) optionReturn the type of the field
fnand its annotation, None iftyphas no field namedfn
val merge : Typ.Name.t -> newer:t -> current:t -> tbest effort directed merge of two structs for the same typename
val is_not_java_interface : t -> boolcheck that a struct either defines a non-java type, or a non-java-interface type (abstract or normal class)
module Normalizer : IStdlib.HashNormalizer.S with type t = t