package wire
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=b1310eabd9a945b38b3b4dc62f91986fd9d54ee2a006a65c8dcf8c36a61563ba
sha512=60a73a9f045079223b812863aea92ac7d3bffdc17b878ff9940301a93fb2f0f86f9c1a17999fdcd9f6647e13d0f53aef958e8d59c1ca42f84645e8809b39f1ce
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.