Module BO.BufferOverrunField

Inferbo-specific constant field names

val pp : pp_lhs:(Stdlib.Format.formatter -> 'a -> unit) -> sep:string -> Stdlib.Format.formatter -> 'a -> IR.Fieldname.t -> unit

A parameterized pretty printer for field appended values

val get_type : IR.Fieldname.t -> IR.Typ.t option

Get type of field that is constructed in this module. This does not work in Java at the moment.

val c_strlen : unit -> IR.Fieldname.t

Field for C string's length

val cpp_vector_elem : vec_typ:IR.Typ.t -> IR.Fieldname.t

Field for C++ vector's elements

val java_collection_internal_array : IR.Fieldname.t

Field for Java collection's elements

val java_linked_list_index : IR.Fieldname.t

Virtual field for index of Java's linked list

val java_linked_list_length : IR.Fieldname.t

Virtual field for length of Java's linked list

val java_linked_list_next : IR.Typ.t -> IR.Fieldname.t

Virtual field for next of Java's linked list

val java_list_files_length : IR.Fieldname.t

Virtual field for length of Java's files list in a directory

val cpp_collection_internal_array : IR.Fieldname.t

Field for C++ collection's elements

val is_cpp_vector_elem : IR.Fieldname.t -> bool

Check if the field is for C++ vector's elements

val is_java_collection_internal_array : IR.Fieldname.t -> bool

Check if the field is for Java collection's elements

val objc_collection_internal_array : IR.Fieldname.t

Field for ObjC's collection's elements

val objc_iterator_offset : IR.Fieldname.t

Field for ObjC's nscollection's iterator offset

Field domain constructor

type 'prim t =
  1. | Prim of 'prim
  2. | Field of {
    1. prefix : 'prim t;
    2. fn : IR.Fieldname.t;
    3. typ : IR.Typ.t option;
    }
  3. | StarField of {
    1. prefix : 'prim t;
    2. last_field : IR.Fieldname.t;
    }
    (*

    Represents a path starting with prefix and ending with the field last_field, the middle can be anything. Invariants:

    • There is at most one StarField
    • StarField excluded, there are no duplicate fieldnames
    • StarField can only be followed by Deref elements
    *)
include Ppx_compare_lib.Comparable.S1 with type 'prim t := 'prim t
val compare : 'a Base__Ppx_compare_lib.compare -> 'a t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S1 with type 'prim t := 'prim t
val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
val mk_append_field : prim_append_field: (?typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> (depth:int -> 'prim t -> 'prim t) -> int -> 'prim -> 'prim t) -> prim_append_star_field: ('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> ?typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> 'prim t
val mk_append_star_field : prim_append_star_field: ('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> 'prim t -> IR.Fieldname.t -> 'prim t