void
(*flush)(struct os_stream *stream);
+
+ int
+ (*vprintf)(struct os_stream *stream, const char* format, va_list ap);
};
static INLINE void
os_stream_close(struct os_stream *stream)
{
+ if (!stream)
+ return;
+
stream->close(stream);
}
static INLINE boolean
os_stream_write(struct os_stream *stream, const void *data, size_t size)
{
+ if (!stream)
+ return FALSE;
return stream->write(stream, data, size);
}
+static INLINE boolean
+os_stream_write_str(struct os_stream *stream, const char *str)
+{
+ size_t size;
+ if (!stream)
+ return FALSE;
+ for(size = 0; str[size]; ++size)
+ ;
+ return stream->write(stream, str, size);
+}
+
+
static INLINE void
os_stream_flush(struct os_stream *stream)
{
stream->flush(stream);
}
+int
+os_default_stream_vprintf (struct os_stream* stream, const char *format, va_list ap);
+
+static INLINE int
+os_stream_vprintf (struct os_stream* stream, const char *format, va_list ap)
+{
+ return stream->vprintf(stream, format, ap);
+}
+
+static INLINE int
+os_stream_printf (struct os_stream* stream, const char *format, ...)
+{
+ int retval;
+ va_list args;
+
+ va_start (args, format);
+ retval = stream->vprintf(stream, format, args);
+ va_end (args);
+
+ return retval;
+}
struct os_stream *
os_file_stream_create(const char *filename);
os_null_stream_create(void);
+extern struct os_stream *
+os_log_stream;
+
+
+struct os_stream *
+os_str_stream_create(size_t initial_size);
+
+
+const char *
+os_str_stream_get(struct os_stream *stream);
+
+char *
+os_str_stream_get_and_close(struct os_stream *stream);
+
+
#if defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
#define os_file_stream_create(_filename) os_null_stream_create()
#endif
-
#endif /* _OS_STREAM_H_ */