From 1a16499bf157d4b0c42c487f6fabad2db91f95af Mon Sep 17 00:00:00 2001
From: Tinny Ng <tng@apache.org>
Date: Mon, 15 Jul 2002 19:30:27 +0000
Subject: [PATCH] DOM L3: declare dummy DOMImplementation::getInterface

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174003 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/dom/DOMImplementation.hpp         | 26 +++++++++++++++++++
 .../dom/impl/DOMImplementationImpl.cpp        |  7 ++++-
 .../dom/impl/DOMImplementationImpl.hpp        |  3 +++
 3 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/src/xercesc/dom/DOMImplementation.hpp b/src/xercesc/dom/DOMImplementation.hpp
index 8774ac285..ecf664fbd 100644
--- a/src/xercesc/dom/DOMImplementation.hpp
+++ b/src/xercesc/dom/DOMImplementation.hpp
@@ -199,6 +199,32 @@ public:
                                         const XMLCh *qualifiedName,
                                         DOMDocumentType *doctype) = 0;
 
+    //@}
+    // -----------------------------------------------------------------------
+    // Functions introduced in DOM Level 3
+    // -----------------------------------------------------------------------
+    /** @name Functions introduced in DOM Level 3 */
+    //@{
+    /**
+     * This method makes available a <code>DOMImplementation</code>'s
+     * specialized interface (see ).
+     *
+     * <p><b>"Experimental - subject to change"</b></p>
+     *
+     * @param feature The name of the feature requested (case-insensitive).
+     * @return Returns an alternate <code>DOMImplementation</code> which
+     *   implements the specialized APIs of the specified feature, if any,
+     *   or <code>null</code> if there is no alternate
+     *   <code>DOMImplementation</code> object which implements interfaces
+     *   associated with that feature. Any alternate
+     *   <code>DOMImplementation</code> returned by this method must
+     *   delegate to the primary core <code>DOMImplementation</code> and not
+     *   return results inconsistent with the primary
+     *   <code>DOMImplementation</code>
+     * @since DOM Level 3
+     */
+    virtual DOMImplementation* getInterface(const XMLCh* feature) = 0;
+
     //@}
 
     // -----------------------------------------------------------------------
diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.cpp b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
index b1f9ead0b..4e766d30b 100644
--- a/src/xercesc/dom/impl/DOMImplementationImpl.cpp
+++ b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
@@ -199,6 +199,12 @@ DOMDocument *DOMImplementationImpl::createDocument()
         return new DOMDocumentImpl();
 }
 
+//Introduced in DOM Level 3
+DOMImplementation* DOMImplementationImpl::getInterface(const XMLCh* feature){
+    throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0);
+    return 0;
+}
+
 //
 //  DOMImplementation::getImplementation.  DOMImplementation is supposed to
 //                                              be a pure interface class.  This one static
@@ -208,7 +214,6 @@ DOMImplementation *DOMImplementation::getImplementation()
     return (DOMImplementation*) DOMImplementationImpl::getDOMImplementationImpl();
 }
 
-
 // ------------------------------------------------------------
 // DOMImplementationLS Virtual interface
 // ------------------------------------------------------------
diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.hpp b/src/xercesc/dom/impl/DOMImplementationImpl.hpp
index 17cdee614..dd170f92d 100644
--- a/src/xercesc/dom/impl/DOMImplementationImpl.hpp
+++ b/src/xercesc/dom/impl/DOMImplementationImpl.hpp
@@ -97,6 +97,9 @@ public:
                                                const XMLCh *qualifiedName,
                                                DOMDocumentType *doctype);
 
+    // DOM Level 3
+    virtual DOMImplementation*  getInterface(const XMLCh* feature);
+
     // Non-standard extension
     virtual DOMDocument*        createDocument();
 
-- 
GitLab