]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/stream.h
Don't use wstring for MinGW versions that don't support it
[wxWidgets.git] / include / wx / stream.h
index 6d3da3c9146c6e7bc4bbbd9d42e7a4eb309317a9..24522440603e95ef2438a0b721d49cb1ff6cd7c0 100644 (file)
@@ -42,6 +42,8 @@ enum wxStreamError
     wxSTREAM_READ_ERROR         // generic read error
 };
 
+const int wxEOF = -1;
+
 // ============================================================================
 // base stream classes: wxInputStream and wxOutputStream
 // ============================================================================
@@ -106,11 +108,11 @@ public:
     // undefined), otherwise 1
     virtual char Peek();
 
-    // return one character from the stream, blocking until it appears if
+    // return one byte from the stream, blocking until it appears if
     // necessary
     //
-    // if EOF, return value is undefined and LastRead() will return 0 and not 1
-    char GetC();
+    // on success returns a value between 0 - 255, or wxEOF on EOF or error.
+    int GetC();
 
     // read at most the given number of bytes from the stream
     //
@@ -327,25 +329,21 @@ protected:
 
 enum wxStreamProtocolType
 {
-    wxSTREAM_PROTOCOL,      // wxFileSystem protocol (should be only one)
-    wxSTREAM_MIMETYPE,      // Mime types the stream handles
-    wxSTREAM_ENCODING,      // The http Content-Encodings the stream handles
-    wxSTREAM_FILEEXTENSION  // File extensions the stream handles
+    wxSTREAM_PROTOCOL,  // wxFileSystem protocol (should be only one)
+    wxSTREAM_MIMETYPE,  // MIME types the stream handles
+    wxSTREAM_ENCODING,  // The HTTP Content-Encodings the stream handles
+    wxSTREAM_FILEEXT    // File extensions the stream handles
 };
 
 void WXDLLIMPEXP_BASE wxUseFilterClasses();
 
-class WXDLLIMPEXP_BASE wxFilterClassFactory : public wxObject
+class WXDLLIMPEXP_BASE wxFilterClassFactoryBase : public wxObject
 {
 public:
-    virtual ~wxFilterClassFactory() { }
-
-    virtual wxFilterInputStream  *NewStream(wxInputStream& stream)  const = 0;
-    virtual wxFilterOutputStream *NewStream(wxOutputStream& stream) const = 0;
-    virtual wxFilterInputStream  *NewStream(wxInputStream *stream)  const = 0;
-    virtual wxFilterOutputStream *NewStream(wxOutputStream *stream) const = 0;
+    virtual ~wxFilterClassFactoryBase() { }
 
     wxString GetProtocol() const { return wxString(*GetProtocols()); }
+    wxString PopExtension(const wxString& location) const;
 
     virtual const wxChar * const *GetProtocols(wxStreamProtocolType type
                                                = wxSTREAM_PROTOCOL) const = 0;
@@ -354,6 +352,22 @@ public:
                    wxStreamProtocolType type
                    = wxSTREAM_PROTOCOL) const;
 
+protected:
+    wxString::size_type FindExtension(const wxChar *location) const;
+
+    DECLARE_ABSTRACT_CLASS(wxFilterClassFactoryBase)
+};
+
+class WXDLLIMPEXP_BASE wxFilterClassFactory : public wxFilterClassFactoryBase
+{
+public:
+    virtual ~wxFilterClassFactory() { }
+
+    virtual wxFilterInputStream  *NewStream(wxInputStream& stream)  const = 0;
+    virtual wxFilterOutputStream *NewStream(wxOutputStream& stream) const = 0;
+    virtual wxFilterInputStream  *NewStream(wxInputStream *stream)  const = 0;
+    virtual wxFilterOutputStream *NewStream(wxOutputStream *stream) const = 0;
+
     static const wxFilterClassFactory *Find(const wxChar *protocol,
                                             wxStreamProtocolType type
                                             = wxSTREAM_PROTOCOL);