package wire

  1. Overview
  2. Docs
Binary wire format DSL with EverParse 3D output

Install

dune-project
 Dependency

Authors

Maintainers

Sources

wire-0.9.0.tbz
sha256=dfd1fd578e84bd652ddb0064b3ee87d47780cc62e24180f3e5a92413bafad87a
sha512=125ada27127533b6130885d7b62f31c7ad4fc355a236258326b85c12792031c95d84fe68751264402f2efa7e09d70dd8bb5d06660e9a416e71a9a140f9658ed1

doc/wire.diff-gen/Wire_diff_gen/index.html

Module Wire_diff_genSource

Code generation for EverParse differential testing.

Generates .3d files from Wire schemas, invokes EverParse, and produces C stubs, OCaml externals, and a test runner for comparing OCaml codecs against EverParse-generated C parsers.

Typical usage:

(* In gen_c.ml *)
let schemas =
  [
    Diff_gen.schema ~name:"MyFrame" ~struct_:My_3d.frame_struct
      ~module_:My_3d.frame_module
    |> Option.get;
  ]

let () = Diff_gen.generate ~outdir:"schemas" ~outdir:"." schemas
Sourceval schema : name:string -> struct_:Wire.Everparse.Raw.struct_ -> module_:Wire.Everparse.Raw.module_ -> schema option

schema ~name ~struct_ ~module_ creates a schema if the struct has a known fixed wire size. Returns None for variable-length structs.

Full Pipeline

Sourceval generate : schema_dir:string -> outdir:string -> ?num_values:int -> schema list -> unit

generate ~schema_dir ~outdir schemas runs the full pipeline: 1. Generate .3d files in schema_dir 2. Invoke EverParse to produce C parsers 3. Generate stubs.c, stubs.ml, diff_test.ml in outdir

Requires EverParse installed at ~/.local/everparse/.

Individual Steps

Sourceval generate_3d_files : outdir:string -> schema list -> unit

Delegates to Wire_3d.generate_3d.

Sourceval run_everparse : ?quiet:bool -> outdir:string -> schema list -> unit

Delegates to Wire_3d.run_everparse.

Sourceval generate_c_stubs : schema_dir:string -> outdir:string -> schema list -> unit

generate_c_stubs ~schema_dir ~outdir schemas generates stubs.c with OCaml C stubs using Wire_3d.everparse_name.

Sourceval generate_ml_stubs : outdir:string -> schema list -> unit

generate_ml_stubs ~outdir schemas generates stubs.ml with OCaml externals.

Sourceval generate_test_runner : outdir:string -> ?num_values:int -> schema list -> unit

generate_test_runner ~outdir schemas generates diff_test.ml test runner.