summaryrefslogtreecommitdiff
path: root/src/include/skalibs/genwrite.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/skalibs/genwrite.h')
-rw-r--r--src/include/skalibs/genwrite.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/include/skalibs/genwrite.h b/src/include/skalibs/genwrite.h
new file mode 100644
index 0000000..9ae0fb9
--- /dev/null
+++ b/src/include/skalibs/genwrite.h
@@ -0,0 +1,35 @@
+/* ISC license. */
+
+#ifndef GENWRITE_H
+#define GENWRITE_H
+
+typedef int genwrite_put_func_t (void *, char const *, unsigned int) ;
+typedef genwrite_put_func_t *genwrite_put_func_t_ref ;
+
+typedef int genwrite_flush_func_t (void *) ;
+typedef genwrite_flush_func_t *genwrite_flush_func_t_ref ;
+
+typedef struct genwrite_s genwrite_t, *genwrite_t_ref ;
+struct genwrite_s
+{
+ genwrite_put_func_t_ref put ;
+ genwrite_flush_func_t_ref flush ;
+ void *target ;
+} ;
+#define GENWRITE_ZERO { .put = 0, .flush = 0, .target = 0 }
+
+extern genwrite_put_func_t genwrite_put_stralloc ;
+extern genwrite_flush_func_t genwrite_flush_stralloc ;
+extern genwrite_put_func_t genwrite_put_buffer ;
+extern genwrite_flush_func_t genwrite_flush_buffer ;
+extern genwrite_put_func_t genwrite_put_bufalloc ;
+extern genwrite_flush_func_t genwrite_flush_bufalloc ;
+
+#define GENWRITE_STRALLOC_INIT(sa) { .put = &genwrite_put_stralloc, .flush = &genwrite_flush_stralloc, .target = (sa) }
+#define GENWRITE_BUFFER_INIT(b) { .put = &genwrite_put_buffer, .flush = &genwrite_flush_buffer, .target = (b) }
+#define GENWRITE_BUFALLOC_INIT(ba) { .put = &genwrite_put_bufalloc, .flush = &genwrite_flush_bufalloc, .target = (ba) }
+
+extern genwrite_t genwrite_stdout ;
+extern genwrite_t genwrite_stderr ;
+
+#endif