12345678910111213141516171819202122232425262728293031(** Plugin architecture.
OCaml-protoc generates code based on a number of plugins,
each of which can contribute code to the output files (.ml and .mli).
*)typecodegen_f=?and_:unit->Pb_codegen_ocaml_type.type_->Pb_codegen_formatting.scope->bool(** A code generation function *)moduletypeS=sigvalgen_sig:codegen_f(** Generate a signature file (.mli) *)valgen_struct:codegen_f(** Generate the implementation (.ml) *)valocamldoc_title:string(** OCamldoc title *)valrequires_mutable_records:bool(** Does this record depend on mutable records being defined? *)endtypet=(moduleS)(** A plugin is a code-generator respecting the signature {!S}. *)letrequires_mutable_records(moduleP:S)=P.requires_mutable_records