util: Include missing header in u_draw.h.
[mesa.git] / src / gallium / auxiliary / os / os_stream.h
index 8232b0f1586bc8556cbb1442a0f9a055dad4721f..6c6050bb0284d5ae159c1f141a73f058697ab7c5 100644 (file)
@@ -50,12 +50,18 @@ struct os_stream
 
    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);
 }
 
@@ -63,16 +69,51 @@ os_stream_close(struct os_stream *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);
@@ -82,9 +123,23 @@ struct os_stream *
 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_ */