diff --git a/src/xercesc/dom/DOMImplementation.hpp b/src/xercesc/dom/DOMImplementation.hpp index 8774ac285c80ab9e95187d540d148a3db117f173..ecf664fbde4c1a4898ee68651fa3c57be6756c40 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 b1f9ead0bbc7b48f7ac8a566f34e5789cc4eac56..4e766d30b0c99dcfa94ecab547f9f80c84ccb32b 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 17cdee614d605d6431c6fc06b77f46f430b10fea..dd170f92d60a95edcfba88a6d7eb23da1f138834 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();