X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=src%2Fstream.h;h=578b1403ba8e3a68edd2dfb3ddec7c9b23ce32a7;hb=53fe9495a46d16106fa91cfa589e312e882428dd;hp=fb7eb8f7bc53814a376d897318bfa044315924b1;hpb=199d247c0c2155c1c8fca97fcc6087efdd29e482;p=rodin%2Fchimara.git diff --git a/src/stream.h b/src/stream.h index fb7eb8f..578b140 100644 --- a/src/stream.h +++ b/src/stream.h @@ -9,27 +9,42 @@ enum StreamType { STREAM_TYPE_WINDOW, STREAM_TYPE_MEMORY, - STREAM_TYPE_FILE, - STREAM_TYPE_UNICODE_MEMORY, - STREAM_TYPE_UNICODE_FILE, + STREAM_TYPE_FILE }; +/** + * glk_stream_struct: + * + * This is an opaque structure (see + * Opaque Structures and should not be accessed directly. + */ struct glk_stream_struct { + /*< private >*/ + glui32 magic, rock; + /* Pointer to the list node in the global stream list that contains this + stream */ GList* stream_list; - - glui32 rock; + /* Stream parameters */ glui32 file_mode; glui32 read_count; glui32 write_count; - enum StreamType stream_type; + enum StreamType type; + /* Specific to window stream: the window this stream is connected to */ winid_t window; - gchar *memory_buffer; - glui32 *memory_buffer_unicode; - glui32 buffer_len; + /* For memory and file streams */ + gboolean unicode; + /* Specific to memory streams */ + gchar *buffer; + glui32 *ubuffer; + glui32 mark; + glui32 buflen; + /* Specific to file streams */ + FILE *file_pointer; + gboolean binary; + gchar *filename; /* Displayable filename in UTF-8 for error handling */ }; - -strid_t window_stream_new(winid_t window); - +G_GNUC_INTERNAL strid_t window_stream_new(winid_t window); +G_GNUC_INTERNAL void stream_close_common(strid_t str, stream_result_t *result); #endif