Make.I
type 'a t = {
clock : 'a; |
clear : 'a; |
push : 'a; |
scalar : 'a Scalar.t; |
window : 'a; |
affine_point : 'a; |
pop : 'a; |
}
include Ppx_deriving_hardcaml_runtime.Interface.S with type 'a t := 'a t
val sexp_of_t : ( 'a -> Sexplib0.Sexp.t ) -> 'a t -> Sexplib0.Sexp.t
val iter : 'a t -> f:( 'a -> Base.unit ) -> Base.unit
val to_list : 'a t -> 'a Base.list
val t : (Base.string * Base.int) t
include Base.Equal.S1 with type 'a t := 'a t
val equal : 'a Base__Equal.equal -> 'a t Base__Equal.equal
val port_names : Base.string t
RTL names specified in the interface definition - commonly also the OCaml field name.
val port_widths : Base.int t
Bit widths specified in the interface definition.
module Unsafe_assoc_by_port_name : sig ... end
val fold : 'a t -> init:'acc -> f:( 'acc -> 'a -> 'acc ) -> 'acc
val offsets : ?rev:Base.bool -> Base.unit -> Base.int t
Offset of each field within the interface. The first field is placed at the least significant bit, unless the rev
argument is true.
Take a list of interfaces and produce a single interface where each field is a list.
Create a list of interfaces from a single interface where each field is a list. Raises if all lists don't have the same length.
Similar to Monad.all
for lists -- combine and lift the monads to outside the interface.
Equivalent to All(Or_error).all. This is made a special case for convenience.
module type Comb = sig ... end
module Of_bits : Comb with type comb = Hardcaml.Bits.t
module Of_signal : sig ... end
module Of_always : sig ... end
Helper functions to ease usage of the Always API when working with interfaces.
module Names_and_widths : sig ... end