Wire_diff_genSourceCode 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.
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/.
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.