summaryrefslogtreecommitdiff
path: root/snprintfv/stream.in
diff options
context:
space:
mode:
Diffstat (limited to 'snprintfv/stream.in')
-rw-r--r--snprintfv/stream.in96
1 files changed, 96 insertions, 0 deletions
diff --git a/snprintfv/stream.in b/snprintfv/stream.in
new file mode 100644
index 0000000..fbcf431
--- /dev/null
+++ b/snprintfv/stream.in
@@ -0,0 +1,96 @@
+/* -*- Mode: C -*- */
+
+/* stream.h --- customizable stream routines
+ * Copyright (C) 1998, 1999, 2000, 2002 Gary V. Vaughan
+ * Originally by Gary V. Vaughan, 1998
+ * This file is part of Snprintfv
+ *
+ * Snprintfv is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * Snprintfv program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * As a special exception to the GNU General Public License, if you
+ * distribute this file as part of a program that also links with and
+ * uses the libopts library from AutoGen, you may include it under
+ * the same distribution terms used by the libopts library.
+ */
+
+/* Code: */
+
+#ifndef STREAM_H
+#define STREAM_H 1
+
+#define STREAM_READABLE (1 << 0)
+#define STREAM_WRITABLE (1 << 1)
+
+/**
+ * SNV_UNLIMITED:
+ * Used to denote that there is no upper limit to the number of characters
+ * that can safely be written to a stream.
+ **/
+#define SNV_UNLIMITED (~0UL)
+
+#ifdef __cplusplus
+extern "C"
+{
+#if 0
+/* This brace is so that emacs can still indent properly: */ }
+#endif
+#endif /* __cplusplus */
+
+/**
+ * STREAM:
+ * Data type used to pass details of streams between functions,
+ * much like stdio's %FILE, but more flexible. A %STREAM can be uni- or
+ * bi-directional depending on how it is initialised.
+ **/
+typedef struct stream STREAM;
+
+/**
+ * StreamPut:
+ * @ch: The character to write to @stream cast to an int.
+ * @stream: The stream being written to.
+ *
+ * Type of the function to put a character in a writeable stream.
+ *
+ * Return value:
+ * The function should return the character written to the
+ * stream, cast to an int if it was written successfully, or
+ * else %EOF, if the write failed.
+ **/
+typedef int (*StreamPut) (int ch, STREAM * stream);
+
+/**
+ * StreamGet:
+ * @stream: The stream being read from.
+ *
+ * Type of the function to get a character from a readable stream.
+ *
+ * Return value:
+ * The function should return the character read from the
+ * stream, cast to an int if it was read successfully, or
+ * else %EOF, if the read failed.
+ **/
+typedef int (*StreamGet) (STREAM * stream);
+
+
+@protos stream.c
+#ifdef __cplusplus
+#if 0
+/* This brace is so that emacs can still indent properly: */
+{
+#endif
+}
+#endif /* __cplusplus */
+
+#endif /* STREAM_H */