]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/stream.h
additions for wxFileDataObject from Ricky Gonzales <gonzales@pyramid3.net>
[wxWidgets.git] / include / wx / stream.h
index 7e0045323c31fefdc93e81175751456ec8b0581a..efef1ec113bfa67380b93ba8659b10ef9af0e248 100644 (file)
@@ -38,10 +38,10 @@ WXDLLEXPORT wxOutputStream& wxEndL(wxOutputStream& o_stream);
 // wxStream: base classes
 // ---------------------------------------------------------------------------
 
-#define wxStream_NOERROR    wxSTR_NOERROR
-#define wxStream_EOF        wxSTR_EOF
-#define wxStream_WRITE_ERR  wxSTR_WRITE_ERROR
-#define wxStream_READ_ERR   wxSTR_READ_ERROR
+#define wxStream_NOERROR    wxSTREAM_NOERROR
+#define wxStream_EOF        wxSTREAM_EOF
+#define wxStream_WRITE_ERR  wxSTREAM_WRITE_ERROR
+#define wxStream_READ_ERR   wxSTREAM_READ_ERROR
   
 typedef enum {
   wxStream_NOERROR = 0,
@@ -55,8 +55,10 @@ class WXDLLEXPORT wxStreamBase {
   wxStreamBase();
   virtual ~wxStreamBase();
 
+  bool operator!() const { return (LastError() != wxSTREAM_NOERROR); }
   wxStreamError LastError() const { return m_lasterror; }
-  virtual size_t StreamSize() const { return ~((size_t)0); }
+  virtual size_t GetSize() const { return ~((size_t)0); }
+  size_t StreamSize() const { return GetSize(); }
 
  protected:
 
@@ -91,7 +93,7 @@ class WXDLLEXPORT wxInputStream: public wxStreamBase {
   virtual size_t LastRead() { return wxStreamBase::m_lastcount; }
 
   // Ungetch
-  size_t Ungetch(void *buffer, size_t size);
+  size_t Ungetch(const void *buffer, size_t size);
   bool Ungetch(char c);
 
   // Operators
@@ -134,6 +136,28 @@ class WXDLLEXPORT wxOutputStream: public wxStreamBase {
   wxOutputStream& operator<<( __wxOutputManip func) { return func(*this); }
 };
 
+// ---------------------------------------------------------------------------
+// A stream for measuring streamed output
+// ---------------------------------------------------------------------------
+
+class wxCountingOutputStream: public wxOutputStream {
+ public:
+  wxCountingOutputStream();
+
+  size_t GetSize() const;
+  bool Ok() const { return TRUE; }
+
+ protected:
+
+  size_t OnSysWrite(const void *buffer, size_t size);
+  off_t OnSysSeek(off_t pos, wxSeekMode mode);
+  off_t OnSysTell() const;
+
+ protected:
+  size_t m_currentPos;
+};
+
+
 // ---------------------------------------------------------------------------
 // "Filter" streams
 // ---------------------------------------------------------------------------
@@ -146,8 +170,7 @@ class WXDLLEXPORT wxFilterInputStream: public wxInputStream {
 
   char Peek() { return m_parent_i_stream->Peek(); }
 
-  wxStreamError LastError() const { return m_parent_i_stream->LastError(); }
-  size_t StreamSize() const { return m_parent_i_stream->StreamSize(); }
+  size_t GetSize() const { return m_parent_i_stream->GetSize(); }
 
  protected:
   wxInputStream *m_parent_i_stream;
@@ -159,8 +182,7 @@ class WXDLLEXPORT wxFilterOutputStream: public wxOutputStream {
   wxFilterOutputStream(wxOutputStream& stream);
   ~wxFilterOutputStream();
 
-  wxStreamError LastError() const { return m_parent_o_stream->LastError(); }
-  size_t StreamSize() const { return m_parent_o_stream->StreamSize(); }
+  size_t GetSize() const { return m_parent_o_stream->GetSize(); }
 
  protected:
   wxOutputStream *m_parent_o_stream;
@@ -192,6 +214,7 @@ class WXDLLEXPORT wxStreamBuffer {
   size_t Write(const void *buffer, size_t size);
   size_t Write(wxStreamBuffer *buf);
 
+  char Peek();
   char GetChar();
   void PutChar(char c);
   off_t Tell() const;
@@ -249,6 +272,7 @@ class wxBufferedInputStream: public wxFilterInputStream {
   wxBufferedInputStream(wxInputStream& stream);
   ~wxBufferedInputStream();
 
+  char Peek();
   wxInputStream& Read(void *buffer, size_t size);
   
   // Position functions