Module IR__Struct
type field= IR.Fieldname.t * IR.Typ.t * IR.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 : IR.Typ.Name.t list;superclasses
methods : IR.Procname.t list;methods defined
exported_objc_methods : IR.Procname.t list;methods in ObjC interface, subset of
methodsannots : IR.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= IR.Typ.Name.t -> t option
val pp_field : IStdlib.Pp.env -> F.formatter -> field -> unitval pp : IStdlib.Pp.env -> IR.Typ.Name.t -> F.formatter -> t -> unitPretty print a struct type.
val internal_mk_struct : ?default:t -> ?fields:fields -> ?statics:fields -> ?methods:IR.Procname.t list -> ?exported_objc_methods:IR.Procname.t list -> ?supers:IR.Typ.Name.t list -> ?annots:IR.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 -> IR.Typ.t -> IR.Typ.t optionthe element typ of the final extensible array in the given typ, if any
type field_info={typ : IR.Typ.t;annotations : IR.Annot.Item.t;is_static : bool;}
val get_field_info : lookup:lookup -> IR.Fieldname.t -> IR.Typ.t -> field_info optionLookup for info associated with the field
fn. None iftyphas no field namedfn
val fld_typ : lookup:lookup -> default:IR.Typ.t -> IR.Fieldname.t -> IR.Typ.t -> IR.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 -> IR.Fieldname.t -> IR.Typ.t -> (IR.Typ.t * IR.Annot.Item.t) optionReturn the type of the field
fnand its annotation, None iftyphas no field namedfn
val merge : IR.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)