@@@ man wip
[mLib] / test / tvec-tyimpl.3
diff --git a/test/tvec-tyimpl.3 b/test/tvec-tyimpl.3
new file mode 100644 (file)
index 0000000..0e3dce7
--- /dev/null
@@ -0,0 +1,103 @@
+.\" -*-nroff-*-
+.de VS
+.sp 1
+.RS
+.nf
+.ft B
+..
+.de VE
+.ft R
+.fi
+.RE
+.sp 1
+..
+.de hP
+.IP
+.ft B
+\h'-\w'\\$1\ 'u'\\$1\ \c
+.ft P
+..
+.ie t \{\
+.  ds o \(bu
+.  de VP
+.    sp .4v
+..
+\}
+.el \{\
+.  ds o o
+.  de VP
+.    sp
+..
+\}
+..
+.TH tvec-tyimpl 3 "11 March 2024" "Straylight/Edgeware" "mLib utilities library"
+.SH NAME
+tvec-tyimpl \- test vector framework type implementation
+.\" @tvec_syntax
+.\" @tvec_syntax_v
+.
+.\" @tvec_skipspc
+.\" @tvec_flushtoeol
+.\" @tvec_nexttoken
+.\" @tvec_readword
+.\" @tvec_readword_v
+.
+.SH SYNOPSIS
+.nf
+.B "#include <mLib/tvec.h>"
+.PP
+.B "struct tvec_state {"
+.B "   unsigned f;"
+.B "   const char *infile; unsigned lno, test_lno;"
+.B "   FILE *fp;"
+.B "   ..."
+.B "};"
+.PP
+.B "struct tvec_regty {"
+.ta 2n +\w'\fBvoid (*init)('u
+.BI "  void (*init)(union tvec_regval *" rv ,
+.BI "          const struct tvec_regdef *" rd );
+.ta 2n +\w'\fBvoid (*release)('u
+.BI "  void (*release)(union tvec_regval *" rv ,
+.BI "          const struct tvec_regdef *" rd );
+.ta 2n +\w'\fBint (*eq)('u
+.BI "  int (*eq)(const union tvec_regval *" rv0 ,
+.BI "          const union tvec_regval *" rv1 ,
+.BI "          const struct tvec_regdef *" rd );
+.ta 2n +\w'\fBint (*tobuf)('u
+.BI "  int (*tobuf)(buf *" b ", const union tvec_regval *" rv ,
+.BI "          const struct tvec_regdef *" rd );
+.ta 2n +\w'\fBint (*frombuf)('u
+.BI "  int (*frombuf)(buf *" b ", union tvec_regval *" rv ,
+.BI "          const struct tvec_regdef *" rd );
+.ta 2n +\w'\fBint (*parse)('u
+.BI "  int (*parse)(union tvec_regval *" rv ", const struct tvec_regdef *" rd ,
+.BI "          struct tvec_state *" tv );
+.ta 2n +\w'\fBvoid (*dump)('u
+.BI "  void (*dump)(const union tvec_regval *" rv ,
+.BI "          const struct tvec_regdef *" rd ,
+.BI "          unsigned " style ,
+.BI "          const struct gprintf_ops *" gops ", void *" go );
+.B "};"
+.B "#define TVSF_COMPACT ..."
+.PP
+.ta \w'\fBint tvec_syntax('u
+.BI "int tvec_syntax(struct tvec_state *" tv ", int " ch ,
+.BI "  const char *" expect ", ...);"
+.ta \w'\fBint tvec_syntax_v('u
+.BI "int tvec_syntax(struct tvec_state *" tv ", int " ch ,
+.BI "  const char *" expect ", va_list *" ap );
+.PP
+.B "#define TVFF_ALLOWANY ..."
+.B "void tvec_skipspc(struct tvec_state *" tv );
+.B "int tvec_flushtoeol(struct tvec_state *" tv );
+.B "int tvec_nexttoken(struct tvec_state *" tv );
+.ta \w'\fBint tvec_readword('u
+.BI "int tvec_readword(struct tvec_state *" tv ", dstr *" d ,
+.BI "  const char **" p_inout ", const char *" delims ,
+.BI "  const char *" expect ", ...);"
+.ta \w'\fBint tvec_readword_v('u
+.BI "int tvec_readword_v(struct tvec_state *" tv ", dstr *" d ,
+.BI "  const char **" p_inout ", const char *" delims ,
+.BI "  const char *" expect ", va_list *" ap );
+.fi