]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/uri.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxURI 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  10     Host type of URI returned from wxURI::GetHostType(). 
  14     wxURI_REGNAME
,      ///< Host is a normal register name (@c "www.mysite.com"). 
  15     wxURI_IPV4ADDRESS
,  ///< Host is a version 4 ip address (@c "192.168.1.100"). 
  16     wxURI_IPV6ADDRESS
,  ///< Host is a version 6 ip address (@c "[aa:aa:aa:aa::aa:aa]:5050"). 
  17     wxURI_IPVFUTURE     
///< Host is a future ip address, wxURI is unsure what kind. 
  23     wxURI is used to extract information from a URI (Uniform Resource 
  26     For information about URIs, see RFC 3986 
  27     <http://www.ietf.org/rfc/rfc3986.txt>. 
  29     In short, a URL is a URI. In other words, URL is a subset of a URI - all 
  30     acceptable URLs are also acceptable URIs. 
  32     wxURI automatically escapes invalid characters in a string, so there is no 
  33     chance of wxURI "failing" on construction/creation. 
  35     wxURI supports copy construction and standard assignment operators. wxURI 
  36     can also be inherited from to provide furthur functionality. 
  38     To obtain individual components you can use one of the GetXXX() methods. 
  39     However, you should check HasXXX() before calling a get method, which 
  40     determines whether or not the component referred to by the method is 
  41     defined according to RFC 2396. Consider an undefined component equivalent 
  47     //protocol will hold the http protocol (i.e. "http") 
  49     wxURI myuri("http://mysite.com"); 
  50     if( myuri.HasScheme() ) 
  51         protocol = myuri.GetScheme(); 
  54     @note On URIs with a "file" scheme wxURI does not parse the userinfo, 
  55           server, or port portion. This is to keep compatability with 
  56           wxFileSystem, the old wxURL, and older url specifications. 
  63 class wxURI 
: public wxObject
 
  72         Constructor for quick creation. 
  75             URI (Uniform Resource Identifier) to initialize with. 
  77     wxURI(const wxString
& uri
); 
  80         Copies this URI from another URI. 
  83             URI (Uniform Resource Identifier) to initialize with. 
  85     wxURI(const wxURI
& uri
); 
  88         Builds the URI from its individual components and adds proper 
  91         If the URI is not a reference or is not resolved, the URI that is 
  92         returned is the same one passed to the constructor or Create(). 
  94     wxString 
BuildURI() const; 
  97         Builds the URI from its individual components, adds proper separators, 
  98         and returns escape sequences to normal characters. 
 100         @note It is preferred to call this over Unescape(BuildURI()) since 
 101               BuildUnescapedURI() performs some optimizations over the plain 
 104     wxString 
BuildUnescapedURI() const; 
 107         Creates this URI from the @a uri string. 
 109         Returns @true if this instance was correctly initialized. 
 112             String to initialize from. 
 114     bool Create(const wxString
& uri
); 
 117         Obtains the fragment of this URI. 
 119         The fragment of a URI is the last value of the URI, and is the value 
 120         after a "#" character after the path of the URI. 
 122         @c "http://mysite.com/mypath#<fragment>" 
 124     const wxString
& GetFragment() const; 
 127         Obtains the host type of this URI, which is one of wxURIHostType. 
 129     wxURIHostType 
GetHostType() const; 
 132         Returns the password part of the userinfo component of this URI. Note 
 133         that this is explicitly depreciated by RFC 1396 and should generally be 
 136         @c "http://<user>:<password>@mysite.com/mypath" 
 138     wxString 
GetPassword() const; 
 141         Returns the (normalized) path of the URI. 
 143         The path component of a URI comes directly after the scheme component 
 144         if followed by zero or one slashes ('/'), or after the server/port 
 147         Absolute paths include the leading '/' character. 
 149         @c "http://mysite.com<path>" 
 151     const wxString
& GetPath() const; 
 154         Returns a string representation of the URI's port. 
 156         The Port of a URI is a value after the server, and must come after a 
 159         @c "http://mysite.com:<port>" 
 161         @note You can easily get the numeric value of the port by using 
 162               wxAtoi() or wxString::Format(). 
 164     const wxString
& GetPort() const; 
 167         Returns the Query component of the URI. 
 169         The query component is what is commonly passed to a cgi application, 
 170         and must come after the path component, and after a '?' character. 
 172         @c "http://mysite.com/mypath?<query>" 
 174     const wxString
& GetQuery() const; 
 177         Returns the Scheme component of the URI. 
 179         The first part of the URI. 
 181         @c "<scheme>://mysite.com" 
 183     const wxString
& GetScheme() const; 
 186         Returns the Server component of the URI. 
 188         The server of the URI can be a server name or a type of IP address. See 
 189         GetHostType() for the possible values for the host type of the server 
 192         @c "http://<server>/mypath" 
 194     const wxString
& GetServer() const; 
 197         Returns the username part of the userinfo component of this URI. Note 
 198         that this is explicitly depreciated by RFC 1396 and should generally be 
 201         @c "http://<user>:<password>@mysite.com/mypath" 
 203     wxString 
GetUser() const; 
 206         Returns the UserInfo component of the URI. 
 208         The component of a URI before the server component that is postfixed by 
 211         @c "http://<userinfo>@mysite.com/mypath" 
 213     const wxString
& GetUserInfo() const; 
 216         Returns @true if the Fragment component of the URI exists. 
 218     bool HasFragment() const; 
 221         Returns @true if the Path component of the URI exists. 
 223     bool HasPath() const; 
 226         Returns @true if the Port component of the URI exists. 
 228     bool HasPort() const; 
 231         Returns @true if the Query component of the URI exists. 
 233     bool HasQuery() const; 
 236         Returns @true if the Scheme component of the URI exists. 
 238     bool HasScheme() const; 
 241         Returns @true if the Server component of the URI exists. 
 243     bool HasServer() const; 
 246         Returns @true if the User component of the URI exists. 
 248     bool HasUser() const; 
 251         Returns @true if a valid [absolute] URI, otherwise this URI is a URI 
 252         reference and not a full URI, and this function returns @false. 
 254     bool IsReference() const; 
 257         Inherits this URI from a base URI - components that do not exist in 
 258         this URI are copied from the base, and if this URI's path is not an 
 259         absolute path (prefixed by a '/'), then this URI's path is merged with 
 262         For instance, resolving "../mydir" from "http://mysite.com/john/doe" 
 263         results in the scheme (http) and server ("mysite.com") being copied 
 264         into this URI, since they do not exist. In addition, since the path of 
 265         this URI is not absolute (does not begin with '/'), the path of the 
 266         base's is merged with this URI's path, resulting in the URI 
 267         "http://mysite.com/john/mydir". 
 270             Base URI to inherit from. Must be a full URI and not a reference. 
 272             Currently either wxURI_STRICT or 0, in non-strict mode some 
 273             compatibility layers are enabled to allow loopholes from RFCs prior 
 276     void Resolve(const wxURI
& base
, int flags 
= wxURI_STRICT
); 
 279         Translates all escape sequences (normal characters and returns the 
 282         If you want to unescape an entire wxURI, use BuildUnescapedURI() 
 283         instead, as it performs some optimizations over this method. 
 286             String with escaped characters to convert. 
 288     static wxString 
Unescape(const wxString
& uri
); 
 291         Compares this URI to another URI, and returns @true if this URI equals 
 292         @a uricomp, otherwise it returns @false. 
 297     bool operator==(const wxURI
& uricomp
) const;