]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/uri.h
don't define operator<<(ostream&, wxString) at all if it's already defined in the...
[wxWidgets.git] / include / wx / uri.h
index 473ab42e1bd70cc5d401acb50871f0b64f5137fa..b273c37a129aecd453777fdd4cbbd5b0dbce6ae4 100644 (file)
@@ -1,38 +1,35 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        uri.h
-// Purpose:     wxURI - Class for parsing URIs 
+// Purpose:     wxURI - Class for parsing URIs
 // Author:      Ryan Norton
-// Modified By: 
+// Modified By:
 // Created:     07/01/2004
 // RCS-ID:      $Id$
-// Licence:     wxWindows
+// Copyright:   (c) Ryan Norton
+// Licence:     wxWindows Licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_URI_H_
 #define _WX_URI_H_
 
-#if defined(__GNUG__) && !defined(__APPLE__)
-#pragma interface "uri.h"
-#endif
-
 #include "wx/defs.h"
 #include "wx/object.h"
 #include "wx/string.h"
 
-// Host Type that the server can be
+// Host Type that the server component can be
 enum wxURIHostType
 {
-    wxURI_REGNAME,             
-    wxURI_IPV4ADDRESS, 
-    wxURI_IPV6ADDRESS,  
-    wxURI_IPVFUTURE            
+    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
 enum wxURIFieldType
 {
     wxURI_SCHEME = 1,
-    wxURI_USER = 2,
+    wxURI_USERINFO = 2,
     wxURI_SERVER = 4,
     wxURI_PORT = 8,
     wxURI_PATH = 16,
@@ -49,10 +46,8 @@ enum wxURIFlags
 
 // 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
+// See RFC 3986
+class WXDLLIMPEXP_BASE wxURI : public wxObject
 {
 public:
     wxURI();
@@ -61,10 +56,10 @@ public:
 
     virtual ~wxURI();
 
-    void Create(const wxString& uri);
+    const wxChar* Create(const wxString& uri);
 
     bool HasScheme() const      {   return (m_fields & wxURI_SCHEME) == wxURI_SCHEME;       }
-    bool HasUser() const        {   return (m_fields & wxURI_USER) == wxURI_USER;           }
+    bool HasUserInfo() const    {   return (m_fields & wxURI_USERINFO) == wxURI_USERINFO;   }
     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;           }
@@ -76,11 +71,16 @@ public:
     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& GetUserInfo() const         {   return m_userinfo;  }
     const wxString& GetServer() const           {   return m_server;    }
     const wxURIHostType& GetHostType() const    {   return m_hostType;  }
 
-    wxString Get() const;
+    //Note that the following two get functions are explicitly depreciated by RFC 2396
+    wxString GetUser() const;
+    wxString GetPassword() const;
+
+    wxString BuildURI() const;
+    wxString BuildUnescapedURI() const;
 
     void Resolve(const wxURI& base, int flags = wxURI_STRICT);
     bool IsReference() const;
@@ -88,7 +88,9 @@ public:
     wxURI& operator = (const wxURI& uri);
     wxURI& operator = (const wxString& string);
     bool operator == (const wxURI& uri) const;
-    
+
+    static wxString Unescape (const wxString& szEscapedURI);
+
 protected:
     wxURI& Assign(const wxURI& uri);
 
@@ -97,7 +99,7 @@ protected:
     const wxChar* Parse          (const wxChar* uri);
     const wxChar* ParseAuthority (const wxChar* uri);
     const wxChar* ParseScheme    (const wxChar* uri);
-    const wxChar* ParseUser      (const wxChar* uri);
+    const wxChar* ParseUserInfo  (const wxChar* uri);
     const wxChar* ParseServer    (const wxChar* uri);
     const wxChar* ParsePort      (const wxChar* uri);
     const wxChar* ParsePath      (const wxChar* uri,
@@ -112,16 +114,16 @@ protected:
     static bool ParseIPv6address(const wxChar*& uri);
     static bool ParseIPvFuture(const wxChar*& uri);
 
-
     static void Normalize(wxChar* uri, bool bIgnoreLeads = false);
     static void UpTree(const wxChar* uristart, const wxChar*& uri);
+    static void UpTree(wxString::const_iterator uristart,
+                       wxString::const_iterator& uri);
 
-    static wxChar Unescape(const wxChar* s);
-    static void Escape  (wxString& s, const wxChar& c);
+    static wxUniChar TranslateEscape(const wxString::const_iterator& 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,7 +138,7 @@ protected:
     wxString m_query;
     wxString m_fragment;
 
-    wxString m_user;
+    wxString m_userinfo;
     wxString m_server;
     wxString m_port;