Bap_c_typeC 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.
val bin_size_char : char Core_kernel.Bin_prot.Size.sizerval bin_write_char : char Core_kernel.Bin_prot.Write.writerval bin_writer_char : char Core_kernel.Bin_prot.Type_class.writerval bin_read_char : char Core_kernel.Bin_prot.Read.readerval __bin_read_char__ : (int -> char) Core_kernel.Bin_prot.Read.readerval bin_reader_char : char Core_kernel.Bin_prot.Type_class.readerval bin_char : char Core_kernel.Bin_prot.Type_class.tval sexp_of_char : char -> Ppx_sexp_conv_lib.Sexp.tval char_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> charval __char_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> charval all_of_char : char listval bin_size_short : short Core_kernel.Bin_prot.Size.sizerval bin_write_short : short Core_kernel.Bin_prot.Write.writerval bin_writer_short : short Core_kernel.Bin_prot.Type_class.writerval bin_read_short : short Core_kernel.Bin_prot.Read.readerval __bin_read_short__ : (int -> short) Core_kernel.Bin_prot.Read.readerval bin_reader_short : short Core_kernel.Bin_prot.Type_class.readerval bin_short : short Core_kernel.Bin_prot.Type_class.tval sexp_of_short : short -> Ppx_sexp_conv_lib.Sexp.tval short_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> shortval __short_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> shortval all_of_short : short listval bin_size_cint : cint Core_kernel.Bin_prot.Size.sizerval bin_write_cint : cint Core_kernel.Bin_prot.Write.writerval bin_writer_cint : cint Core_kernel.Bin_prot.Type_class.writerval bin_read_cint : cint Core_kernel.Bin_prot.Read.readerval __bin_read_cint__ : (int -> cint) Core_kernel.Bin_prot.Read.readerval bin_reader_cint : cint Core_kernel.Bin_prot.Type_class.readerval bin_cint : cint Core_kernel.Bin_prot.Type_class.tval sexp_of_cint : cint -> Ppx_sexp_conv_lib.Sexp.tval cint_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> cintval __cint_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> cintval all_of_cint : cint listval bin_size_long : long Core_kernel.Bin_prot.Size.sizerval bin_write_long : long Core_kernel.Bin_prot.Write.writerval bin_writer_long : long Core_kernel.Bin_prot.Type_class.writerval bin_read_long : long Core_kernel.Bin_prot.Read.readerval __bin_read_long__ : (int -> long) Core_kernel.Bin_prot.Read.readerval bin_reader_long : long Core_kernel.Bin_prot.Type_class.readerval bin_long : long Core_kernel.Bin_prot.Type_class.tval sexp_of_long : long -> Ppx_sexp_conv_lib.Sexp.tval long_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> longval __long_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> longval all_of_long : long listval bin_size_long_long : long_long Core_kernel.Bin_prot.Size.sizerval bin_write_long_long : long_long Core_kernel.Bin_prot.Write.writerval bin_writer_long_long : long_long Core_kernel.Bin_prot.Type_class.writerval bin_read_long_long : long_long Core_kernel.Bin_prot.Read.readerval __bin_read_long_long__ : 
  (int -> long_long) Core_kernel.Bin_prot.Read.readerval bin_reader_long_long : long_long Core_kernel.Bin_prot.Type_class.readerval bin_long_long : long_long Core_kernel.Bin_prot.Type_class.tval sexp_of_long_long : long_long -> Ppx_sexp_conv_lib.Sexp.tval long_long_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> long_longval __long_long_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> long_longval all_of_long_long : long_long listval bin_size_signed : signed Core_kernel.Bin_prot.Size.sizerval bin_write_signed : signed Core_kernel.Bin_prot.Write.writerval bin_writer_signed : signed Core_kernel.Bin_prot.Type_class.writerval bin_read_signed : signed Core_kernel.Bin_prot.Read.readerval __bin_read_signed__ : (int -> signed) Core_kernel.Bin_prot.Read.readerval bin_reader_signed : signed Core_kernel.Bin_prot.Type_class.readerval bin_signed : signed Core_kernel.Bin_prot.Type_class.tval sexp_of_signed : signed -> Ppx_sexp_conv_lib.Sexp.tval signed_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> signedval __signed_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> signedval all_of_signed : signed listval bin_size_unsigned : unsigned Core_kernel.Bin_prot.Size.sizerval bin_write_unsigned : unsigned Core_kernel.Bin_prot.Write.writerval bin_writer_unsigned : unsigned Core_kernel.Bin_prot.Type_class.writerval bin_read_unsigned : unsigned Core_kernel.Bin_prot.Read.readerval __bin_read_unsigned__ : (int -> unsigned) Core_kernel.Bin_prot.Read.readerval bin_reader_unsigned : unsigned Core_kernel.Bin_prot.Type_class.readerval bin_unsigned : unsigned Core_kernel.Bin_prot.Type_class.tval sexp_of_unsigned : unsigned -> Ppx_sexp_conv_lib.Sexp.tval unsigned_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> unsignedval __unsigned_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> unsignedval all_of_unsigned : unsigned listval bin_size_enum : enum Core_kernel.Bin_prot.Size.sizerval bin_write_enum : enum Core_kernel.Bin_prot.Write.writerval bin_writer_enum : enum Core_kernel.Bin_prot.Type_class.writerval bin_read_enum : enum Core_kernel.Bin_prot.Read.readerval __bin_read_enum__ : (int -> enum) Core_kernel.Bin_prot.Read.readerval bin_reader_enum : enum Core_kernel.Bin_prot.Type_class.readerval bin_enum : enum Core_kernel.Bin_prot.Type_class.tval sexp_of_enum : enum -> Ppx_sexp_conv_lib.Sexp.tval enum_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> enumval __enum_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> enumval bin_size_integer : integer Core_kernel.Bin_prot.Size.sizerval bin_write_integer : integer Core_kernel.Bin_prot.Write.writerval bin_writer_integer : integer Core_kernel.Bin_prot.Type_class.writerval bin_read_integer : integer Core_kernel.Bin_prot.Read.readerval __bin_read_integer__ : (int -> integer) Core_kernel.Bin_prot.Read.readerval bin_reader_integer : integer Core_kernel.Bin_prot.Type_class.readerval bin_integer : integer Core_kernel.Bin_prot.Type_class.tval sexp_of_integer : integer -> Ppx_sexp_conv_lib.Sexp.tval integer_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> integerval __integer_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> integerval bin_size_real : real Core_kernel.Bin_prot.Size.sizerval bin_write_real : real Core_kernel.Bin_prot.Write.writerval bin_writer_real : real Core_kernel.Bin_prot.Type_class.writerval bin_read_real : real Core_kernel.Bin_prot.Read.readerval __bin_read_real__ : (int -> real) Core_kernel.Bin_prot.Read.readerval bin_reader_real : real Core_kernel.Bin_prot.Type_class.readerval bin_real : real Core_kernel.Bin_prot.Type_class.tval sexp_of_real : real -> Ppx_sexp_conv_lib.Sexp.tval real_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> realval __real_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> realval all_of_real : real listval bin_size_complex : complex Core_kernel.Bin_prot.Size.sizerval bin_write_complex : complex Core_kernel.Bin_prot.Write.writerval bin_writer_complex : complex Core_kernel.Bin_prot.Type_class.writerval bin_read_complex : complex Core_kernel.Bin_prot.Read.readerval __bin_read_complex__ : (int -> complex) Core_kernel.Bin_prot.Read.readerval bin_reader_complex : complex Core_kernel.Bin_prot.Type_class.readerval bin_complex : complex Core_kernel.Bin_prot.Type_class.tval sexp_of_complex : complex -> Ppx_sexp_conv_lib.Sexp.tval complex_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> complexval __complex_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> complexval all_of_complex : complex listval bin_size_floating : floating Core_kernel.Bin_prot.Size.sizerval bin_write_floating : floating Core_kernel.Bin_prot.Write.writerval bin_writer_floating : floating Core_kernel.Bin_prot.Type_class.writerval bin_read_floating : floating Core_kernel.Bin_prot.Read.readerval __bin_read_floating__ : (int -> floating) Core_kernel.Bin_prot.Read.readerval bin_reader_floating : floating Core_kernel.Bin_prot.Type_class.readerval bin_floating : floating Core_kernel.Bin_prot.Type_class.tval sexp_of_floating : floating -> Ppx_sexp_conv_lib.Sexp.tval floating_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> floatingval __floating_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> floatingval all_of_floating : floating listval bin_size_basic : basic Core_kernel.Bin_prot.Size.sizerval bin_write_basic : basic Core_kernel.Bin_prot.Write.writerval bin_writer_basic : basic Core_kernel.Bin_prot.Type_class.writerval bin_read_basic : basic Core_kernel.Bin_prot.Read.readerval __bin_read_basic__ : (int -> basic) Core_kernel.Bin_prot.Read.readerval bin_reader_basic : basic Core_kernel.Bin_prot.Type_class.readerval bin_basic : basic Core_kernel.Bin_prot.Type_class.tval sexp_of_basic : basic -> Ppx_sexp_conv_lib.Sexp.tval basic_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> basicval __basic_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> basicval bin_size_cv : cv Core_kernel.Bin_prot.Size.sizerval bin_write_cv : cv Core_kernel.Bin_prot.Write.writerval bin_writer_cv : cv Core_kernel.Bin_prot.Type_class.writerval bin_read_cv : cv Core_kernel.Bin_prot.Read.readerval __bin_read_cv__ : (int -> cv) Core_kernel.Bin_prot.Read.readerval bin_reader_cv : cv Core_kernel.Bin_prot.Type_class.readerval bin_cv : cv Core_kernel.Bin_prot.Type_class.tval sexp_of_cv : cv -> Ppx_sexp_conv_lib.Sexp.tval cv_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> cvval bin_size_cvr : cvr Core_kernel.Bin_prot.Size.sizerval bin_write_cvr : cvr Core_kernel.Bin_prot.Write.writerval bin_writer_cvr : cvr Core_kernel.Bin_prot.Type_class.writerval bin_read_cvr : cvr Core_kernel.Bin_prot.Read.readerval __bin_read_cvr__ : (int -> cvr) Core_kernel.Bin_prot.Read.readerval bin_reader_cvr : cvr Core_kernel.Bin_prot.Type_class.readerval bin_cvr : cvr Core_kernel.Bin_prot.Type_class.tval sexp_of_cvr : cvr -> Ppx_sexp_conv_lib.Sexp.tval cvr_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> cvrmodule Qualifier : sig ... endtype 'a qualifier = 'a Qualifier.tval bin_size_qualifier : 
  'a Core_kernel.Bin_prot.Size.sizer ->
  'a qualifier Core_kernel.Bin_prot.Size.sizerval bin_write_qualifier : 
  'a Core_kernel.Bin_prot.Write.writer ->
  'a qualifier Core_kernel.Bin_prot.Write.writerval bin_writer_qualifier : 
  'a Core_kernel.Bin_prot.Type_class.writer ->
  'a qualifier Core_kernel.Bin_prot.Type_class.writerval bin_read_qualifier : 
  'a Core_kernel.Bin_prot.Read.reader ->
  'a qualifier Core_kernel.Bin_prot.Read.readerval __bin_read_qualifier__ : 
  'a Core_kernel.Bin_prot.Read.reader ->
  (int -> 'a qualifier) Core_kernel.Bin_prot.Read.readerval bin_reader_qualifier : 
  'a Core_kernel.Bin_prot.Type_class.reader ->
  'a qualifier Core_kernel.Bin_prot.Type_class.readerval bin_qualifier : 
  'a Core_kernel.Bin_prot.Type_class.t ->
  'a qualifier Core_kernel.Bin_prot.Type_class.tval sexp_of_qualifier : 
  ('a -> Ppx_sexp_conv_lib.Sexp.t) ->
  'a qualifier ->
  Ppx_sexp_conv_lib.Sexp.tval qualifier_of_sexp : 
  (Ppx_sexp_conv_lib.Sexp.t -> 'a) ->
  Ppx_sexp_conv_lib.Sexp.t ->
  'a qualifiermodule Attr : sig ... endtype attr = Attr.tval bin_size_attr : attr Core_kernel.Bin_prot.Size.sizerval bin_write_attr : attr Core_kernel.Bin_prot.Write.writerval bin_writer_attr : attr Core_kernel.Bin_prot.Type_class.writerval bin_read_attr : attr Core_kernel.Bin_prot.Read.readerval __bin_read_attr__ : (int -> attr) Core_kernel.Bin_prot.Read.readerval bin_reader_attr : attr Core_kernel.Bin_prot.Type_class.readerval bin_attr : attr Core_kernel.Bin_prot.Type_class.tval sexp_of_attr : attr -> Ppx_sexp_conv_lib.Sexp.tval attr_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> attrmodule Spec : sig ... endtype ('a, 'b) spec = ('a, 'b) Spec.tval bin_size_spec : 
  'a Core_kernel.Bin_prot.Size.sizer ->
  'b Core_kernel.Bin_prot.Size.sizer ->
  ('a, 'b) spec Core_kernel.Bin_prot.Size.sizerval bin_write_spec : 
  'a Core_kernel.Bin_prot.Write.writer ->
  'b Core_kernel.Bin_prot.Write.writer ->
  ('a, 'b) spec Core_kernel.Bin_prot.Write.writerval bin_writer_spec : 
  'a Core_kernel.Bin_prot.Type_class.writer ->
  'b Core_kernel.Bin_prot.Type_class.writer ->
  ('a, 'b) spec Core_kernel.Bin_prot.Type_class.writerval bin_read_spec : 
  'a Core_kernel.Bin_prot.Read.reader ->
  'b Core_kernel.Bin_prot.Read.reader ->
  ('a, 'b) spec Core_kernel.Bin_prot.Read.readerval __bin_read_spec__ : 
  'a Core_kernel.Bin_prot.Read.reader ->
  'b Core_kernel.Bin_prot.Read.reader ->
  (int -> ('a, 'b) spec) Core_kernel.Bin_prot.Read.readerval bin_reader_spec : 
  'a Core_kernel.Bin_prot.Type_class.reader ->
  'b Core_kernel.Bin_prot.Type_class.reader ->
  ('a, 'b) spec Core_kernel.Bin_prot.Type_class.readerval bin_spec : 
  'a Core_kernel.Bin_prot.Type_class.t ->
  'b Core_kernel.Bin_prot.Type_class.t ->
  ('a, 'b) spec Core_kernel.Bin_prot.Type_class.tval sexp_of_spec : 
  ('a -> Ppx_sexp_conv_lib.Sexp.t) ->
  ('b -> Ppx_sexp_conv_lib.Sexp.t) ->
  ('a, 'b) spec ->
  Ppx_sexp_conv_lib.Sexp.tval spec_of_sexp : 
  (Ppx_sexp_conv_lib.Sexp.t -> 'a) ->
  (Ppx_sexp_conv_lib.Sexp.t -> 'b) ->
  Ppx_sexp_conv_lib.Sexp.t ->
  ('a, 'b) specval bin_size_no_qualifier : no_qualifier Core_kernel.Bin_prot.Size.sizerval bin_write_no_qualifier : no_qualifier Core_kernel.Bin_prot.Write.writerval bin_writer_no_qualifier : 
  no_qualifier Core_kernel.Bin_prot.Type_class.writerval bin_read_no_qualifier : no_qualifier Core_kernel.Bin_prot.Read.readerval __bin_read_no_qualifier__ : 
  (int -> no_qualifier) Core_kernel.Bin_prot.Read.readerval bin_reader_no_qualifier : 
  no_qualifier Core_kernel.Bin_prot.Type_class.readerval bin_no_qualifier : no_qualifier Core_kernel.Bin_prot.Type_class.tval compare_no_qualifier : no_qualifier -> no_qualifier -> intval sexp_of_no_qualifier : no_qualifier -> Ppx_sexp_conv_lib.Sexp.tval no_qualifier_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> no_qualifierval __no_qualifier_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> no_qualifiermodule Proto : sig ... endmodule Compound : sig ... endmodule Array : sig ... endand compound = t Compound.tval bin_size_t : t Core_kernel.Bin_prot.Size.sizerval bin_write_t : t Core_kernel.Bin_prot.Write.writerval bin_writer_t : t Core_kernel.Bin_prot.Type_class.writerval bin_size_proto : proto Core_kernel.Bin_prot.Size.sizerval bin_write_proto : proto Core_kernel.Bin_prot.Write.writerval bin_writer_proto : proto Core_kernel.Bin_prot.Type_class.writerval bin_size_compound : compound Core_kernel.Bin_prot.Size.sizerval bin_write_compound : compound Core_kernel.Bin_prot.Write.writerval bin_writer_compound : compound Core_kernel.Bin_prot.Type_class.writerval bin_size_array : array Core_kernel.Bin_prot.Size.sizerval bin_write_array : array Core_kernel.Bin_prot.Write.writerval bin_writer_array : array Core_kernel.Bin_prot.Type_class.writerval bin_read_t : t Core_kernel.Bin_prot.Read.readerval __bin_read_t__ : (int -> t) Core_kernel.Bin_prot.Read.readerval bin_reader_t : t Core_kernel.Bin_prot.Type_class.readerval bin_read_proto : proto Core_kernel.Bin_prot.Read.readerval __bin_read_proto__ : (int -> proto) Core_kernel.Bin_prot.Read.readerval bin_reader_proto : proto Core_kernel.Bin_prot.Type_class.readerval bin_read_compound : compound Core_kernel.Bin_prot.Read.readerval __bin_read_compound__ : (int -> compound) Core_kernel.Bin_prot.Read.readerval bin_reader_compound : compound Core_kernel.Bin_prot.Type_class.readerval bin_read_array : array Core_kernel.Bin_prot.Read.readerval __bin_read_array__ : (int -> array) Core_kernel.Bin_prot.Read.readerval bin_reader_array : array Core_kernel.Bin_prot.Type_class.readerval bin_t : t Core_kernel.Bin_prot.Type_class.tval bin_proto : proto Core_kernel.Bin_prot.Type_class.tval bin_compound : compound Core_kernel.Bin_prot.Type_class.tval bin_array : array Core_kernel.Bin_prot.Type_class.tval sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.tval sexp_of_proto : proto -> Ppx_sexp_conv_lib.Sexp.tval sexp_of_compound : compound -> Ppx_sexp_conv_lib.Sexp.tval sexp_of_array : array -> Ppx_sexp_conv_lib.Sexp.tval t_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> tval __t_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> tval proto_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> protoval compound_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> compoundval array_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> arrayval bin_size_scalar : scalar Core_kernel.Bin_prot.Size.sizerval bin_write_scalar : scalar Core_kernel.Bin_prot.Write.writerval bin_writer_scalar : scalar Core_kernel.Bin_prot.Type_class.writerval bin_read_scalar : scalar Core_kernel.Bin_prot.Read.readerval __bin_read_scalar__ : (int -> scalar) Core_kernel.Bin_prot.Read.readerval bin_reader_scalar : scalar Core_kernel.Bin_prot.Type_class.readerval bin_scalar : scalar Core_kernel.Bin_prot.Type_class.tval sexp_of_scalar : scalar -> Ppx_sexp_conv_lib.Sexp.tval scalar_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> scalarval __scalar_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> scalarval bin_size_aggregate : aggregate Core_kernel.Bin_prot.Size.sizerval bin_write_aggregate : aggregate Core_kernel.Bin_prot.Write.writerval bin_writer_aggregate : aggregate Core_kernel.Bin_prot.Type_class.writerval bin_read_aggregate : aggregate Core_kernel.Bin_prot.Read.readerval __bin_read_aggregate__ : 
  (int -> aggregate) Core_kernel.Bin_prot.Read.readerval bin_reader_aggregate : aggregate Core_kernel.Bin_prot.Type_class.readerval bin_aggregate : aggregate Core_kernel.Bin_prot.Type_class.tval sexp_of_aggregate : aggregate -> Ppx_sexp_conv_lib.Sexp.tval aggregate_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> aggregateval __aggregate_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t -> aggregateval is_const : t -> Core_kernel.Bool.tis_const t is true if type is const-qualified.
val is_volatile : t -> Core_kernel.Bool.tis_volatile t is true if type is volatile-qualified.
val is_restrict : t -> Core_kernel.Bool.tis_restrict t is true if type is restrict-qualified.
val is_void : t -> Core_kernel.Bool.tis_void t true iff t is `Void
val basic : 
  ?attrs:attr list ->
  ?const:Core_kernel.Bool.t ->
  ?volatile:Core_kernel.Bool.t ->
  basic ->
  tbasic x constructs a basic type.
Example, basic `char. All parameters default to false or empty.
val is_basic : t -> Core_kernel.Bool.tval is_char : t -> Core_kernel.Bool.tval is_short : t -> Core_kernel.Bool.tval is_cint : t -> Core_kernel.Bool.tval is_signed : t -> Core_kernel.Bool.tval is_unsigned : t -> Core_kernel.Bool.tval is_enum : t -> Core_kernel.Bool.tval is_integer : t -> Core_kernel.Bool.tval is_real : t -> Core_kernel.Bool.tval is_complex : t -> Core_kernel.Bool.tval is_floating : t -> Core_kernel.Bool.tval pointer : 
  ?attrs:attr list ->
  ?const:Core_kernel.Bool.t ->
  ?volatile:Core_kernel.Bool.t ->
  ?restrict:Core_kernel.Bool.t ->
  t ->
  tpointer t constructs a pointer to the type t.
val array : 
  ?attrs:attr list ->
  ?const:Core_kernel.Bool.t ->
  ?volatile:Core_kernel.Bool.t ->
  ?restrict:Core_kernel.Bool.t ->
  ?size:Core_kernel.Int.t ->
  t ->
  tarray t constructs an array of type t elements.
The size is the optional size (the number of elements) of the array.
val is_array : t -> Core_kernel.Bool.tval is_pointer : t -> Core_kernel.Bool.tstructure name fields constructure a structure type.
val is_structure : t -> Core_kernel.Bool.tunion name fields conunion a union type.
val is_union : t -> Core_kernel.Bool.tval function_ : 
  ?attrs:attr list ->
  ?variadic:Core_kernel.Bool.t ->
  ?return:t ->
  (string * t) list ->
  tfunction args constructs a function type.
val is_function : t -> Core_kernel.Bool.tval pp : Stdlib.Format.formatter -> t -> unitval pp_proto : Stdlib.Format.formatter -> proto -> unit