dbertoni 2002/11/02 19:31:54
Modified: c/src/XPath XalanQName.cpp XalanQName.hpp
Log:
Added implementation of a proxy class for PrefixResolver and removed obsolete
code.
Revision Changes Path
1.6 +32 -16 xml-xalan/c/src/XPath/XalanQName.cpp
Index: XalanQName.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XalanQName.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XalanQName.cpp 11 Oct 2002 01:59:02 -0000 1.5
+++ XalanQName.cpp 3 Nov 2002 03:31:54 -0000 1.6
@@ -76,6 +76,38 @@
+XalanQName::PrefixResolverProxy::PrefixResolverProxy(
+ const NamespacesStackType& theStack,
+ const XalanDOMString& theURI) :
+ m_stack(theStack),
+ m_uri(theURI)
+{
+}
+
+
+
+XalanQName::PrefixResolverProxy::~PrefixResolverProxy()
+{
+}
+
+
+
+const XalanDOMString*
+XalanQName::PrefixResolverProxy::getNamespaceForPrefix(const XalanDOMString&
prefix) const
+{
+ return XalanQName::getNamespaceForPrefix(m_stack, prefix);
+}
+
+
+
+const XalanDOMString&
+XalanQName::PrefixResolverProxy::getURI() const
+{
+ return m_uri;
+}
+
+
+
const XalanDOMString*
XalanQName::getNamespaceForPrefix(
const NamespaceVectorType& namespaces,
@@ -120,23 +152,7 @@
const NamespacesStackType& nsStack,
const XalanDOMString& prefix)
{
-#if 1
return getNamespaceForPrefix(nsStack.begin(), nsStack.end(), prefix);
-#else
- const XalanDOMString* nsURI = 0;
-
- for(NamespacesStackType::size_type i = nsStack.size(); i > 0; --i)
- {
- const NamespaceVectorType& namespaces = nsStack[i - 1];
-
- nsURI = getNamespaceForPrefix(namespaces, prefix);
-
- if (nsURI != 0)
- break;
- }
-
- return nsURI;
-#endif
}
1.6 +33 -1 xml-xalan/c/src/XPath/XalanQName.hpp
Index: XalanQName.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XalanQName.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XalanQName.hpp 11 Oct 2002 01:59:02 -0000 1.5
+++ XalanQName.hpp 3 Nov 2002 03:31:54 -0000 1.6
@@ -73,6 +73,7 @@
#include <PlatformSupport/DOMStringHelper.hpp>
+#include <PlatformSupport/PrefixResolver.hpp>
@@ -81,7 +82,6 @@
class XalanElement;
-class PrefixResolver;
class XPathEnvSupport;
@@ -177,6 +177,38 @@
return ::equals(getLocalPart(), theRHS.getLocalPart()) &&
::equals(getNamespace(), theRHS.getNamespace());
}
+
+ class XALAN_XPATH_EXPORT PrefixResolverProxy : public PrefixResolver
+ {
+ public:
+
+ /**
+ * Construct a PrefixResolver from a NamespacesStackType
+ * instance.
+ *
+ * @param theStack The stack to use for prefix resolution
+ * @param theURI The namespace URI of the resolver, if any.
Only a reference is kept, so this cannot be a temporary
+ * @return pointer to the string value if found, otherwise 0.
+ */
+ PrefixResolverProxy(
+ const NamespacesStackType& theStack,
+ const XalanDOMString& theURI);
+
+ virtual
+ ~PrefixResolverProxy();
+
+ virtual const XalanDOMString*
+ getNamespaceForPrefix(const XalanDOMString& prefix)
const;
+
+ virtual const XalanDOMString&
+ getURI() const;
+
+ private:
+
+ const NamespacesStackType& m_stack;
+
+ const XalanDOMString& m_uri;
+ };
/**
* Get the namespace for a prefix by searching a vector of namespaces.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]