X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/db0e70a131f1a3a28cc78cface5b5db87b0d5416..4729aa69dab96d801f2767be4b254997c21d1d32:/codec/codec.3 diff --git a/codec/codec.3 b/codec/codec.3 index fd797c5..ee5a447 100644 --- a/codec/codec.3 +++ b/codec/codec.3 @@ -18,6 +18,43 @@ codec \- binary encoding and decoding .B "#include " .B "#include " +.B "#define CDCF_LOWERC ..." +.B "#define CDCF_IGNCASE ..." +.B "#define CDCF_NOEQPAD ..." +.B "#define CDCF_IGNEQPAD ..." +.B "#define CDCF_IGNEQMID ..." +.B "#define CDCF_IGNZPAD ..." +.B "#define CDCF_IGNNEWL ..." +.B "#define CDCF_IGNINVCH ..." +.B "#define CDCF_IGNSPC ..." +.B "#define CDCF_IGNJUNK ..." + +.B "enum {" +.B "\h'4n'CDCERR_OK = ...," +.B "\h'4n'CDCERR_INVCH = ...," +.B "\h'4n'CDCERR_INVEQPAD = ...," +.B "\h'4n'CDCERR_INVZPAD = ..." +.B "};" + +.B "typedef struct {" +.B "\h'4n'const char *name;" +.ds mT \fBcodec *(*encoder)( +.BI "\h'4n'\*(mTunsigned " flags , +.BI "\h'4n+\w'\*(mT'u'const char *" indent ", unsigned " maxlen ); +.BI "\h'4n'codec *(*decoder)(unsigned " flags ); +.B "\h'4n'...\&" +.B "} codec_class;" + +.B "typedef struct {" +.B "\h'4n'const codec_ops *ops;" +.B "} codec;" + +.B "typedef struct {" +.B "\h'4n'const codec_class *c;" +.BI "\h'4n'int (*code)(codec *" c ", const void *" p ", size_t " sz ", dstr *" d ); +.BI "\h'4n'void (*destroy)(codec *" c ); +.B "} codec_ops;" + .B "codec_class null_codec_class;" .B "codec_class base64_class, file64_class, base64url_class;" .B "codec_class base32_class, base32hex_class;"