Soteria_c_lib.Layoutmodule BV = Typed.BitVecmodule Agv = Aggregate_valmodule Tag_defs : sig ... endval precision :
CF.Ctype.floatingType ->
Soteria.Bv_values.Svalue.FloatPrecision.tval size_of_int_ty_unsupported : CF.Ctype.integerType -> int Csymex.tval layout_of : CF.Ctype.ctype -> layout optionval union_layout_of_members :
(Identifier.t
* (Cerb_frontend.Annot.attributes
* CF.Ctype.alignment option
* CF.Ctype.qualifiers
* CF.Ctype.ctype))
list ->
layout optionval layout_of_struct : Cerb_frontend.Symbol.sym -> layout optionval struct_layout_of_members :
(Identifier.t
* (Cerb_frontend.Annot.attributes
* CF.Ctype.alignment option
* CF.Ctype.qualifiers
* CF.Ctype.ctype))
Soteria.Soteria_std.Foldable.List.t ->
layout optionFrom: https://www.gnu.org/software/c-intro-and-ref/manual/html_node/Structure-Layout.html The structure’s fields appear in the structure layout in the order they are declared. When possible, consecutive fields occupy consecutive bytes within the structure. However, if a field’s type demands more alignment than it would get that way, C gives it the alignment it requires by leaving a gap after the previous field.
Once all the fields have been laid out, it is possible to determine the structure’s alignment and size. The structure’s alignment is the maximum alignment of any of the fields in it. Then the structure’s size is rounded up to a multiple of its alignment. That may require leaving a gap at the end of the structure.
val size_of_s :
CF.Ctype.ctype ->
[> Soteria__Bv_values__Typed.T.sint ] Soteria__Bv_values__Typed.t Csymex.tval align_of_s :
CF.Ctype.ctype ->
[> Soteria__Bv_values__Typed.T.sint ] Soteria__Bv_values__Typed.t Csymex.tval member_ofs :
CF.Symbol.identifier ->
CF.Ctype.ctype ->
[> Soteria__Bv_values__Typed.T.sint ] Soteria__Bv_values__Typed.t Csymex.tval int_bv_info : CF.Ctype.integerType -> bv_info optionval bv_info : CF.Ctype.ctype -> bv_info optionval constraints_exn :
ty:CF.Ctype.ctype ->
Agv.t ->
Soteria_c_lib.Typed.T.sbool Typed.t listval constraints :
ty:CF.Ctype.ctype ->
Agv.t ->
Soteria_c_lib.Typed.T.sbool Typed.t list optionval nondet_c_ty_ :
CF.Ctype.ctype_ ->
Soteria_c_lib.Typed.T.cval Typed.t Csymex.tval nondet_c_ty : CF.Ctype.ctype -> Soteria_c_lib.Typed.T.cval Typed.t Csymex.tval int_ty_bounds :
CF.Ctype.integerType ->
(Soteria.Soteria_std.Z.t * Soteria.Soteria_std.Z.t) optionReturns the target type for "usual arithmetic conversions" between two types.
See https://learn.microsoft.com/en-us/cpp/c-language/usual-arithmetic-conversions