dbertoni    00/08/11 14:14:56

  Modified:    c/src/PlatformSupport URISupport.cpp
  Log:
  New functions.
  
  Revision  Changes    Path
  1.6       +52 -42    xml-xalan/c/src/PlatformSupport/URISupport.cpp
  
  Index: URISupport.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/URISupport.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- URISupport.cpp    2000/06/27 16:28:32     1.5
  +++ URISupport.cpp    2000/08/11 21:14:54     1.6
  @@ -74,64 +74,65 @@
   URISupport::URLAutoPtrType
   URISupport::getURLFromString(const XalanDOMString&   urlString)
   {
  -#if !defined(XALAN_NO_NAMESPACES)
  -     using std::auto_ptr;
  -#endif
  -
        URLAutoPtrType  url(new XMLURL);
   
        try 
  +     {
  +             url->setURL(c_wstr(getURLStringFromString(urlString)));
  +     }
  +     catch (...)
        {
  -             XalanDOMString  theNormalizedURI(clone(urlString));
  +             throw ("Error! Cannot create url for: " + urlString);
  +     }
  +     return url;
  +}
   
  -             // Let's see what sort of URI we have...
  -             const unsigned int      len = length(theNormalizedURI);
  -             const unsigned int      index = indexOf(theNormalizedURI, ':');
  +XalanDOMString
  +URISupport::getURLStringFromString(const XalanDOMString&     urlString)
  +{
  +     XalanDOMString  theNormalizedURI(clone(urlString));
   
  -             bool                            protocolPresent = false;
  +     // Let's see what sort of URI we have...
  +     const unsigned int      len = length(theNormalizedURI);
  +     const unsigned int      index = indexOf(theNormalizedURI, ':');
   
  -             if (index != len)
  -             {
  -                     // $$$ ToDo: XMLURL::lookupByName() is supposed to be 
static, but is not.
  -                     const XMLURL::Protocols         theProtocol =
  -                             
XMLURL().lookupByName(c_wstr(substring(theNormalizedURI, 0 , index)));
  +     bool                            protocolPresent = false;
   
  -                     if (theProtocol != XMLURL::Unknown)
  -                     {
  -                             protocolPresent = true;
  -                     }
  -             }
  +     if (index != len)
  +     {
  +             // $$$ ToDo: XMLURL::lookupByName() is supposed to be static, 
but is not.
  +             const XMLURL::Protocols         theProtocol =
  +                     
XMLURL().lookupByName(c_wstr(substring(theNormalizedURI, 0 , index)));
   
  -             if (protocolPresent == true)
  +             if (theProtocol != XMLURL::Unknown)
                {
  -                     NormalizeURIText(theNormalizedURI);
  +                     protocolPresent = true;
                }
  -             else
  -             {
  -                     // Assume it's a file specification...
  -                     array_auto_ptr<XMLCh>   
theFullPath(XMLPlatformUtils::getFullPath(c_wstr(urlString)));
  -                     assert(theFullPath.get() != 0);
  +     }
   
  -                     theNormalizedURI = theFullPath.get();
  -                     assert(length(theNormalizedURI) > 0);
  +     if (protocolPresent == true)
  +     {
  +             NormalizeURIText(theNormalizedURI);
  +     }
  +     else
  +     {
  +             // Assume it's a file specification...
  +             array_auto_ptr<XMLCh>   
theFullPath(XMLPlatformUtils::getFullPath(c_wstr(urlString)));
  +             assert(theFullPath.get() != 0);
   
  -                     NormalizeURIText(theNormalizedURI);
  +             theNormalizedURI = theFullPath.get();
  +             assert(length(theNormalizedURI) > 0);
   
  -                     const XalanDOMString    
theFilePrefix(indexOf(theNormalizedURI, '/') == 0 ?
  -                                             
XALAN_STATIC_UCODE_STRING("file://") :
  -                                             
XALAN_STATIC_UCODE_STRING("file:///"));
  +             NormalizeURIText(theNormalizedURI);
   
  -                     theNormalizedURI = theFilePrefix + theNormalizedURI;
  -             }
  +             const XalanDOMString    theFilePrefix(indexOf(theNormalizedURI, 
'/') == 0 ?
  +                                     XALAN_STATIC_UCODE_STRING("file://") :
  +                                     XALAN_STATIC_UCODE_STRING("file:///"));
   
  -             url->setURL(c_wstr(theNormalizedURI));
  -     }
  -     catch (...)
  -     {
  -             throw ("Error! Cannot create url for: " + urlString);
  +             theNormalizedURI = theFilePrefix + theNormalizedURI;
        }
   
  -     return url;
  +     return theNormalizedURI;
   }
   
   
  @@ -140,6 +141,16 @@
   URISupport::getURLFromString(
                        const XalanDOMString&   urlString,
                        const XalanDOMString&   base)
  +{    
  +     return getURLFromString(getURLStringFromString(urlString, base));
  +}
  +
  +
  +
  +XalanDOMString
  +URISupport::getURLStringFromString(
  +                     const XalanDOMString&   urlString,
  +                     const XalanDOMString&   base)
   {
        XalanDOMString  context(clone(base));
   
  @@ -223,7 +234,7 @@
                }
        }
   
  -     return getURLFromString(context);
  +     return getURLStringFromString(context);
   }
   
   
  @@ -232,7 +243,6 @@
   URISupport::NormalizeURIText(XalanDOMString& uriString)
   {
   #if !defined(XALAN_NO_NAMESPACES)
  -     using std::vector;
        using std::replace;
   #endif
   
  
  
  

Reply via email to