chiark / gitweb /
@@@ wip type definitions in manpage synopses
[mLib] / codec / codec.3
index fd797c598c42c7eb503cbad73711a6780d427726..ee5a447651b83549e6b50c088dd4f0df425d1cef 100644 (file)
@@ -18,6 +18,43 @@ codec \- binary encoding and decoding
 .B "#include <mLib/base32.h>"
 .B "#include <mLib/hex.h>"
 
+.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;"