package containers

  1. Overview
  2. Docs
A modular, clean and powerful extension of the OCaml standard library

Install

Dune Dependency

Authors

Maintainers

Sources

containers-3.13.tbz
sha256=372df86e2a41e86c959c28a3392eb2ffd89754d1e5af2aaa09537654af57b1da
sha512=7d87d44065612095fa0342a9c95a2c4cfdf73d5af47c6fce24262cf2870c36dee70ebecd056113aa9c1643256bc032c08530f5083061c44602c0da5a132c2d6c

doc/containers.codegen/Containers_codegen/index.html

Module Containers_codegenSource

Code generators

The code generator library is designed to be used from a build system (for example, from dune) to generate efficient code for features that are harder to provide at runtime.

The idea is that the build system should invoke some OCaml script that depends on containers.codegen; the script uses the DSL below to describe what code to generate (e.g. a description of a bitfield type) and emits a .ml file (and possibly a .mli file).

For example, the build script might contain:

module CG = Containers_codegen
let () =
  let module B = CG.Bitfield in
  let b = B.make ~name:"t" () in
  B.field_bit b "x";
  B.field_bit b "y";
  B.field_bit b "z";
  B.field_int b ~width:5 "foo";

  CG.emit_file "foo.mli" [B.gen_mli b];
  CG.emit_file "foo.ml" [B.gen_ml b];
  ()

and this will produce foo.ml and foo.mli with a bitfield containing x, y, and z.

Sourcemodule Fmt = CCFormat
Sourcetype code
Sourcemodule Code : sig ... end
Sourcemodule Bitfield : sig ... end
Sourceval emit_file : string -> code list -> unit

emit_file file cs emits code fragments cs into the given file at path file

Sourceval emit_chan : out_channel -> code list -> unit
Sourceval emit_string : code list -> string
OCaml

Innovation. Community. Security.

On This Page
  1. Code generators