Usually, you shouldn't need those and you should be well served by the above printers.
To bootstrap usage of the generic printers, you'll need to provide a pp_property argument --- that takes a property as a pair of name/value strings and print them on a generic output --- and then proceed composing generic printers together.
val pp_package_gen :
pp_property:('out->(string * string)-> unit)->'out->Cudf.package->
unit
val pp_request_gen :
pp_property:('out->(string * string)-> unit)->'out->Cudf.request->
unit
val pp_preamble_gen :
pp_property:('out->(string * string)-> unit)->'out->Cudf.preamble->
unit
val pp_universe_gen :
pp_package:('out->Cudf.package-> unit)->pp_sep:('out-> unit)->'out->Cudf.universe->
unit
val pp_packages_gen :
pp_package:('out->Cudf.package-> unit)->pp_sep:('out-> unit)->'out->Cudf.package list->
unit