| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/uri.h
 
- // Purpose:     wxURI - Class for parsing URIs
 
- // Author:      Ryan Norton
 
- //              Vadim Zeitlin (UTF-8 URI support, many other changes)
 
- // Created:     07/01/2004
 
- // Copyright:   (c) 2004 Ryan Norton
 
- //                  2008 Vadim Zeitlin
 
- // Licence:     wxWindows Licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_URI_H_
 
- #define _WX_URI_H_
 
- #include "wx/defs.h"
 
- #include "wx/object.h"
 
- #include "wx/string.h"
 
- #include "wx/arrstr.h"
 
- // Host Type that the server component can be
 
- enum 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
 
- enum wxURIFieldType
 
- {
 
-     wxURI_SCHEME = 1,
 
-     wxURI_USERINFO = 2,
 
-     wxURI_SERVER = 4,
 
-     wxURI_PORT = 8,
 
-     wxURI_PATH = 16,
 
-     wxURI_QUERY = 32,
 
-     wxURI_FRAGMENT = 64
 
- };
 
- // Miscellaneous other flags
 
- enum wxURIFlags
 
- {
 
-     wxURI_STRICT = 1
 
- };
 
- // Generic class for parsing URIs.
 
- //
 
- // See RFC 3986
 
- class WXDLLIMPEXP_BASE wxURI : public wxObject
 
- {
 
- public:
 
-     wxURI();
 
-     wxURI(const wxString& uri);
 
-     // default copy ctor, assignment operator and dtor are ok
 
-     bool Create(const wxString& uri);
 
-     wxURI& operator=(const wxString& string)
 
-     {
 
-         Create(string);
 
-         return *this;
 
-     }
 
-     bool operator==(const wxURI& uri) const;
 
-     // various accessors
 
-     bool HasScheme() const      { return (m_fields & wxURI_SCHEME) != 0;   }
 
-     bool HasUserInfo() const    { return (m_fields & wxURI_USERINFO) != 0; }
 
-     bool HasServer() const      { return (m_fields & wxURI_SERVER) != 0;   }
 
-     bool HasPort() const        { return (m_fields & wxURI_PORT) != 0;     }
 
-     bool HasPath() const        { return (m_fields & wxURI_PATH) != 0;     }
 
-     bool HasQuery() const       { return (m_fields & wxURI_QUERY) != 0;    }
 
-     bool HasFragment() const    { return (m_fields & wxURI_FRAGMENT) != 0; }
 
-     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;   }
 
-     wxURIHostType GetHostType() const    { return m_hostType; }
 
-     // these functions only work if the user information part of the URI is in
 
-     // the usual (but insecure and hence explicitly recommended against by the
 
-     // RFC) "user:password" form
 
-     wxString GetUser() const;
 
-     wxString GetPassword() const;
 
-     // combine all URI components into a single string
 
-     //
 
-     // BuildURI() returns the real URI suitable for use with network libraries,
 
-     // for example, while BuildUnescapedURI() returns a string suitable to be
 
-     // shown to the user.
 
-     wxString BuildURI() const { return DoBuildURI(&wxURI::Nothing); }
 
-     wxString BuildUnescapedURI() const { return DoBuildURI(&wxURI::Unescape); }
 
-     // the escaped URI should contain only ASCII characters, including possible
 
-     // escape sequences
 
-     static wxString Unescape(const wxString& escapedURI);
 
-     void Resolve(const wxURI& base, int flags = wxURI_STRICT);
 
-     bool IsReference() const;
 
- protected:
 
-     void Clear();
 
-     // common part of BuildURI() and BuildUnescapedURI()
 
-     wxString DoBuildURI(wxString (*funcDecode)(const wxString&)) const;
 
-     // function which returns its argument unmodified, this is used by
 
-     // BuildURI() to tell DoBuildURI() that nothing needs to be done with the
 
-     // URI components
 
-     static wxString Nothing(const wxString& value) { return value; }
 
-     bool Parse(const char* uri);
 
-     const char* ParseAuthority (const char* uri);
 
-     const char* ParseScheme    (const char* uri);
 
-     const char* ParseUserInfo  (const char* uri);
 
-     const char* ParseServer    (const char* uri);
 
-     const char* ParsePort      (const char* uri);
 
-     const char* ParsePath      (const char* uri);
 
-     const char* ParseQuery     (const char* uri);
 
-     const char* ParseFragment  (const char* uri);
 
-     static bool ParseH16(const char*& uri);
 
-     static bool ParseIPv4address(const char*& uri);
 
-     static bool ParseIPv6address(const char*& uri);
 
-     static bool ParseIPvFuture(const char*& uri);
 
-     // should be called with i pointing to '%', returns the encoded character
 
-     // following it or -1 if invalid and advances i past it (so that it points
 
-     // to the last character consumed on return)
 
-     static int DecodeEscape(wxString::const_iterator& i);
 
-     // append next character pointer to by p to the string in an escaped form
 
-     // and advance p past it
 
-     //
 
-     // if the next character is '%' and it's followed by 2 hex digits, they are
 
-     // not escaped (again) by this function, this allows to keep (backwards-
 
-     // compatible) ambiguity about the input format to wxURI::Create(): it can
 
-     // be either already escaped or not
 
-     void AppendNextEscaped(wxString& s, const char *& p);
 
-     // convert hexadecimal digit to its value; return -1 if c isn't valid
 
-     static int CharToHex(char c);
 
-     // split an URI path string in its component segments (including empty and
 
-     // "." ones, no post-processing is done)
 
-     static wxArrayString SplitInSegments(const wxString& path);
 
-     // various URI grammar helpers
 
-     static bool IsUnreserved(char c);
 
-     static bool IsReserved(char c);
 
-     static bool IsGenDelim(char c);
 
-     static bool IsSubDelim(char c);
 
-     static bool IsHex(char c);
 
-     static bool IsAlpha(char c);
 
-     static bool IsDigit(char c);
 
-     static bool IsEndPath(char c);
 
-     wxString m_scheme;
 
-     wxString m_path;
 
-     wxString m_query;
 
-     wxString m_fragment;
 
-     wxString m_userinfo;
 
-     wxString m_server;
 
-     wxString m_port;
 
-     wxURIHostType m_hostType;
 
-     size_t m_fields;
 
-     DECLARE_DYNAMIC_CLASS(wxURI)
 
- };
 
- #endif // _WX_URI_H_
 
 
  |