Nativevalues
This modules defines the representation of values internally used by the native compiler. Be careful when removing apparently dead code from this interface, as it may be used by programs generated at runtime.
When -rectypes, matching on this makes t = ('a -> 'a) as 'a
. When not -rectypes, it does nothing AFAICT so you have to generalize your problem to use this.
type annot_sw = {
asw_ind : Names.inductive; |
asw_ci : Constr.case_info; |
asw_reloc : reloc_table; |
asw_finite : bool; |
asw_prefix : string; |
}
val hash_annot_sw : annot_sw -> int
type atom =
| Arel of int |
| Aconstant of Constr.pconstant |
| Aind of Constr.pinductive |
| Asort of Sorts.t |
| Avar of Names.Id.t |
| Acase of annot_sw * accumulator * t * t |
| Afix of t array * t array * rec_pos * int |
| Acofix of t array * t array * int * vcofix |
| Aevar of Evar.t * t array |
| Aproj of Names.inductive * int * accumulator |
type symbol =
| SymbValue of t |
| SymbSort of Sorts.t |
| SymbName of Names.Name.t |
| SymbConst of Names.Constant.t |
| SymbMatch of annot_sw |
| SymbInd of Names.inductive |
| SymbEvar of Evar.t |
| SymbLevel of Univ.Level.t |
| SymbProj of Names.inductive * int |
type symbols = symbol array
val empty_symbols : symbols
val mk_rel_accu : int -> t
val mk_rels_accu : int -> int -> t array
val mk_constant_accu : Names.Constant.t -> Univ.Level.t array -> t
val mk_ind_accu : Names.inductive -> Univ.Level.t array -> t
val mk_sort_accu : Sorts.t -> Univ.Level.t array -> t
val mk_var_accu : Names.Id.t -> t
val mk_sw_accu : annot_sw -> accumulator -> t -> t -> t
val mk_proj_accu : (Names.inductive * int) -> accumulator -> t
val mk_prod : Names.Name.t -> t -> t -> t
val mk_bool : bool -> t
val mk_int : int -> t
val dummy_value : unit -> t
val atom_of_accu : accumulator -> atom
val args_of_accu : accumulator -> t array
val accu_nargs : accumulator -> int
val cast_accu : t -> accumulator
val block_size : block -> int
val block_tag : block -> int
type kind = (t, accumulator, t -> t, Names.Name.t * t * t, Util.Empty.t, Util.Empty.t, block) Values.kind
Support for machine integers
val val_to_int : t -> int
val is_int : t -> bool
Support for machine floating point values
val is_float : t -> bool
Support for arrays
val is_parray : t -> bool