123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051(** Very small tooling for format printers. *)includeFormattype'at=Format.formatter->'a->unitletlist=pp_print_listletarray?pp_sepffmtarr=list?pp_sepffmt(Array.to_listarr)letstr=pp_print_stringletsexpfmtsppx=fprintffmt"@[<3>(%s@ %a)@]"sppxletbytesfmtt=Format.fprintffmt"%S"(Bytes.to_stringt)letpairpp1pp2fmt(v1,v2)=pp1fmtv1;pp_print_spacefmt();pp2fmtv2;;lettriplepp1pp2pp3fmt(v1,v2,v3)=pp1fmtv1;pp_print_spacefmt();pp2fmtv2;pp_print_spacefmt();pp3fmtv3;;letoptffmtx=matchxwith|None->pp_print_stringfmt"<None>"|Somex->fprintffmt"%a"fx;;letint=pp_print_intletoptintfmt=function|None->()|Somei->fprintffmt"@ %d"i;;letcharfmtc=Format.fprintffmt"%c"cletbool=Format.pp_print_boolletlitsfmt()=pp_print_stringfmtsletto_to_stringppx=letb=Buffer.create16inletfmt=Format.formatter_of_bufferbinppfmtx;Buffer.contentsb;;letquoted_stringfmts=Format.fprintffmt"%S"s