]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/uri.cpp
don't force wxUSE_EXTENDED_RTTI to eb 1 for Borland compiler (why?)
[wxWidgets.git] / src / common / uri.cpp
index c251d923265697788739521161875109479b74b2..abc46f49b92603ed0bc862bff722fdbe2dde2b80 100644 (file)
@@ -117,7 +117,8 @@ wxChar wxURI::TranslateEscape(const wxChar* s)
 {
     wxASSERT_MSG(IsHex(*s) && IsHex(*(s+1)), wxT("Invalid escape!"));
 
-    return (wxChar)( CharToHex(*s) * 0x10 ) | CharToHex(*++s);
+    //<<4 == 16
+    return (wxChar)( CharToHex(*s) << 4 ) | CharToHex(*++s);
 }
 
 wxString wxURI::Unescape(const wxString& uri)
@@ -131,6 +132,8 @@ wxString wxURI::Unescape(const wxString& uri)
             new_uri += wxURI::TranslateEscape( &(uri.c_str()[i+1]) );
             i += 2;
         }
+        else
+            new_uri += uri[i];
     }
 
     return new_uri;
@@ -464,26 +467,28 @@ const wxChar* wxURI::ParseServer(const wxChar* uri)
     // IP-literal    = "[" ( IPv6address / IPvFuture  ) "]"
     if (*uri == wxT('['))
     {
-        if (ParseIPv6address(++uri) && *uri == wxT(']'))
+        ++uri; //some compilers don't support *&ing a ++*
+        if (ParseIPv6address(uri) && *uri == wxT(']'))
         {
             ++uri;
             m_hostType = wxURI_IPV6ADDRESS;
 
             wxStringBufferLength theBuffer(m_server, uri - uricopy);
-            wxMemcpy(theBuffer, uricopy, uri-uricopy);
+            wxTmemcpy(theBuffer, uricopy, uri-uricopy);
             theBuffer.SetLength(uri-uricopy);
         }
         else
         {
             uri = uricopy;
 
-            if (ParseIPvFuture(++uri) && *uri == wxT(']'))
+            ++uri; //some compilers don't support *&ing a ++*
+            if (ParseIPvFuture(uri) && *uri == wxT(']'))
             {
                 ++uri;
                 m_hostType = wxURI_IPVFUTURE;
 
                 wxStringBufferLength theBuffer(m_server, uri - uricopy);
-                wxMemcpy(theBuffer, uricopy, uri-uricopy);
+                wxTmemcpy(theBuffer, uricopy, uri-uricopy);
                 theBuffer.SetLength(uri-uricopy);
             }
             else
@@ -497,7 +502,7 @@ const wxChar* wxURI::ParseServer(const wxChar* uri)
             m_hostType = wxURI_IPV4ADDRESS;
 
             wxStringBufferLength theBuffer(m_server, uri - uricopy);
-            wxMemcpy(theBuffer, uricopy, uri-uricopy);
+            wxTmemcpy(theBuffer, uricopy, uri-uricopy);
             theBuffer.SetLength(uri-uricopy);
         }
         else
@@ -591,7 +596,7 @@ const wxChar* wxURI::ParsePath(const wxChar* uri, bool bReference, bool bNormali
         {
             wxStringBufferLength theBuffer(m_path, m_path.length() + 1);
 #if wxUSE_STL
-            wxMemcpy(theBuffer, m_path.c_str(), m_path.length()+1);
+            wxTmemcpy(theBuffer, m_path.c_str(), m_path.length()+1);
 #endif
             Normalize(theBuffer, true);
             theBuffer.SetLength(wxStrlen(theBuffer));
@@ -631,7 +636,7 @@ const wxChar* wxURI::ParsePath(const wxChar* uri, bool bReference, bool bNormali
             {
                 wxStringBufferLength theBuffer(m_path, m_path.length() + 1);
 #if wxUSE_STL
-                wxMemcpy(theBuffer, m_path.c_str(), m_path.length()+1);
+                wxTmemcpy(theBuffer, m_path.c_str(), m_path.length()+1);
 #endif
                 Normalize(theBuffer);
                 theBuffer.SetLength(wxStrlen(theBuffer));
@@ -734,7 +739,7 @@ void wxURI::Resolve(const wxURI& base, int flags)
         return;
     }
 
-    //No sheme - inherit
+    //No scheme - inherit
     m_scheme = base.m_scheme;
     m_fields |= wxURI_SCHEME;
 
@@ -797,7 +802,7 @@ void wxURI::Resolve(const wxURI& base, int flags)
         //             T.query = R.query;
         if (m_path[0u] != wxT('/'))
         {
-            //Marge paths
+            //Merge paths
             const wxChar* op = m_path.c_str();
             const wxChar* bp = base.m_path.c_str() + base.m_path.Length();
 
@@ -1232,6 +1237,21 @@ bool wxURI::IsDigit(const wxChar& c)
 
 #include "wx/url.h"
 
+wxString wxURL::GetProtocolName() const
+{
+    return m_scheme;
+}
+
+wxString wxURL::GetHostName() const
+{
+    return m_server;
+}
+
+wxString wxURL::GetPath() const
+{
+    return m_path;
+}
+
 //Note that this old code really doesn't convert to a URI that well and looks
 //more like a dirty hack than anything else...