Module IR.Typ
module IntegerWidths : sig ... endtype ikind=Kinds of integers
val equal_ikind : ikind -> ikind -> boolval width_of_ikind : IntegerWidths.t -> ikind -> intval range_of_ikind : IntegerWidths.t -> ikind -> Z.t * Z.tval ikind_is_char : ikind -> boolCheck whether the integer kind is a char
val ikind_is_unsigned : ikind -> boolCheck whether the integer kind is unsigned
type ptr_kind=kind of pointer
val compare_type_quals : type_quals -> type_quals -> int
val mk_type_quals : ?default:type_quals -> ?is_const:bool -> ?is_restrict:bool -> ?is_volatile:bool -> unit -> type_qualsval is_const : type_quals -> boolval is_restrict : type_quals -> boolval is_volatile : type_quals -> bool
type t={desc : desc;quals : type_quals;}types for sil (structured) expressions
and desc=|Tint of ikindinteger type
|Tfloat of fkindfloat type
|Tvoidvoid type
|Tfunfunction type
|Tptr of t * ptr_kindpointer type
|Tstruct of namestructured value type name
|TVar of stringtype variable (ie. C++ template variables)
|Tarray of{elt : t;length : IntLit.t option;stride : IntLit.t option;}array type with statically fixed length and stride
and name=|CStruct of QualifiedCppName.t|CUnion of QualifiedCppName.tqualified name does NOT contain template arguments of the class. It will contain template args of its parent classes, for example: MyClass<int>::InnerClass<int> will store "MyClass<int>", "InnerClass"
|CppClass of{name : QualifiedCppName.t;template_spec_info : template_spec_info;is_union : bool;}|CSharpClass of CSharpClassName.t|JavaClass of JavaClassName.t|ObjcClass of QualifiedCppName.t * name listObjC class that conforms to a list of protocols, e.g. id<NSFastEnumeration, NSCopying>
|ObjcProtocol of QualifiedCppName.tand template_arg=|TType of t|TInt of IStdlib.IStd.Int64.t|TNull|TNullPtr|TOpaqueand template_spec_info=|NoTemplate|Template of{mangled : string option;WARNING: because of type substitutions performed by
sub_typeandsub_tname, mangling is not guaranteed to be unique to a single type. All the information in the template arguments is also needed for uniqueness.args : template_arg list;}
val compare : t -> t -> intval compare_desc : desc -> desc -> intval compare_name : name -> name -> intval compare_template_arg : template_arg -> template_arg -> intval compare_template_spec_info : template_spec_info -> template_spec_info -> intval yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.tval yojson_of_desc : desc -> Ppx_yojson_conv_lib.Yojson.Safe.tval yojson_of_name : name -> Ppx_yojson_conv_lib.Yojson.Safe.tval yojson_of_template_arg : template_arg -> Ppx_yojson_conv_lib.Yojson.Safe.tval yojson_of_template_spec_info : template_spec_info -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_template_spec_info : IStdlib.Pp.env -> F.formatter -> template_spec_info -> unitval mk : ?default:t -> ?quals:type_quals -> desc -> tCreate Typ.t from given desc. if
defaultis passed then use its value to set other fields such as quals
val mk_array : ?default:t -> ?quals:type_quals -> ?length:IntLit.t -> ?stride:IntLit.t -> t -> tCreate an array type from a given element type. If
lengthorstridevalue is given, use them as static length and size.
val mk_struct : name -> tval mk_ptr : ?ptr_kind:ptr_kind -> t -> tmake a pointer to
t, default kind isPk_pointer
val size_t : ikindikind of size_t
module Name : sig ... endval equal_desc : desc -> desc -> boolval equal_name : name -> name -> boolval equal_quals : type_quals -> type_quals -> boolval equal_ignore_quals : t -> t -> boolEquality for types, but ignoring quals in it.
val pp_full : IStdlib.Pp.env -> F.formatter -> t -> unitPretty print a type with all the details.
val pp : IStdlib.Pp.env -> F.formatter -> t -> unitPretty print a type.
val pp_desc : IStdlib.Pp.env -> F.formatter -> desc -> unitPretty print a type desc.
val pp_java : verbose:bool -> F.formatter -> t -> unitPretty print a Java type. Raises if type isn't produced by the Java frontend
val pp_cs : verbose:bool -> F.formatter -> t -> unitPretty print a Java type. Raises if type isn't produced by the CSharp frontend
val pp_protocols : IStdlib.Pp.env -> F.formatter -> name list -> unitval to_string : t -> stringval desc_to_string : desc -> stringval d_full : t -> unitDump a type with all the details.
val d_list : t list -> unitDump a list of types.
val array_elem : t option -> t -> tIf an array type, return the type of the element. If not, return the default type if given, otherwise raise an exception
val is_objc_class : t -> boolval is_cpp_class : t -> boolval is_pointer_to_cpp_class : t -> boolval is_pointer_to_objc_non_tagged_class : t -> boolval is_pointer_to_void : t -> boolval is_void : t -> boolval is_pointer_to_int : t -> boolval is_pointer_to_function : t -> boolval is_pointer : t -> boolval is_reference : t -> boolval is_struct : t -> boolval is_int : t -> boolval is_unsigned_int : t -> boolval is_char : t -> boolval is_csharp_type : t -> boolis
ta type produced by the Java frontend?
val is_java_primitive_type : t -> boolis
ta primitive type produced by the Java frontend?
val is_java_type : t -> boolis
ta type produced by the Java frontend?
module Normalizer : IStdlib.HashNormalizer.S with type t = t