]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/uri.h
fixed Cygwin compilation (there's no _get_osfhandle)
[wxWidgets.git] / include / wx / uri.h
index 706e5010cf6abc94380eca4c33e09ab587e7d81d..a2a1ac498dadd445311cf6cf5f08efcf021b39e2 100644 (file)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        uri.h
-// Purpose:     wxURI - Class for parsing/validating URIs 
+// Purpose:     wxURI - Class for parsing URIs 
 // Author:      Ryan Norton
 // Modified By: 
 // Created:     07/01/2004
@@ -8,10 +8,10 @@
 // Licence:     wxWindows
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef _WX_URIH__
-#define _WX_URIH__
+#ifndef _WX_URI_H_
+#define _WX_URI_H_
 
-#if defined(__GNUG__) && !defined(__APPLE__)
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma interface "uri.h"
 #endif
 
 #include "wx/object.h"
 #include "wx/string.h"
 
-// Host Type that the server can be
-typedef enum 
+// Host Type that the server component can be
+enum wxURIHostType
 {
-    wxURI_REGNAME,             
-    wxURI_IPV4ADDRESS, 
-    wxURI_IPV6ADDRESS,  
-    wxURI_IPVFUTURE            
-} wxURIHostType;
+    wxURI_REGNAME,             // Host is a normal register name (www.mysite.com etc.)
+    wxURI_IPV4ADDRESS, // Host is a version 4 ip address (192.168.1.100)
+    wxURI_IPV6ADDRESS,  // Host is a version 6 ip address [aa:aa:aa:aa::aa:aa]:5050
+    wxURI_IPVFUTURE            // Host is a future ip address (wxURI is unsure what kind)
+};
 
 // Component Flags
-typedef enum
+enum wxURIFieldType
 {
     wxURI_SCHEME = 1,
     wxURI_USER = 2,
@@ -38,51 +38,62 @@ typedef enum
     wxURI_PATH = 16,
     wxURI_QUERY = 32,
     wxURI_FRAGMENT = 64
-} wxURIFieldType;
+};
+
+// Miscellaneous other flags
+enum wxURIFlags
+{
+    wxURI_STRICT = 1
+};
+
 
 // Generic class for parsing URIs.
 //
 // Originally based off of RFC 2396 - then
 // extended to meet the newer RFC 2396.bis
 // specifications.
-class wxURI : public wxObject
+class WXDLLIMPEXP_BASE wxURI : public wxObject
 {
 public:
     wxURI();
     wxURI(const wxString& uri);
     wxURI(const wxURI& uri);
 
-    ~wxURI();
-
-    void Create(const wxString& uri);
-
-    bool HasScheme() const;
-    bool HasUser() const;
-    bool HasServer() const;
-    bool HasPort() const;
-    bool HasPath() const;
-    bool HasQuery() const;
-    bool HasFragment() const;
+    virtual ~wxURI();
 
-    const wxString& GetScheme() const;
-    const wxString& GetPath() const;
-    const wxString& GetQuery() const;
-    const wxString& GetFragment() const;
-    const wxString& GetPort() const;
-    const wxString& GetUser() const;
-    const wxString& GetServer() const;
-    const wxURIHostType& GetHostType() const;
+    const wxChar* Create(const wxString& uri);
 
-    wxString Get() const;
-
-    void Resolve(const wxURI& base, const bool& bStrict = true);
+    bool HasScheme() const      {   return (m_fields & wxURI_SCHEME) == wxURI_SCHEME;       }
+    bool HasUser() const        {   return (m_fields & wxURI_USER) == wxURI_USER;           }
+    bool HasServer() const      {   return (m_fields & wxURI_SERVER) == wxURI_SERVER;       }
+    bool HasPort() const        {   return (m_fields & wxURI_PORT) == wxURI_PORT;           }
+    bool HasPath() const        {   return (m_fields & wxURI_PATH) == wxURI_PATH;           }
+    bool HasQuery() const       {   return (m_fields & wxURI_QUERY) == wxURI_QUERY;         }
+    bool HasFragment() const    {   return (m_fields & wxURI_FRAGMENT) == wxURI_FRAGMENT;   }
+    
+    const wxString& GetScheme() const           {   return m_scheme;    }
+    const wxString& GetPath() const             {   return m_path;      }
+    const wxString& GetQuery() const            {   return m_query;     }
+    const wxString& GetFragment() const         {   return m_fragment;  }
+    const wxString& GetPort() const             {   return m_port;      }
+    const wxString& GetUser() const             {   return m_user;      }
+    const wxString& GetServer() const           {   return m_server;    }
+    const wxURIHostType& GetHostType() const    {   return m_hostType;  }
+
+    wxString BuildURI() const;
+    wxString BuildUnescapedURI() const;
+
+    void Resolve(const wxURI& base, int flags = wxURI_STRICT);
     bool IsReference() const;
 
     wxURI& operator = (const wxURI& uri);
-    wxURI& operator = (const wxChar* string);
+    wxURI& operator = (const wxString& string);
     bool operator == (const wxURI& uri) const;
+
+    static wxString Unescape (const wxString& szEscapedURI);
     
 protected:
+    wxURI& Assign(const wxURI& uri);
 
     void Clear();
 
@@ -92,8 +103,9 @@ protected:
     const wxChar* ParseUser      (const wxChar* uri);
     const wxChar* ParseServer    (const wxChar* uri);
     const wxChar* ParsePort      (const wxChar* uri);
-    const wxChar* ParsePath      (const wxChar* uri, const bool& bReference = false,
-                                                            const bool& bNormalize = true);
+    const wxChar* ParsePath      (const wxChar* uri,
+                                  bool bReference = false,
+                                  bool bNormalize = true);
     const wxChar* ParseQuery     (const wxChar* uri);
     const wxChar* ParseFragment  (const wxChar* uri);
 
@@ -103,16 +115,14 @@ protected:
     static bool ParseIPv6address(const wxChar*& uri);
     static bool ParseIPvFuture(const wxChar*& uri);
 
-
-    static void Normalize(wxChar* uri, const bool& bIgnoreLeads = false);
+    static void Normalize(wxChar* uri, bool bIgnoreLeads = false);
     static void UpTree(const wxChar* uristart, const wxChar*& uri);
 
-    static void Unescape(const wxChar*& s, wxChar& c);
+    static wxChar TranslateEscape(const wxChar* s);
     static void Escape  (wxString& s, const wxChar& c);
     static bool IsEscape(const wxChar*& uri);
 
-    static int CharToHex(const wxChar& c);
-       
+    static wxChar CharToHex(const wxChar& c);
 
     static bool IsUnreserved (const wxChar& c);
     static bool IsReserved (const wxChar& c);
@@ -136,6 +146,7 @@ protected:
     size_t m_fields;
 
     DECLARE_DYNAMIC_CLASS(wxURI)
-};//end of wxURI
+};
+
+#endif // _WX_URI_H_
 
-#endif //_WX_URIH__