@@@ man wip
[mLib] / test / tvec-output.3
diff --git a/test/tvec-output.3 b/test/tvec-output.3
new file mode 100644 (file)
index 0000000..1a0a036
--- /dev/null
@@ -0,0 +1,96 @@
+.\" -*-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-output 3 "11 March 2024" "Straylight/Edgeware" "mLib utilities library"
+.SH NAME
+tvec-output \- test vector framework output driver interface
+.\" @tvec_strlevel
+.
+.SH SYNOPSIS
+.nf
+.B "#include <mLib/tvec.h>"
+.PP
+.ta 2n
+.B "enum {"
+.B "   TVOUT_LOSE,"
+.B "   TVOUT_SKIP,"
+.B "   TVOUT_WIN,"
+.B "   TVOUT_XFAIL,"
+.B "   TVOUT_LIMIT"
+.B "};"
+.PP
+.B "struct tvec_state {"
+.B "   unsigned f;"
+.B "   const struct tvec_test *test;"
+.B "   unsigned curr[TVOUT_LIMIT], all[TVOUT_LIMIT], grps[TVOUT_LIMIT];"
+.B "   ..."
+.B "};"
+.B "#define TVSF_ERROR ..."
+.PP
+.B "struct tvec_output {"
+.B "   const struct tvec_outops *ops;"
+.B "};"
+.B "struct tvec_outops {"
+.BI "  void (*" bsession ")(struct tvec_output *" o ", struct tvec_state *" tv );
+.BI "  int (*" esession ")(struct tvec_output *" o );
+.BI "  void (*" bgroup ")(struct tvec_output *" o );
+.ta 2n +\w'\fBvoid (*\,\fIskipgroup\/\fB)('u
+.BI "  void (*" skipgroup ")(struct tvec_output *" o ,
+.BI "          const char *" excuse ", void *" ap );
+.BI "  void (*" egroup ")(struct tvec_output *" o );
+.BI "  void (*" btest ")(struct tvec_output *" o );
+.ta 2n +\w'\fBvoid (*\,\fIskip\/\fB)('u
+.BI "  void (*" skip ")(struct tvec_output *" o ,
+.BI "          const char *" excuse ", void *" ap );
+.ta 2n +\w'\fBvoid (*\,\fIfail\/\fB)('u
+.BI "  void (*" fail ")(struct tvec_output *" o ,
+.BI "          const char *" fail ", void *" ap );
+.ta 2n +\w'\fBvoid (*\,\fIdumpreg\/\fB)('u
+.BI "  void (*" dumpreg ")(struct tvec_output *" o ,
+.BI "          unsigned " disp ", const union tvec_regval *" rv ,
+.BI "          const struct tvec_regdef *" rd );
+.BI "  void (*" etest ")(struct tvec_output *" o ", unsigned " outcome );
+.ta 2n +\w'\fBvoid (*\,\fIbbench\/\fB)('u
+.BI "  void (*" bbench ")(struct tvec_output *" o ,
+.BI "          const char *" ident ", unsigned " unit );
+.ta 2n +\w'\fBvoid (*\,\fIebench\/\fB)('u
+.BI "  void (*" ebench ")(struct tvec_output *" o ,
+.BI "          const char *" ident ", unsigned " unit ,
+.BI "          const struct bench_timing *" tm );
+.ta 2n +\w'\fBvoid (*\,\fIreport\/\fB)('u
+.BI "  void (*" report ")(struct tvec_output *" o ", unsigned " level ,
+.BI "          const char *" msg ", va_list *" ap );
+.BI "  void (*" level ")(struct tvec_output *" o );
+.B "};"
+.PP
+.B "const char *tvec_strlevel(unsigned " level );
+.fi