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]

Reply via email to