package wire
Install
dune-project
Dependency
Authors
Maintainers
Sources
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:"." 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.