X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/84b46c356ebc657a292ebe616eb51c821772da8f..9f3a38fcd5f464e46bf842ddc13d7f85f8773c57:/include/wx/stream.h diff --git a/include/wx/stream.h b/include/wx/stream.h index df2cf2efe0..0b572026ed 100644 --- a/include/wx/stream.h +++ b/include/wx/stream.h @@ -16,6 +16,10 @@ #pragma interface #endif +#include "wx/defs.h" + +#if wxUSE_STREAMS + #include #include "wx/object.h" #include "wx/string.h" @@ -28,7 +32,7 @@ class WXDLLEXPORT wxOutputStream; typedef wxInputStream& (*__wxInputManip)(wxInputStream&); typedef wxOutputStream& (*__wxOutputManip)(wxOutputStream&); -wxOutputStream& WXDLLEXPORT wxEndL(wxOutputStream& o_stream); +WXDLLEXPORT wxOutputStream& wxEndL(wxOutputStream& o_stream); // --------------------------------------------------------------------------- // Stream buffer @@ -37,7 +41,7 @@ wxOutputStream& WXDLLEXPORT wxEndL(wxOutputStream& o_stream); class WXDLLEXPORT wxStreamBuffer { public: typedef enum { - read, write, read_write + read = 0, write, read_write } BufMode; // ----------- @@ -51,9 +55,12 @@ class WXDLLEXPORT wxStreamBuffer { // ----------- // Filtered IO // ----------- - void Read(void *buffer, size_t size); - void Write(const void *buffer, size_t size); - bool WriteBack(const char *buffer, size_t size); + size_t Read(void *buffer, size_t size); + size_t Read(wxStreamBuffer *buf); + size_t Write(const void *buffer, size_t size); + size_t Write(wxStreamBuffer *buf); + + size_t WriteBack(const char *buffer, size_t size); bool WriteBack(char c); char GetChar(); void PutChar(char c); @@ -78,7 +85,12 @@ class WXDLLEXPORT wxStreamBuffer { bool FlushBuffer(); bool FillBuffer(); - size_t GetDataLeft() const; + size_t GetDataLeft(); + + // -------------- + // Administration + // -------------- + wxStreamBase *Stream() { return m_stream; } protected: char *AllocSpaceWBack(size_t needed_size); @@ -98,7 +110,7 @@ class WXDLLEXPORT wxStreamBuffer { wxStreamBase *m_stream; BufMode m_mode; - bool m_destroybuf; + bool m_destroybuf, m_destroystream; }; // --------------------------------------------------------------------------- @@ -106,8 +118,10 @@ class WXDLLEXPORT wxStreamBuffer { // --------------------------------------------------------------------------- typedef enum { - wxStream_NOERROR, - wxStream_EOF + wxStream_NOERROR = 0, + wxStream_EOF, + wxStream_WRITE_ERR, + wxStream_READ_ERR } wxStreamError; class WXDLLEXPORT wxStreamBase { @@ -140,7 +154,7 @@ class WXDLLEXPORT wxInputStream: public wxStreamBase { // IO functions virtual char Peek(); char GetC(); - wxInputStream& Read(void *buffer, size_t size); + virtual wxInputStream& Read(void *buffer, size_t size); wxInputStream& Read(wxOutputStream& stream_out); // Position functions @@ -155,19 +169,18 @@ class WXDLLEXPORT wxInputStream: public wxStreamBase { wxInputStream& operator>>(wxOutputStream& out) { return Read(out); } wxInputStream& operator>>(wxString& line); wxInputStream& operator>>(char& c); - wxInputStream& operator>>(short& i); - wxInputStream& operator>>(int& i); - wxInputStream& operator>>(long& i); + wxInputStream& operator>>(signed short& i); + wxInputStream& operator>>(signed int& i); + wxInputStream& operator>>(signed long& i); + wxInputStream& operator>>(unsigned char& c); + wxInputStream& operator>>(unsigned short& i); + wxInputStream& operator>>(unsigned int& i); + wxInputStream& operator>>(unsigned long& i); wxInputStream& operator>>(double& i); + wxInputStream& operator>>(float& f) { double d; operator>>((double&)d); f = (float)d; return *this; } #if wxUSE_SERIAL wxInputStream& operator>>(wxObject *& obj); #endif - - wxInputStream& operator>>(float& f) { double d; operator>>((double&)d); f = (float)d; return *this; } - wxInputStream& operator>>(unsigned char& c) { return operator>>((char&)c); } - wxInputStream& operator>>(unsigned short& i) { return operator>>((short&)i); } - wxInputStream& operator>>(unsigned int& i) { return operator>>((int&)i); } - wxInputStream& operator>>(unsigned long& i) { return operator>>((long&)i); } wxInputStream& operator>>( __wxInputManip func) { return func(*this); } protected: @@ -181,7 +194,7 @@ class WXDLLEXPORT wxOutputStream: public wxStreamBase { wxOutputStream(wxStreamBuffer *sbuf); virtual ~wxOutputStream(); - wxOutputStream& Write(const void *buffer, size_t size); + virtual wxOutputStream& Write(const void *buffer, size_t size); wxOutputStream& Write(wxInputStream& stream_in); off_t SeekO(off_t pos, wxSeekMode mode = wxFromStart); @@ -196,19 +209,18 @@ class WXDLLEXPORT wxOutputStream: public wxStreamBase { wxOutputStream& operator<<(const char *string); wxOutputStream& operator<<(wxString& string); wxOutputStream& operator<<(char c); - wxOutputStream& operator<<(short i); - wxOutputStream& operator<<(int i); - wxOutputStream& operator<<(long i); + wxOutputStream& operator<<(signed short i); + wxOutputStream& operator<<(signed int i); + wxOutputStream& operator<<(signed long i); + wxOutputStream& operator<<(unsigned char c); + wxOutputStream& operator<<(unsigned short i); + wxOutputStream& operator<<(unsigned int i); + wxOutputStream& operator<<(unsigned long i); wxOutputStream& operator<<(double f); + wxOutputStream& operator<<(float f) { return operator<<((double)f); } #if wxUSE_SERIAL wxOutputStream& operator<<(wxObject& obj); #endif - - wxOutputStream& operator<<(float f) { return operator<<((double)f); } - wxOutputStream& operator<<(unsigned char c) { return operator<<((char)c); } - wxOutputStream& operator<<(unsigned short i) { return operator<<((short)i); } - wxOutputStream& operator<<(unsigned int i) { return operator<<((int)i); } - wxOutputStream& operator<<(unsigned long i) { return operator<<((long)i); } wxOutputStream& operator<<( __wxOutputManip func) { return func(*this); } protected: @@ -249,3 +261,7 @@ class WXDLLEXPORT wxFilterOutputStream: public wxOutputStream { }; #endif + // wxUSE_STREAMS + +#endif + // _WX_WXSTREAM_H__