X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dd65d8c83003ebbf9ab3275957fefa8cd7c87cc3..0d6fba37931bde89e7161ff173e2f818e4b15ac0:/include/wx/uri.h diff --git a/include/wx/uri.h b/include/wx/uri.h index 706e5010cf..b273c37a12 100644 --- a/include/wx/uri.h +++ b/include/wx/uri.h @@ -1,99 +1,110 @@ ///////////////////////////////////////////////////////////////////////////// // Name: uri.h -// Purpose: wxURI - Class for parsing/validating 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_URIH__ -#define _WX_URIH__ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "uri.h" -#endif +#ifndef _WX_URI_H_ +#define _WX_URI_H_ #include "wx/defs.h" #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, + wxURI_USERINFO = 2, wxURI_SERVER = 4, wxURI_PORT = 8, 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 +// See RFC 3986 +class WXDLLIMPEXP_BASE wxURI : public wxObject { public: wxURI(); wxURI(const wxString& uri); wxURI(const wxURI& uri); - ~wxURI(); + virtual ~wxURI(); + + const wxChar* Create(const wxString& uri); - void Create(const wxString& uri); + bool HasScheme() const { return (m_fields & wxURI_SCHEME) == wxURI_SCHEME; } + 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; } + bool HasQuery() const { return (m_fields & wxURI_QUERY) == wxURI_QUERY; } + bool HasFragment() const { return (m_fields & wxURI_FRAGMENT) == wxURI_FRAGMENT; } - bool HasScheme() const; - bool HasUser() const; - bool HasServer() const; - bool HasPort() const; - bool HasPath() const; - bool HasQuery() const; - bool HasFragment() const; + 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& GetUserInfo() const { return m_userinfo; } + const wxString& GetServer() const { return m_server; } + const wxURIHostType& GetHostType() const { return m_hostType; } - 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; + //Note that the following two get functions are explicitly depreciated by RFC 2396 + wxString GetUser() const; + wxString GetPassword() const; - wxString Get() const; + wxString BuildURI() const; + wxString BuildUnescapedURI() const; - void Resolve(const wxURI& base, const bool& bStrict = true); + 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(); 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, 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 +114,16 @@ 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 UpTree(wxString::const_iterator uristart, + wxString::const_iterator& uri); - static void Unescape(const wxChar*& s, wxChar& c); - 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); @@ -127,7 +138,7 @@ protected: wxString m_query; wxString m_fragment; - wxString m_user; + wxString m_userinfo; wxString m_server; wxString m_port; @@ -136,6 +147,7 @@ protected: size_t m_fields; DECLARE_DYNAMIC_CLASS(wxURI) -};//end of wxURI +}; + +#endif // _WX_URI_H_ -#endif //_WX_URIH__