C Type System.

We represent a C type structurally, i.e., the type representation is self-containted and doesn't require any typing requirement.

Polymorphic variants are used to represent C type constructors and type groups.

The type system is extended with attributes, i.e., it is possible to attach attributes of the form attr(args) to C type declarations.

type char = [
  1. | `schar
  2. | `char
  3. | `uchar
]
val bin_shape_char : Core_kernel.Bin_prot.Shape.t
val bin_size_char : 'a -> int
val bin_write_char : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `char | `schar | `uchar ] -> Bin_prot.Common.pos
val bin_writer_char : [< `char | `schar | `uchar ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_char__ : 'a -> pos_ref:'b -> int -> [> `char | `schar | `uchar ]
val bin_read_char : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `char | `schar | `uchar ]
val bin_reader_char : [> `char | `schar | `uchar ] Core_kernel.Bin_prot.Type_class.reader
val bin_char : [ `char | `schar | `uchar ] Core_kernel.Bin_prot.Type_class.t
val compare_char : char -> char -> int
val __char_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> char
val char_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> char
val sexp_of_char : char -> Ppx_sexp_conv_lib.Sexp.t
val all_of_char : char list
type short = [
  1. | `sshort
  2. | `ushort
]
val bin_shape_short : Core_kernel.Bin_prot.Shape.t
val bin_size_short : 'a -> int
val bin_write_short : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `sshort | `ushort ] -> Bin_prot.Common.pos
val bin_writer_short : [< `sshort | `ushort ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_short__ : 'a -> pos_ref:'b -> int -> [> `sshort | `ushort ]
val bin_read_short : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `sshort | `ushort ]
val bin_reader_short : [> `sshort | `ushort ] Core_kernel.Bin_prot.Type_class.reader
val bin_short : [ `sshort | `ushort ] Core_kernel.Bin_prot.Type_class.t
val compare_short : short -> short -> int
val __short_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> short
val short_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> short
val sexp_of_short : short -> Ppx_sexp_conv_lib.Sexp.t
val all_of_short : short list
type cint = [
  1. | `uint
  2. | `sint
]
val bin_shape_cint : Core_kernel.Bin_prot.Shape.t
val bin_size_cint : 'a -> int
val bin_write_cint : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `sint | `uint ] -> Bin_prot.Common.pos
val bin_writer_cint : [< `sint | `uint ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_cint__ : 'a -> pos_ref:'b -> int -> [> `sint | `uint ]
val bin_read_cint : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `sint | `uint ]
val bin_reader_cint : [> `sint | `uint ] Core_kernel.Bin_prot.Type_class.reader
val bin_cint : [ `sint | `uint ] Core_kernel.Bin_prot.Type_class.t
val compare_cint : cint -> cint -> int
val __cint_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> cint
val cint_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> cint
val sexp_of_cint : cint -> Ppx_sexp_conv_lib.Sexp.t
val all_of_cint : cint list
type long = [
  1. | `slong
  2. | `ulong
]
val bin_shape_long : Core_kernel.Bin_prot.Shape.t
val bin_size_long : 'a -> int
val bin_write_long : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `slong | `ulong ] -> Bin_prot.Common.pos
val bin_writer_long : [< `slong | `ulong ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_long__ : 'a -> pos_ref:'b -> int -> [> `slong | `ulong ]
val bin_read_long : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `slong | `ulong ]
val bin_reader_long : [> `slong | `ulong ] Core_kernel.Bin_prot.Type_class.reader
val bin_long : [ `slong | `ulong ] Core_kernel.Bin_prot.Type_class.t
val compare_long : long -> long -> int
val __long_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> long
val long_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> long
val sexp_of_long : long -> Ppx_sexp_conv_lib.Sexp.t
val all_of_long : long list
type long_long = [
  1. | `slong_long
  2. | `ulong_long
]
val bin_shape_long_long : Core_kernel.Bin_prot.Shape.t
val bin_size_long_long : 'a -> int
val bin_write_long_long : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `slong_long | `ulong_long ] -> Bin_prot.Common.pos
val bin_writer_long_long : [< `slong_long | `ulong_long ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_long_long__ : 'a -> pos_ref:'b -> int -> [> `slong_long | `ulong_long ]
val bin_read_long_long : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `slong_long | `ulong_long ]
val bin_reader_long_long : [> `slong_long | `ulong_long ] Core_kernel.Bin_prot.Type_class.reader
val bin_long_long : [ `slong_long | `ulong_long ] Core_kernel.Bin_prot.Type_class.t
val compare_long_long : long_long -> long_long -> int
val __long_long_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> long_long
val long_long_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> long_long
val sexp_of_long_long : long_long -> Ppx_sexp_conv_lib.Sexp.t
val all_of_long_long : long_long list
type signed = [
  1. | `schar
  2. | `sshort
  3. | `sint
  4. | `slong
  5. | `slong_long
]
val bin_shape_signed : Core_kernel.Bin_prot.Shape.t
val bin_size_signed : 'a -> int
val bin_write_signed : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `schar | `sint | `slong | `slong_long | `sshort ] -> Bin_prot.Common.pos
val bin_writer_signed : [< `schar | `sint | `slong | `slong_long | `sshort ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_signed__ : 'a -> pos_ref:'b -> int -> [> `schar | `sint | `slong | `slong_long | `sshort ]
val bin_read_signed : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `schar | `sint | `slong | `slong_long | `sshort ]
val bin_reader_signed : [> `schar | `sint | `slong | `slong_long | `sshort ] Core_kernel.Bin_prot.Type_class.reader
val bin_signed : [ `schar | `sint | `slong | `slong_long | `sshort ] Core_kernel.Bin_prot.Type_class.t
val compare_signed : signed -> signed -> int
val __signed_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> signed
val signed_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> signed
val sexp_of_signed : signed -> Ppx_sexp_conv_lib.Sexp.t
val all_of_signed : signed list
type unsigned = [
  1. | `uchar
  2. | `ushort
  3. | `uint
  4. | `ulong
  5. | `ulong_long
]
val bin_shape_unsigned : Core_kernel.Bin_prot.Shape.t
val bin_size_unsigned : 'a -> int
val bin_write_unsigned : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `uchar | `uint | `ulong | `ulong_long | `ushort ] -> Bin_prot.Common.pos
val bin_writer_unsigned : [< `uchar | `uint | `ulong | `ulong_long | `ushort ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_unsigned__ : 'a -> pos_ref:'b -> int -> [> `uchar | `uint | `ulong | `ulong_long | `ushort ]
val bin_read_unsigned : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `uchar | `uint | `ulong | `ulong_long | `ushort ]
val bin_reader_unsigned : [> `uchar | `uint | `ulong | `ulong_long | `ushort ] Core_kernel.Bin_prot.Type_class.reader
val bin_unsigned : [ `uchar | `uint | `ulong | `ulong_long | `ushort ] Core_kernel.Bin_prot.Type_class.t
val compare_unsigned : unsigned -> unsigned -> int
val __unsigned_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> unsigned
val unsigned_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> unsigned
val sexp_of_unsigned : unsigned -> Ppx_sexp_conv_lib.Sexp.t
val all_of_unsigned : unsigned list
type enum = [
  1. | `enum of (string * int64 option) list
]
val bin_shape_enum : Core_kernel.Bin_prot.Shape.t
val bin_size_enum : [< `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t ] -> int
val __bin_read_enum__ : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> int -> [> `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t ]
val compare_enum : enum -> enum -> int
val __enum_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> enum
val enum_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> enum
val sexp_of_enum : enum -> Ppx_sexp_conv_lib.Sexp.t
type integer = [
  1. | char
  2. | signed
  3. | unsigned
  4. | enum
]
val bin_shape_integer : Core_kernel.Bin_prot.Shape.t
val bin_size_integer : [< `char | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ] -> int
val bin_write_integer : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `char | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ] -> Bin_prot.Common.pos
val bin_writer_integer : [< `char | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_integer__ : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> int -> integer
val bin_read_integer : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> integer
val compare_integer : integer -> integer -> int
val __integer_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> integer
val integer_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> integer
val sexp_of_integer : integer -> Ppx_sexp_conv_lib.Sexp.t
type real = [
  1. | `float
  2. | `double
  3. | `long_double
]
val bin_shape_real : Core_kernel.Bin_prot.Shape.t
val bin_size_real : 'a -> int
val bin_write_real : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `double | `float | `long_double ] -> Bin_prot.Common.pos
val bin_writer_real : [< `double | `float | `long_double ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_real__ : 'a -> pos_ref:'b -> int -> [> `double | `float | `long_double ]
val bin_read_real : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `double | `float | `long_double ]
val bin_reader_real : [> `double | `float | `long_double ] Core_kernel.Bin_prot.Type_class.reader
val bin_real : [ `double | `float | `long_double ] Core_kernel.Bin_prot.Type_class.t
val compare_real : real -> real -> int
val __real_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> real
val real_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> real
val sexp_of_real : real -> Ppx_sexp_conv_lib.Sexp.t
val all_of_real : real list
type complex = [
  1. | `cfloat
  2. | `cdouble
  3. | `clong_double
]
val bin_shape_complex : Core_kernel.Bin_prot.Shape.t
val bin_size_complex : 'a -> int
val bin_write_complex : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `cdouble | `cfloat | `clong_double ] -> Bin_prot.Common.pos
val bin_writer_complex : [< `cdouble | `cfloat | `clong_double ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_complex__ : 'a -> pos_ref:'b -> int -> [> `cdouble | `cfloat | `clong_double ]
val bin_read_complex : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `cdouble | `cfloat | `clong_double ]
val bin_reader_complex : [> `cdouble | `cfloat | `clong_double ] Core_kernel.Bin_prot.Type_class.reader
val bin_complex : [ `cdouble | `cfloat | `clong_double ] Core_kernel.Bin_prot.Type_class.t
val compare_complex : complex -> complex -> int
val __complex_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> complex
val complex_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> complex
val sexp_of_complex : complex -> Ppx_sexp_conv_lib.Sexp.t
val all_of_complex : complex list
type floating = [
  1. | real
  2. | complex
]
val bin_shape_floating : Core_kernel.Bin_prot.Shape.t
val bin_size_floating : [< `cdouble | `cfloat | `clong_double | `double | `float | `long_double ] -> int
val bin_write_floating : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `cdouble | `cfloat | `clong_double | `double | `float | `long_double ] -> Bin_prot.Common.pos
val bin_writer_floating : [< `cdouble | `cfloat | `clong_double | `double | `float | `long_double ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_floating__ : 'a -> pos_ref:'b -> int -> floating
val bin_read_floating : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> floating
val compare_floating : floating -> floating -> int
val __floating_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> floating
val floating_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> floating
val sexp_of_floating : floating -> Ppx_sexp_conv_lib.Sexp.t
val all_of_floating : floating list
type basic = [
  1. | integer
  2. | floating
]
val bin_shape_basic : Core_kernel.Bin_prot.Shape.t
val bin_size_basic : [< `cdouble | `cfloat | `char | `clong_double | `double | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `float | `long_double | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ] -> int
val bin_write_basic : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `cdouble | `cfloat | `char | `clong_double | `double | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `float | `long_double | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ] -> Bin_prot.Common.pos
val bin_writer_basic : [< `cdouble | `cfloat | `char | `clong_double | `double | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `float | `long_double | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_basic__ : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> int -> basic
val bin_read_basic : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> basic
val compare_basic : basic -> basic -> int
val __basic_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> basic
val basic_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> basic
val sexp_of_basic : basic -> Ppx_sexp_conv_lib.Sexp.t
type cv = unit
val bin_shape_cv : Core_kernel.Bin_prot.Shape.t
val __bin_read_cv__ : (int -> cv) Core_kernel.Bin_prot.Read.reader
val compare_cv : cv -> cv -> int
val cv_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> cv
val sexp_of_cv : cv -> Ppx_sexp_conv_lib.Sexp.t
val bin_shape_cvr : Core_kernel.Bin_prot.Shape.t
val __bin_read_cvr__ : (int -> cvr) Core_kernel.Bin_prot.Read.reader
val compare_cvr : cvr -> cvr -> int
val cvr_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> cvr
val sexp_of_cvr : cvr -> Ppx_sexp_conv_lib.Sexp.t
module Qualifier : sig ... end
type 'a qualifier = 'a Qualifier.t
val __bin_read_qualifier__ : 'a. 'a Core_kernel.Bin_prot.Read.reader -> (int -> 'a qualifier) Core_kernel.Bin_prot.Read.reader
val compare_qualifier : 'a. ('a -> 'a -> int) -> 'a qualifier -> 'a qualifier -> int
val qualifier_of_sexp : 'a. (Ppx_sexp_conv_lib.Sexp.t -> 'a) -> Ppx_sexp_conv_lib.Sexp.t -> 'a qualifier
val sexp_of_qualifier : 'a. ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a qualifier -> Ppx_sexp_conv_lib.Sexp.t
module Attr : sig ... end
type attr = Attr.t
val bin_shape_attr : Core_kernel.Bin_prot.Shape.t
val __bin_read_attr__ : (int -> attr) Core_kernel.Bin_prot.Read.reader
val compare_attr : attr -> attr -> int
val attr_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> attr
val sexp_of_attr : attr -> Ppx_sexp_conv_lib.Sexp.t
module Spec : sig ... end
type ('a, 'b) spec = ('a, 'b) Spec.t
val compare_spec : 'a 'b. ('a -> 'a -> Base.Int.t) -> ('b -> 'b -> Base.Int.t) -> ('a, 'b) spec -> ('a, 'b) spec -> Base.Int.t
val spec_of_sexp : 'a 'b. (Ppx_sexp_conv_lib.Sexp.t -> 'a) -> (Ppx_sexp_conv_lib.Sexp.t -> 'b) -> Ppx_sexp_conv_lib.Sexp.t -> ('a, 'b) spec
val sexp_of_spec : 'a 'b. ('a -> Ppx_sexp_conv_lib.Sexp.t) -> ('b -> Ppx_sexp_conv_lib.Sexp.t) -> ('a, 'b) spec -> Ppx_sexp_conv_lib.Sexp.t
type no_qualifier = [
  1. | `no_qualifier
]
val bin_shape_no_qualifier : Core_kernel.Bin_prot.Shape.t
val bin_size_no_qualifier : 'a -> int
val bin_write_no_qualifier : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `no_qualifier ] -> Bin_prot.Common.pos
val bin_writer_no_qualifier : [< `no_qualifier ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_no_qualifier__ : 'a -> pos_ref:'b -> int -> [> `no_qualifier ]
val bin_read_no_qualifier : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `no_qualifier ]
val bin_reader_no_qualifier : [> `no_qualifier ] Core_kernel.Bin_prot.Type_class.reader
val bin_no_qualifier : [ `no_qualifier ] Core_kernel.Bin_prot.Type_class.t
val compare_no_qualifier : no_qualifier -> no_qualifier -> int
val __no_qualifier_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> no_qualifier
val no_qualifier_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> no_qualifier
val sexp_of_no_qualifier : no_qualifier -> Ppx_sexp_conv_lib.Sexp.t
module Proto : sig ... end
module Compound : sig ... end
module Array : sig ... end
type t = [
  1. | `Void
  2. | `Basic of (cv qualifier, basic) spec
  3. | `Pointer of (cvr qualifier, t) spec
  4. | `Array of (cvr qualifier, array) spec
  5. | `Structure of (no_qualifier, compound) spec
  6. | `Union of (no_qualifier, compound) spec
  7. | `Function of (no_qualifier, proto) spec
]
and proto = t Proto.t
and compound = t Compound.t
and array = t Array.t
val bin_shape_proto : Core_kernel.Bin_prot.Shape.t
val bin_shape_compound : Core_kernel.Bin_prot.Shape.t
val bin_shape_array : Core_kernel.Bin_prot.Shape.t
val __bin_read_t__ : (int -> t) Core_kernel.Bin_prot.Read.reader
val __bin_read_proto__ : (int -> proto) Core_kernel.Bin_prot.Read.reader
val __bin_read_compound__ : (int -> compound) Core_kernel.Bin_prot.Read.reader
val __bin_read_array__ : (int -> array) Core_kernel.Bin_prot.Read.reader
val compare : t -> t -> Base.Int.t
val compare_proto : proto -> proto -> Base.Int.t
val compare_compound : compound -> compound -> Base.Int.t
val compare_array : array -> array -> Base.Int.t
val __t_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> t
val t_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> t
val proto_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> proto
val compound_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> compound
val array_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> array
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
val sexp_of_proto : proto -> Ppx_sexp_conv_lib.Sexp.t
val sexp_of_compound : compound -> Ppx_sexp_conv_lib.Sexp.t
val sexp_of_array : array -> Ppx_sexp_conv_lib.Sexp.t
type scalar = [
  1. | `Basic of (cv qualifier, basic) spec
  2. | `Pointer of (cvr qualifier, t) spec
]
val bin_shape_scalar : Core_kernel.Bin_prot.Shape.t
val bin_size_scalar : [< `Basic of (cv qualifier, [< `cdouble | `cfloat | `char | `clong_double | `double | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `float | `long_double | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ]) spec | `Pointer of (cvr qualifier, t) spec ] -> int
val bin_write_scalar : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `Basic of (cv qualifier, [< `cdouble | `cfloat | `char | `clong_double | `double | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `float | `long_double | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ]) spec | `Pointer of (cvr qualifier, t) spec ] -> Bin_prot.Common.pos
val bin_writer_scalar : [< `Basic of (cv qualifier, [< `cdouble | `cfloat | `char | `clong_double | `double | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `float | `long_double | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ]) spec & (cv qualifier, [< `cdouble | `cfloat | `char | `clong_double | `double | `enum of (Base.String.t * Base.Int64.t Base.Option.t) Base.List.t | `float | `long_double | `schar | `sint | `slong | `slong_long | `sshort | `uchar | `uint | `ulong | `ulong_long | `ushort ]) spec | `Pointer of (cvr qualifier, t) spec ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_scalar__ : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> int -> [> `Basic of (cv qualifier, basic) spec | `Pointer of (cvr qualifier, t) spec ]
val bin_read_scalar : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `Basic of (cv qualifier, basic) spec | `Pointer of (cvr qualifier, t) spec ]
val bin_reader_scalar : [> `Basic of (cv qualifier, basic) spec | `Pointer of (cvr qualifier, t) spec ] Core_kernel.Bin_prot.Type_class.reader
val bin_scalar : [ `Basic of (cv qualifier, basic) spec | `Pointer of (cvr qualifier, t) spec ] Core_kernel.Bin_prot.Type_class.t
val compare_scalar : scalar -> scalar -> int
val __scalar_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> scalar
val scalar_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> scalar
val sexp_of_scalar : scalar -> Ppx_sexp_conv_lib.Sexp.t
type aggregate = [
  1. | `Array of (no_qualifier, t) spec
  2. | `Structure of (no_qualifier, t list) spec
]
val bin_shape_aggregate : Core_kernel.Bin_prot.Shape.t
val bin_size_aggregate : [< `Array of ('a, t) spec | `Structure of ('b, t Base.List.t) spec ] -> int
val bin_write_aggregate : Bin_prot.Common.buf -> pos:Bin_prot.Common.pos -> [< `Array of ([< `no_qualifier ], t) spec | `Structure of ([< `no_qualifier ], t Base.List.t) spec ] -> Bin_prot.Common.pos
val bin_writer_aggregate : [< `Array of ('a, t) spec & ([< `no_qualifier ], t) spec | `Structure of ('b, t Base.List.t) spec & ([< `no_qualifier ], t Base.List.t) spec ] Core_kernel.Bin_prot.Type_class.writer
val __bin_read_aggregate__ : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> int -> [> `Array of ([> `no_qualifier ], t) spec | `Structure of ([> `no_qualifier ], t Base.List.t) spec ]
val bin_read_aggregate : Bin_prot.Common.buf -> pos_ref:Bin_prot.Common.pos_ref -> [> `Array of ([> `no_qualifier ], t) spec | `Structure of ([> `no_qualifier ], t Base.List.t) spec ]
val bin_reader_aggregate : [> `Array of ([> `no_qualifier ], t) spec | `Structure of ([> `no_qualifier ], t Base.List.t) spec ] Core_kernel.Bin_prot.Type_class.reader
val bin_aggregate : [ `Array of ([ `no_qualifier ], t) spec | `Structure of ([ `no_qualifier ], t Base.List.t) spec ] Core_kernel.Bin_prot.Type_class.t
val compare_aggregate : aggregate -> aggregate -> int
val __aggregate_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> aggregate
val aggregate_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> aggregate
val sexp_of_aggregate : aggregate -> Ppx_sexp_conv_lib.Sexp.t