package wire
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=323f48e6cb897fe48aac558b09bb25134d3b19fec37b20d7930eec15f387c238
sha512=00c77f8672396ab15d993602db9bab95d2478ace1f569606f0140ed25d7ff852525e53436d95e5061442a6ea8b5650549239c68ef861b4b921b4a53faac97eb7
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 (gen_c.ml):
let run ~struct_ ~module_ =
let schemas =
[ Wire_diff_gen.schema ~name:"MyFrame" ~struct_ ~module_ |> Option.get ]
in
Wire_diff_gen.generate ~schema_dir:"schemas" ~outdir:"." schemasSame as Wire.Everparse.t.
val schema :
name:string ->
struct_:Wire.Everparse.Raw.struct_ ->
module_:Wire.Everparse.Raw.module_ ->
schema optionschema ~name ~struct_ ~module_ creates a schema if the struct has a known fixed wire size. Returns None for variable-length structs.
Full Pipeline
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
Delegates to Wire_3d.generate_3d.
Delegates to Wire_3d.run_everparse.
generate_c_stubs ~schema_dir ~outdir schemas generates stubs.c with OCaml C stubs using Wire_3d.everparse_name.
generate_ml_stubs ~outdir schemas generates stubs.ml with OCaml externals.