123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113(* Binable: signatures defining generated functions for the binary protocol.
[S, S1, etc] are the signatures satisfied by the generated code and
[Minimal.S, Minimal.S1, etc] are the signatures that generated code uses. *)(* the subset of S containing only functions, so that one can recursively define modules
implementing this interface *)moduletypeS_only_functions=sigtypetvalbin_size_t:tSize.sizervalbin_write_t:tWrite.writervalbin_read_t:tRead.reader(**
This function only needs implementation if [t] exposed to be a polymorphic variant.
Despite what the type reads, this does *not* produce a function after reading;
instead it takes the constructor tag (int) before reading and reads the rest of the
variant [t] afterwards.
*)val__bin_read_t__:(int->t)Read.readerendmoduletypeS=sigtypetincludeS_only_functionswithtypet:=tvalbin_shape_t:Shape.tvalbin_writer_t:tType_class.writervalbin_reader_t:tType_class.readervalbin_t:tType_class.tendmoduletypeS1=sigtype'atvalbin_shape_t:Shape.t->Shape.tvalbin_size_t:('a,'at)Size.sizer1valbin_write_t:('a,'at)Write.writer1valbin_read_t:('a,'at)Read.reader1val__bin_read_t__:('a,int->'at)Read.reader1valbin_writer_t:('a,'at)Type_class.S1.writervalbin_reader_t:('a,'at)Type_class.S1.readervalbin_t:('a,'at)Type_class.S1.tendmoduletypeS2=sigtype('a,'b)tvalbin_shape_t:Shape.t->Shape.t->Shape.tvalbin_size_t:('a,'b,('a,'b)t)Size.sizer2valbin_write_t:('a,'b,('a,'b)t)Write.writer2valbin_read_t:('a,'b,('a,'b)t)Read.reader2val__bin_read_t__:('a,'b,int->('a,'b)t)Read.reader2valbin_writer_t:('a,'b,('a,'b)t)Type_class.S2.writervalbin_reader_t:('a,'b,('a,'b)t)Type_class.S2.readervalbin_t:('a,'b,('a,'b)t)Type_class.S2.tendmoduletypeS3=sigtype('a,'b,'c)tvalbin_shape_t:Shape.t->Shape.t->Shape.t->Shape.tvalbin_size_t:('a,'b,'c,('a,'b,'c)t)Size.sizer3valbin_write_t:('a,'b,'c,('a,'b,'c)t)Write.writer3valbin_read_t:('a,'b,'c,('a,'b,'c)t)Read.reader3val__bin_read_t__:('a,'b,'c,int->('a,'b,'c)t)Read.reader3valbin_writer_t:('a,'b,'c,('a,'b,'c)t)Type_class.S3.writervalbin_reader_t:('a,'b,'c,('a,'b,'c)t)Type_class.S3.readervalbin_t:('a,'b,'c,('a,'b,'c)t)Type_class.S3.tendmoduleMinimal=structmoduletypeS=sigtypetvalbin_shape_t:Shape.tvalbin_size_t:tSize.sizervalbin_write_t:tWrite.writervalbin_read_t:tRead.readerval__bin_read_t__:(int->t)Read.readerendmoduletypeS1=sigtype'atvalbin_shape_t:Shape.t->Shape.tvalbin_size_t:('a,'at)Size.sizer1valbin_write_t:('a,'at)Write.writer1valbin_read_t:('a,'at)Read.reader1val__bin_read_t__:('a,int->'at)Read.reader1endmoduletypeS2=sigtype('a,'b)tvalbin_shape_t:Shape.t->Shape.t->Shape.tvalbin_size_t:('a,'b,('a,'b)t)Size.sizer2valbin_write_t:('a,'b,('a,'b)t)Write.writer2valbin_read_t:('a,'b,('a,'b)t)Read.reader2val__bin_read_t__:('a,'b,int->('a,'b)t)Read.reader2endmoduletypeS3=sigtype('a,'b,'c)tvalbin_shape_t:Shape.t->Shape.t->Shape.t->Shape.tvalbin_size_t:('a,'b,'c,('a,'b,'c)t)Size.sizer3valbin_write_t:('a,'b,'c,('a,'b,'c)t)Write.writer3valbin_read_t:('a,'b,'c,('a,'b,'c)t)Read.reader3val__bin_read_t__:('a,'b,'c,int->('a,'b,'c)t)Read.reader3endend