diff options
Diffstat (limited to 'snprintfv/stream.in')
-rw-r--r-- | snprintfv/stream.in | 96 |
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 */ |