Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

This commit was manufactured by cvs2svn to create tag

'Xalan-C_1_5_0'.

git-svn-id: https://svn.apache.org/repos/asf/xalan/c/tags/Xalan-C_1_5_0@341652 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information...
commit bef36ce2d5f1b809fe708475580d838936579c8a 1 parent 78d2b43
No Author authored
View
96 src/PlatformSupport/URISupport.cpp
@@ -72,7 +72,7 @@
#include "XalanUnicode.hpp"
-#include "XalanParsedURI.hpp"
+
XALAN_CPP_NAMESPACE_BEGIN
@@ -204,18 +204,98 @@ URISupport::getURLStringFromString(
XalanDOMString::size_type baseLen,
XalanDOMString& theNormalizedURI)
{
+ XALAN_USING_XERCES(XMLURL)
+
XalanDOMString context(base, baseLen);
- XalanDOMString url(urlString, urlStringLen);
- // Flip slashes
NormalizeURIText(context);
- NormalizeURIText(url);
- // Resolve the URI
- url = XalanParsedURI::resolve(url, context);
+ const XalanDOMString::size_type indexOfSlash = baseLen == 0 ?
+ 0 :
+ lastIndexOf(context, XalanUnicode::charSolidus);
+
+ const bool hasPath = indexOfSlash < baseLen ? true : false;
+
+ if (hasPath == true)
+ {
+ // Strip off file name from context...
+ substring(context, context, 0, indexOfSlash + 1);
+ }
+
+ // OK, now let's look at the urlString...
+
+ // Is there a colon, indicating some sort of drive spec, or protocol?
+ const XalanDOMString::size_type theColonIndex = indexOf(urlString, XalanUnicode::charColon);
+
+ if (theColonIndex == urlStringLen)
+ {
+ // No colon, so just use the urlString as is...
+ if (hasPath == true)
+ {
+ context += urlString;
+ }
+ else
+ {
+ context = urlString;
+ }
+ }
+ else
+ {
+ XalanDOMString theProtocolString;
+
+ substring(urlString, theProtocolString, 0, theColonIndex);
+
+ // $$$ ToDo: XMLURL::lookupByName() is supposed to be static, but is not.
+ const XMLURL::Protocols theProtocol =
+ XMLURL().lookupByName(c_wstr(theProtocolString));
+
+ if (theColonIndex == 1 &&
+ theProtocol == XMLURL::Unknown)
+ {
+ // Ahh, it's a drive letter, so ignore the context...
+ context = urlString;
+ }
+ else
+ {
+ // It's a protocol...
+ if (startsWith(context, theProtocolString) == false)
+ {
+ // OK, not the same protocol, so what can we do???
+ context = urlString;
+ }
+ else
+ {
+ // They share the same protocol...
+
+ // Check if this is an absolute URI (starts with a leading '//')
+ const XalanDOMString::size_type protoLength = length(theProtocolString);
+
+ if (protoLength + 3 <= urlStringLen &&
+ urlString[protoLength + 1] == XalanUnicode::charSolidus &&
+ urlString[protoLength + 2] == XalanUnicode::charSolidus)
+ {
+ // It's an absolute URI -- use it in full...
+ context = urlString;
+ }
+ else
+ {
+ // Strip off file name from context...
+ if (indexOfSlash < baseLen)
+ {
+ substring(context, context, 0, indexOfSlash + 1);
+ }
+
+ // OK, everything looks good, so strip off the protocol
+ // and colon...
+ context.append(
+ urlString + theColonIndex + 1,
+ urlStringLen - (theColonIndex + 1));
+ }
+ }
+ }
+ }
- // Do platform specific stuff
- getURLStringFromString(url, theNormalizedURI);
+ getURLStringFromString(context, theNormalizedURI);
}
View
127 src/XPath/FunctionDoc.hpp
@@ -1,127 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 1999 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Xalan" and "Apache Software Foundation" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * nor may "Apache" appear in their name, without prior written
- * permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, International
- * Business Machines, Inc., http://www.ibm.com. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-#if !defined(FUNCTIONDOC_HEADER_GUARD_1357924680)
-#define FUNCTIONDOC_HEADER_GUARD_1357924680
-
-
-
-// Base header file. Must be first.
-#include <XSLT/XSLTDefinitions.hpp>
-
-
-
-#include <vector>
-
-
-
-#include <PlatformSupport/DOMStringHelper.hpp>
-
-
-
-// Base class header file...
-#include <XPath/Function.hpp>
-
-
-/**
- * XPath implementation of "document" function.
- */
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XSLT class.
-class XALAN_XSLT_EXPORT FunctionDoc : public Function
-{
-public:
-
- // These methods are inherited from Function ...
-
- virtual XObjectPtr
- execute(
- XPathExecutionContext& executionContext,
- const DOM_Node& context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- executionContext.error("Document() function implementation has been replaced by xslt/FunctionDocument!",
- context);
-
- return executionContext.getXObjectFactory().createNull();
- }
-
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
- virtual Function*
-#else
- virtual FunctionDoc*
-#endif
- clone() const
- {
- return new FunctionDoc(*this);
- }
-
-private:
-
- // Not implemented...
- FunctionDoc&
- operator=(const FunctionDoc&);
-
- bool
- operator==(const FunctionDoc&) const;
-};
-
-
-
-#endif // FUNCTIONDOC_HEADER_GUARD_1357924680
View
81 src/XalanDOM/XalanDOMString.cpp
@@ -292,14 +292,14 @@ XalanDOMString::assign(
{
invariants();
-#if defined(__SGI_STL_PORT) && __SGI_STL_PORT <= 0x400
+#if __SGI_STL_PORT <= 0x400
XalanDOMString temp;
- temp.m_data.reserve(theLastPosition - theFirstPosition + 1);
+ temp.reserve(theLastPosition - theFirstPosition + 1);
while(theFirstPosition != theLastPosition)
{
- temp.m_data.push_back(*theFirstPosition);
+ temp.push_back(*theFirstPosition);
++theFirstPosition;
}
@@ -310,8 +310,6 @@ XalanDOMString::assign(
swap(temp);
#else
- m_data.reserve(theLastPosition - theFirstPosition + 1);
-
m_data.assign(theFirstPosition, theLastPosition);
m_data.push_back(XalanDOMChar(0));
@@ -463,20 +461,9 @@ XalanDOMString::insert(
{
invariants();
- if (m_data.empty() == true)
- {
- assert(thePosition == 0);
-
- append(theString, theCount);
-
- assert(length() == theCount);
- }
- else
- {
- m_data.insert(getIteratorForPosition(thePosition), theString, theString + theCount);
+ m_data.insert(getIteratorForPosition(thePosition), theString, theString + theCount);
- m_size += theCount;
- }
+ m_size += theCount;
invariants();
@@ -493,18 +480,9 @@ XalanDOMString::insert(
{
invariants();
- if (m_data.empty() == true)
- {
- assert(thePosition == 0);
+ m_data.insert(getIteratorForPosition(thePosition), theCount, theChar);
- assign(theCount, theChar);
- }
- else
- {
- m_data.insert(getIteratorForPosition(thePosition), theCount, theChar);
-
- m_size += theCount;
- }
+ m_size += theCount;
invariants();
@@ -520,20 +498,9 @@ XalanDOMString::insert(
{
invariants();
- if (m_data.empty() == true)
- {
- assert(thePosition == m_data.end() || thePosition == m_data.begin());
-
- assign(1, theChar);
+ m_data.insert(thePosition, theChar);
- assert(length() == 1);
- }
- else
- {
- m_data.insert(thePosition, theChar);
-
- ++m_size;
- }
+ ++m_size;
invariants();
@@ -550,20 +517,9 @@ XalanDOMString::insert(
{
invariants();
- if (m_data.empty() == true)
- {
- assert(thePosition == m_data.end() || thePosition == m_data.begin());
-
- assign(theCount, theChar);
+ m_data.insert(thePosition, theCount, theChar);
- assert(length() == theCount);
- }
- else
- {
- m_data.insert(thePosition, theCount, theChar);
-
- m_size += theCount;
- }
+ m_size += theCount;
invariants();
}
@@ -578,20 +534,11 @@ XalanDOMString::insert(
{
invariants();
- if (m_data.empty() == true)
- {
- assert(theInsertPosition == m_data.end() || theInsertPosition == m_data.begin());
+ m_data.insert(theInsertPosition, theFirstPosition, theLastPosition);
- assign(theFirstPosition, theLastPosition);
- }
- else
- {
- m_data.insert(theInsertPosition, theFirstPosition, theLastPosition);
-
- m_size = m_data.size() - 1;
+ m_size = m_data.size() - 1;
- assert(m_size == m_data.size() - 1);
- }
+ assert(m_size == m_data.size() - 1);
invariants();
}
Please sign in to comment.
Something went wrong with that request. Please try again.