Make.Layoutinclude module type of Layoutmodule BV = Soteria_rust_lib.Typed.BVinclude module type of struct include Layout_common endmodule Tag_layout = Layout_common.Tag_layoutLayout of enum tags in memory. Note tags are distinct from discriminants: a discriminant is user specified and is what Rvalue.Discriminant returns, whereas a tag is specific to variant layouts, and may be of smaller size than the discriminant, or not be encoded at all if it is the untagged variant of a niche-optimised enum.
module Fields_shape = Layout_common.Fields_shapeWe use a custom type for the member offsets for layouts; this allows us to use a more efficient representation for arrays T; N, that doesn't require N offsets.
type t = Layout_common.t = {size : Soteria_rust_lib.Typed.T.sint Typed.t;align : Soteria_rust_lib.Typed.T.nonzero Typed.t;uninhabited : bool;fields : Fields_shape.t;}val pp :
Ppx_deriving_runtime.Format.formatter ->
t ->
Ppx_deriving_runtime.unitval show : t -> Ppx_deriving_runtime.stringval iter_vars :
t ->
((Soteria.Bv_values.Svalue.Var.t * 'a Typed.ty) -> unit) ->
unitmodule Session : sig ... endval dst_kind : Charon.Types.ty -> meta_kindIf this is a DST type with a slice tail, return the type of the slice's element.
val mk :
size:Soteria_rust_lib.Typed.T.sint Typed.t ->
align:Soteria_rust_lib.Typed.T.nonzero Typed.t ->
?uninhabited:bool ->
?fields:Fields_shape.t ->
unit ->
tval mk_concrete :
size:int ->
align:int ->
?uninhabited:bool ->
?fields:Fields_shape.t ->
unit ->
tval not_impl_layout : string -> Charon.Types.ty -> 'a Rustsymex.tval translate_layout :
Charon.Types.ty ->
Charon.Types.layout ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval compute_size :
Charon.Types.ty ->
int option ->
Soteria_rust_lib.Typed.T.sint Typed.tval compute_align :
Charon.Types.ty ->
int option ->
Soteria_rust_lib.Typed.T.nonzero Typed.tval compute_arbitrary_layout :
?fst_size:Soteria_rust_lib.Typed.T.sint Typed.t ->
?fst_align:Soteria_rust_lib.Typed.T.nonzero Soteria.Bv_values.Typed.t ->
?variant:Charon.Types.VariantId.id ->
Charon.Types.ty ->
Charon.Types.ty list ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval compute_enum_layout :
Charon.Types.ty ->
Charon.Types.variant list ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval compute_union_layout :
Charon.Types.ty ->
Charon.Types.ty list ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval resolve_trait_ty :
Charon.Types.trait_ref ->
Charon.Types.trait_item_name ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((Charon.Types.ty, [> `InvalidLayout of Charon.Types.ty ], 'f)
Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval normalise :
Charon.Types.ty ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((Charon.Types.ty, [> `InvalidLayout of Charon.Types.ty ], 'a)
Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tNormalise a type, by substituting any generics with the current generic environment, and resolving the trait type if needed.
val min_value_z : Charon.Types.literal_type -> Soteria.Soteria_std.Z.tval max_value_z : Charon.Types.literal_type -> Soteria.Soteria_std.Z.tval size_of :
Charon.Types.ty ->
([> Soteria_rust_lib.Typed.T.sint ] Typed.t, 'env) monadval align_of :
Charon.Types.ty ->
([> Soteria_rust_lib.Typed.T.nonzero ] Typed.t, 'env) monadval is_abi_compatible :
Charon.Types.ty ->
Charon.Types.ty ->
([> Soteria_rust_lib.Typed.T.sbool ] Typed.t, 'env) monad