#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
+// 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
// 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();
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 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& GetServer() const { return m_server; }
const wxURIHostType& GetHostType() const { return m_hostType; }
- wxString Get() const;
+ 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 wxString& string);
bool operator == (const wxURI& uri) const;
+
+ static wxString Unescape (const wxString& szEscapedURI);
protected:
wxURI& Assign(const wxURI& uri);
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 wxChar Unescape(const wxChar* s);
+ 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);