X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/84b46c356ebc657a292ebe616eb51c821772da8f..232806507ba60bd768605f0d7e8ae8e27dc17e8b:/include/wx/stream.h diff --git a/include/wx/stream.h b/include/wx/stream.h index df2cf2efe0..508ca1a258 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,16 +110,23 @@ class WXDLLEXPORT wxStreamBuffer { wxStreamBase *m_stream; BufMode m_mode; - bool m_destroybuf; + bool m_destroybuf, m_destroystream; }; // --------------------------------------------------------------------------- // 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 + typedef enum { - wxStream_NOERROR, - wxStream_EOF + wxStream_NOERROR = 0, + wxStream_EOF, + wxStream_WRITE_ERR, + wxStream_READ_ERR } wxStreamError; class WXDLLEXPORT wxStreamBase { @@ -140,8 +159,9 @@ 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); + wxString ReadLine(); // Position functions off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart); @@ -155,19 +175,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,8 +200,9 @@ 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); + void WriteLine(const wxString& line); off_t SeekO(off_t pos, wxSeekMode mode = wxFromStart); off_t TellO() const; @@ -196,19 +216,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 +268,7 @@ class WXDLLEXPORT wxFilterOutputStream: public wxOutputStream { }; #endif + // wxUSE_STREAMS + +#endif + // _WX_WXSTREAM_H__