diff --git a/src/common/streams.h b/src/common/streams.h
index 50136410f409e9e67c4d351efdd4684a2c052b3c..e0a9dd8178d79b25454f70356b5c047c8384040c 100644 (file)
--- a/src/common/streams.h
+++ b/src/common/streams.h
#include <stddef.h>
#include <stdint.h>
-typedef struct Reader Reader;
-typedef struct Writer Writer;
+typedef struct Stream Stream;
-struct Reader {
- void (*setpos)(Reader *r, int pos);
- void (*read)(Reader *r, void *data, size_t size, size_t n);
+struct Stream {
+ long (*getpos)(Stream *rw);
+ void (*setpos)(Stream *rw, long pos);
+ long (*getlen)(Stream *rw);
+ void (*read)(Stream *r, void *data, size_t size, size_t n);
+ void (*write)(Stream *w, const void *data, size_t size, size_t n);
};
-struct Writer {
- void (*setpos)(Writer *w, int pos);
- void (*write)(Writer *w, const void *data, size_t size, size_t n);
-};
+long stream_getpos (Stream *s);
+void stream_setpos (Stream *s, long pos);
+
+long stream_getlen (Stream *s);
-void stream_read (void *data, size_t size, size_t n, Reader *f);
-int8_t stream_read8 (Reader *f);
-int16_t stream_read16 (Reader *f);
-int32_t stream_read32 (Reader *f);
+void stream_read (void *data, size_t size, size_t n, Stream *r);
+int8_t stream_read8 (Stream *r);
+int16_t stream_read16 (Stream *r);
+int32_t stream_read32 (Stream *r);
-void stream_write (const void *data, size_t size, size_t n, Writer *w);
-void stream_write8 (int8_t x, Writer *w);
-void stream_write16 (int16_t x, Writer *w);
-void stream_write32 (int32_t x, Writer *w);
+void stream_write (const void *data, size_t size, size_t n, Stream *w);
+void stream_write8 (int8_t x, Stream *w);
+void stream_write16 (int16_t x, Stream *w);
+void stream_write32 (int32_t x, Stream *w);
#endif /* COMMON_STREAMS_H_INCLUDED */
\ No newline at end of file