You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2005/08/02 20:34:42 UTC

svn commit: r227060 - in /xerces/c/trunk: Projects/Win32/BCC.551/Xerces-all/XercesLib/ Projects/Win32/VC6/xerces-all/XercesLib/ Projects/Win32/VC7.1/xerces-all/XercesLib/ src/ src/xercesc/dom/ src/xercesc/dom/impl/

Author: amassari
Date: Tue Aug  2 11:33:05 2005
New Revision: 227060

URL: http://svn.apache.org/viewcvs?rev=227060&view=rev
Log:
DOM Level 3 Core: DOMImplementationRegistry, DOMImplementationSource and DOMImplementationList

Added:
    xerces/c/trunk/src/xercesc/dom/DOMImplementationList.hpp   (with props)
    xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.cpp   (with props)
    xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.hpp   (with props)
Modified:
    xerces/c/trunk/Projects/Win32/BCC.551/Xerces-all/XercesLib/XercesLib.mak
    xerces/c/trunk/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
    xerces/c/trunk/Projects/Win32/VC7.1/xerces-all/XercesLib/XercesLib.vcproj
    xerces/c/trunk/src/Makefile.am
    xerces/c/trunk/src/Makefile.in
    xerces/c/trunk/src/xercesc/dom/DOMImplementationRegistry.hpp
    xerces/c/trunk/src/xercesc/dom/DOMImplementationSource.hpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.cpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.hpp
    xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationRegistry.cpp

Modified: xerces/c/trunk/Projects/Win32/BCC.551/Xerces-all/XercesLib/XercesLib.mak
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/Projects/Win32/BCC.551/Xerces-all/XercesLib/XercesLib.mak?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/Projects/Win32/BCC.551/Xerces-all/XercesLib/XercesLib.mak (original)
+++ xerces/c/trunk/Projects/Win32/BCC.551/Xerces-all/XercesLib/XercesLib.mak Tue Aug  2 11:33:05 2005
@@ -286,6 +286,7 @@
     $(TARGETPATH)\obj\XSDLocator.obj \
     $(TARGETPATH)\obj\DOMRangeException.obj \
     $(TARGETPATH)\obj\DOMImplementationImpl.obj \
+    $(TARGETPATH)\obj\DOMImplementationListImpl.obj \
     $(TARGETPATH)\obj\DOMImplementationRegistry.obj \
     $(TARGETPATH)\obj\DOMLSParserImpl.obj \
     $(TARGETPATH)\obj\DOMLSSerializerImpl.obj \

Modified: xerces/c/trunk/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp (original)
+++ xerces/c/trunk/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp Tue Aug  2 11:33:05 2005
@@ -2832,6 +2832,14 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationListImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationListImpl.hpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationRegistry.cpp
 # End Source File
 # Begin Source File
@@ -3057,6 +3065,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\..\..\..\src\xercesc\dom\DOMImplementationList.hpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\..\..\..\src\xercesc\dom\DOMImplementationLS.hpp
 # End Source File
 # Begin Source File
@@ -3082,6 +3094,10 @@
 # Begin Source File
 
 SOURCE=..\..\..\..\..\src\xercesc\dom\DOMLSInput.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\src\xercesc\dom\DOMLSOutput.hpp
 # End Source File
 # Begin Source File
 

Modified: xerces/c/trunk/Projects/Win32/VC7.1/xerces-all/XercesLib/XercesLib.vcproj
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/Projects/Win32/VC7.1/xerces-all/XercesLib/XercesLib.vcproj?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/Projects/Win32/VC7.1/xerces-all/XercesLib/XercesLib.vcproj (original)
+++ xerces/c/trunk/Projects/Win32/VC7.1/xerces-all/XercesLib/XercesLib.vcproj Tue Aug  2 11:33:05 2005
@@ -2374,6 +2374,9 @@
 				RelativePath="..\..\..\..\..\src\xercesc\dom\DOMImplementation.hpp">
 			</File>
 			<File
+				RelativePath="..\..\..\..\..\src\xercesc\dom\DOMImplementationList.hpp">
+			</File>
+			<File
 				RelativePath="..\..\..\..\..\src\xercesc\dom\DOMImplementationLS.hpp">
 			</File>
 			<File
@@ -2587,7 +2590,13 @@
 					RelativePath="..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationImpl.cpp">
 				</File>
 				<File
-					RelativePath="..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationimpl.hpp">
+					RelativePath="..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationImpl.hpp">
+				</File>
+				<File
+					RelativePath="..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationListImpl.cpp">
+				</File>
+				<File
+					RelativePath="..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationListImpl.hpp">
 				</File>
 				<File
 					RelativePath="..\..\..\..\..\src\xercesc\dom\impl\DOMImplementationRegistry.cpp">

Modified: xerces/c/trunk/src/Makefile.am
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/Makefile.am?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/src/Makefile.am (original)
+++ xerces/c/trunk/src/Makefile.am Tue Aug  2 11:33:05 2005
@@ -271,6 +271,7 @@
 	xercesc/dom/DOMErrorHandler.hpp \
 	xercesc/dom/DOMException.hpp \
 	xercesc/dom/DOMImplementation.hpp \
+	xercesc/dom/DOMImplementationList.hpp \
 	xercesc/dom/DOMImplementationLS.hpp \
 	xercesc/dom/DOMImplementationRegistry.hpp \
 	xercesc/dom/DOMImplementationSource.hpp \
@@ -333,6 +334,7 @@
 	xercesc/dom/impl/DOMEntityReferenceImpl.hpp \
 	xercesc/dom/impl/DOMErrorImpl.hpp \
 	xercesc/dom/impl/DOMImplementationImpl.hpp \
+	xercesc/dom/impl/DOMImplementationListImpl.hpp \
 	xercesc/dom/impl/DOMLocatorImpl.hpp \
 	xercesc/dom/impl/DOMNamedNodeMapImpl.hpp \
 	xercesc/dom/impl/DOMNodeIDMap.hpp \
@@ -371,6 +373,7 @@
 	xercesc/dom/impl/DOMEntityReferenceImpl.cpp \
 	xercesc/dom/impl/DOMErrorImpl.cpp \
 	xercesc/dom/impl/DOMImplementationImpl.cpp \
+	xercesc/dom/impl/DOMImplementationListImpl.cpp \
 	xercesc/dom/impl/DOMImplementationRegistry.cpp \
 	xercesc/dom/impl/DOMLocatorImpl.cpp \
 	xercesc/dom/impl/DOMNamedNodeMapImpl.cpp \

Modified: xerces/c/trunk/src/Makefile.in
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/Makefile.in?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/src/Makefile.in (original)
+++ xerces/c/trunk/src/Makefile.in Tue Aug  2 11:33:05 2005
@@ -203,6 +203,7 @@
 	xercesc/dom/impl/DOMEntityReferenceImpl.lo \
 	xercesc/dom/impl/DOMErrorImpl.lo \
 	xercesc/dom/impl/DOMImplementationImpl.lo \
+	xercesc/dom/impl/DOMImplementationListImpl.lo \
 	xercesc/dom/impl/DOMImplementationRegistry.lo \
 	xercesc/dom/impl/DOMLocatorImpl.lo \
 	xercesc/dom/impl/DOMNamedNodeMapImpl.lo \
@@ -1123,6 +1124,7 @@
 	xercesc/dom/DOMErrorHandler.hpp \
 	xercesc/dom/DOMException.hpp \
 	xercesc/dom/DOMImplementation.hpp \
+	xercesc/dom/DOMImplementationList.hpp \
 	xercesc/dom/DOMImplementationLS.hpp \
 	xercesc/dom/DOMImplementationRegistry.hpp \
 	xercesc/dom/DOMImplementationSource.hpp \
@@ -1184,6 +1186,7 @@
 	xercesc/dom/impl/DOMEntityReferenceImpl.hpp \
 	xercesc/dom/impl/DOMErrorImpl.hpp \
 	xercesc/dom/impl/DOMImplementationImpl.hpp \
+	xercesc/dom/impl/DOMImplementationListImpl.hpp \
 	xercesc/dom/impl/DOMLocatorImpl.hpp \
 	xercesc/dom/impl/DOMNamedNodeMapImpl.hpp \
 	xercesc/dom/impl/DOMNodeIDMap.hpp \
@@ -1222,6 +1225,7 @@
 	xercesc/dom/impl/DOMEntityReferenceImpl.cpp \
 	xercesc/dom/impl/DOMErrorImpl.cpp \
 	xercesc/dom/impl/DOMImplementationImpl.cpp \
+	xercesc/dom/impl/DOMImplementationListImpl.cpp \
 	xercesc/dom/impl/DOMImplementationRegistry.cpp \
 	xercesc/dom/impl/DOMLocatorImpl.cpp \
 	xercesc/dom/impl/DOMNamedNodeMapImpl.cpp \
@@ -2166,6 +2170,9 @@
 xercesc/dom/impl/DOMImplementationImpl.lo:  \
 	xercesc/dom/impl/$(am__dirstamp) \
 	xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp)
+xercesc/dom/impl/DOMImplementationListImpl.lo:  \
+	xercesc/dom/impl/$(am__dirstamp) \
+	xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp)
 xercesc/dom/impl/DOMImplementationRegistry.lo:  \
 	xercesc/dom/impl/$(am__dirstamp) \
 	xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp)
@@ -3151,6 +3158,8 @@
 	-rm -f xercesc/dom/impl/DOMErrorImpl.lo
 	-rm -f xercesc/dom/impl/DOMImplementationImpl.$(OBJEXT)
 	-rm -f xercesc/dom/impl/DOMImplementationImpl.lo
+	-rm -f xercesc/dom/impl/DOMImplementationListImpl.$(OBJEXT)
+	-rm -f xercesc/dom/impl/DOMImplementationListImpl.lo
 	-rm -f xercesc/dom/impl/DOMImplementationRegistry.$(OBJEXT)
 	-rm -f xercesc/dom/impl/DOMImplementationRegistry.lo
 	-rm -f xercesc/dom/impl/DOMLSSerializerImpl.$(OBJEXT)
@@ -3755,6 +3764,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMEntityReferenceImpl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMErrorImpl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMImplementationImpl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMImplementationListImpl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMImplementationRegistry.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMLSSerializerImpl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMLocatorImpl.Plo@am__quote@

Added: xerces/c/trunk/src/xercesc/dom/DOMImplementationList.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/DOMImplementationList.hpp?rev=227060&view=auto
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/DOMImplementationList.hpp (added)
+++ xerces/c/trunk/src/xercesc/dom/DOMImplementationList.hpp Tue Aug  2 11:33:05 2005
@@ -0,0 +1,125 @@
+#ifndef DOMImplementationList_HEADER_GUARD_
+#define DOMImplementationList_HEADER_GUARD_
+
+/*
+ * Copyright 2001-2002,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * $Id$
+ */
+
+#include <xercesc/util/XercesDefs.hpp>
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+
+class DOMImplementation;
+
+
+/**
+ * The <code>DOMImplementationList</code> interface provides the abstraction of an ordered
+ * collection of DOM implementations, without defining or constraining how this collection 
+ * is implemented. The items in the <code>DOMImplementationList</code> are accessible via 
+ * an integral index, starting from 0.
+ */
+
+class  CDOM_EXPORT DOMImplementationList {
+protected:
+    // -----------------------------------------------------------------------
+    //  Hidden constructors
+    // -----------------------------------------------------------------------
+    /** @name Hidden constructors */
+    //@{    
+    DOMImplementationList() {};
+    //@}
+
+private:
+    // -----------------------------------------------------------------------
+    // Unimplemented constructors and operators
+    // -----------------------------------------------------------------------
+    /** @name Unimplemented constructors and operators */
+    //@{
+    DOMImplementationList(const DOMImplementationList &);
+    DOMImplementationList & operator = (const DOMImplementationList &);
+    //@}
+
+public:
+    // -----------------------------------------------------------------------
+    //  All constructors are hidden, just the destructor is available
+    // -----------------------------------------------------------------------
+    /** @name Destructor */
+    //@{
+    /**
+     * Destructor
+     *
+     */
+    virtual ~DOMImplementationList()  {};
+    //@}
+
+    // -----------------------------------------------------------------------
+    //  Virtual DOMImplementationList interface
+    // -----------------------------------------------------------------------
+    /** @name Functions introduced in DOM Level 3 */
+    //@{
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    /**
+     * Returns the <code>index</code> item in the collection.
+     *
+     * If <code>index</code> is greater than or equal to the number of DOMImplementation in
+     * the list, this returns <code>null</code>.
+     *
+     * @param index Index into the collection.
+     * @return The DOMImplementation at the <code>index</code>th position in the
+     *   <code>DOMImplementationList</code>, or <code>null</code> if that is not a valid
+     *   index.
+     * @since DOM Level 3
+     */
+    virtual DOMImplementation *item(XMLSize_t index) const = 0;
+
+    /**
+     * Returns the number of DOMImplementation in the list.
+     *
+     * The range of valid child node indices is 0 to <code>length-1</code> inclusive.
+     * @since DOM Level 3
+     */
+    virtual XMLSize_t getLength() const = 0;
+    //@}
+
+    // -----------------------------------------------------------------------
+    //  Non-standard Extension
+    // -----------------------------------------------------------------------
+    /** @name Non-standard Extension */
+    //@{
+    /**
+     * Called to indicate that this list is no longer in use
+     * and that the implementation may relinquish any resources associated with it and
+     * its associated children.
+     *
+     * Access to a released object will lead to unexpected result.
+     *
+     */
+    virtual void release() = 0;
+    //@}     
+
+};
+
+XERCES_CPP_NAMESPACE_END
+
+#endif
+
+

Propchange: xerces/c/trunk/src/xercesc/dom/DOMImplementationList.hpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/c/trunk/src/xercesc/dom/DOMImplementationList.hpp
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: xerces/c/trunk/src/xercesc/dom/DOMImplementationRegistry.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/DOMImplementationRegistry.hpp?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/DOMImplementationRegistry.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/DOMImplementationRegistry.hpp Tue Aug  2 11:33:05 2005
@@ -30,6 +30,7 @@
   * point.
   *
   * @see DOMImplementation
+  * @see DOMImplementationList
   * @see DOMImplementationSource
   * @since DOM Level 3
   */
@@ -41,6 +42,7 @@
 
 class DOMImplementation;
 class DOMImplementationSource;
+class DOMImplementationList;
 
 class CDOM_EXPORT DOMImplementationRegistry
 {
@@ -54,8 +56,6 @@
      * Return the first registered implementation that has the desired features,
      * or null if none is found.
      *
-     * <p><b>"Experimental - subject to change"</b></p>
-     *
      * @param features A string that specifies which features are required.
      *                 This is a space separated list in which each feature is
      *                 specified by its name optionally followed by a space
@@ -68,9 +68,21 @@
     static DOMImplementation* getDOMImplementation(const XMLCh* features);
 
     /**
-     * Register an implementation.
+     * Return the list of registered implementation that have the desired features.
      *
-     * <p><b>"Experimental - subject to change"</b></p>
+     * @param features A string that specifies which features are required.
+     *                 This is a space separated list in which each feature is
+     *                 specified by its name optionally followed by a space
+     *                 and a version number.
+     *                 This is something like: "XML 1.0 Traversal 2.0"
+     * @return A DOMImplementationList object that contains the DOMImplementation
+     *         that have the desired features
+     * @since DOM Level 3
+     */
+    static DOMImplementationList* getDOMImplementationList(const XMLCh* features);
+
+    /**
+     * Register an implementation.
      *
      * @param source   A DOMImplementation Source object to be added to the registry.
      *                 The registry does NOT adopt the source object.  Users still own it.

Modified: xerces/c/trunk/src/xercesc/dom/DOMImplementationSource.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/DOMImplementationSource.hpp?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/DOMImplementationSource.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/DOMImplementationSource.hpp Tue Aug  2 11:33:05 2005
@@ -23,11 +23,10 @@
 
 /**
   * This interface permits a DOM implementer to supply one or more
-  * implementations, based upon requested features. Each implemented
+  * implementations, based upon requested features and versions. Each implemented
   * <code>DOMImplementationSource</code> object is listed in the
   * binding-specific list of available sources so that its
   * <code>DOMImplementation</code> objects are made available.
-  * <p>See also the <a href='http://www.w3.org/TR/2002/WD-DOM-Level-3-Core-20020409'>Document Object Model (DOM) Level 3 Core Specification</a>.
   *
   * @since DOM Level 3
   */
@@ -37,6 +36,7 @@
 
 
 class DOMImplementation;
+class DOMImplementationList;
 
 class CDOM_EXPORT DOMImplementationSource
 {
@@ -79,9 +79,7 @@
     /** @name Functions introduced in DOM Level 3 */
     //@{
     /**
-     * A method to request a DOM implementation.
-     *
-     * <p><b>"Experimental - subject to change"</b></p>
+     * A method to request the first DOM implementation that supports the specified features.
      *
      * @param features A string that specifies which features are required.
      *   This is a space separated list in which each feature is specified
@@ -92,6 +90,18 @@
      * @since DOM Level 3
      */
     virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const = 0;
+
+    /**
+     * A method to request a list of DOM implementations that support the specified features and versions,
+     *
+     * @param features A string that specifies which features are required.
+     *   This is a space separated list in which each feature is specified
+     *   by its name optionally followed by a space and a version number.
+     *   This is something like: "XML 1.0 Traversal 2.0"
+     * @return A list of DOM implementations that support the desired features
+     * @since DOM Level 3
+     */
+    virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const = 0;
     //@}
 
 };

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.cpp?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.cpp Tue Aug  2 11:33:05 2005
@@ -22,6 +22,7 @@
 #include "DOMDocumentImpl.hpp"
 #include "DOMDocumentTypeImpl.hpp"
 #include "DOMLSSerializerImpl.hpp"
+#include "DOMImplementationListImpl.hpp"
 
 #include <xercesc/dom/DOMDocument.hpp>
 #include <xercesc/dom/DOMDocumentType.hpp>
@@ -351,6 +352,14 @@
     return impl;
 }
 
+DOMImplementationList* DOMImplementationImpl::getDOMImplementationList(const XMLCh* features) const
+{
+    DOMImplementationListImpl* list = new DOMImplementationListImpl;
+    DOMImplementation* myImpl=getDOMImplementation(features);
+    if(myImpl)
+        list->add(myImpl);
+    return list;
+}
 
 XERCES_CPP_NAMESPACE_END
 

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.hpp?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.hpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationImpl.hpp Tue Aug  2 11:33:05 2005
@@ -88,6 +88,7 @@
     // DOMImplementationSource Virtual interface
     // ------------------------------------------------------------
     virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const;
+    virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const;
 
 };
 

Added: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.cpp?rev=227060&view=auto
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.cpp (added)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.cpp Tue Aug  2 11:33:05 2005
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2001-2002,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * $Id$
+ */
+
+#include "DOMImplementationListImpl.hpp"
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+DOMImplementationListImpl::DOMImplementationListImpl()
+{
+    fList=new RefVectorOf<DOMImplementation>(3, false);
+}
+
+
+DOMImplementationListImpl:: ~DOMImplementationListImpl()
+{
+    delete fList;
+}
+
+
+void DOMImplementationListImpl::add(DOMImplementation* impl) {
+    fList->addElement(impl);
+}
+
+XMLSize_t DOMImplementationListImpl::getLength() const{
+    return fList->size();
+}
+
+
+DOMImplementation *DOMImplementationListImpl::item(XMLSize_t index) const{
+    if(index<fList->size())
+        return fList->elementAt(index);
+    return 0;
+}
+
+void DOMImplementationListImpl::release() {
+    delete this;
+}
+
+XERCES_CPP_NAMESPACE_END
+
+

Propchange: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.cpp
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.hpp?rev=227060&view=auto
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.hpp (added)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.hpp Tue Aug  2 11:33:05 2005
@@ -0,0 +1,55 @@
+#ifndef DOMImplementationListImpl_HEADER_GUARD_
+#define DOMImplementationListImpl_HEADER_GUARD_
+/*
+ * Copyright 2001-2002,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * $Id$
+ */
+
+#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/util/RefVectorOf.hpp>
+#include <xercesc/dom/DOMImplementationList.hpp>
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+
+class DOMImplementation;
+
+class CDOM_EXPORT DOMImplementationListImpl: public DOMImplementationList
+{
+private:
+    RefVectorOf<DOMImplementation>   *fList;
+
+    // Unused, and unimplemented constructors, operators, etc.
+    DOMImplementationListImpl(const DOMImplementationListImpl & other);
+    DOMImplementationListImpl & operator = (const DOMImplementationListImpl & other);
+
+public:
+    DOMImplementationListImpl();
+    void add(DOMImplementation* impl);
+
+    virtual             ~DOMImplementationListImpl();
+    virtual DOMImplementation *  item(XMLSize_t index) const;
+    virtual XMLSize_t getLength() const;
+    virtual void release();
+};
+
+XERCES_CPP_NAMESPACE_END
+
+#endif
+
+

Propchange: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.hpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationListImpl.hpp
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationRegistry.cpp?rev=227060&r1=227059&r2=227060&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationRegistry.cpp (original)
+++ xerces/c/trunk/src/xercesc/dom/impl/DOMImplementationRegistry.cpp Tue Aug  2 11:33:05 2005
@@ -26,6 +26,7 @@
 #include <xercesc/dom/DOMImplementationSource.hpp>
 #include <xercesc/dom/DOMImplementation.hpp>
 #include "DOMImplementationImpl.hpp"
+#include "DOMImplementationListImpl.hpp"
 
 XERCES_CPP_NAMESPACE_BEGIN
 
@@ -137,6 +138,32 @@
     }
 
     return 0;
+}
+
+DOMImplementationList* DOMImplementationRegistry::getDOMImplementationList(const XMLCh* features) {
+
+    DOMImplementationListImpl* list = new DOMImplementationListImpl;
+
+    XMLMutexLock lock(&getDOMImplSrcVectorMutex());
+
+    unsigned int len = getDOMImplSrcVector()->size();
+
+    // Put our defined source there
+    if (len == 0)
+        getDOMImplSrcVector()->addElement((DOMImplementationSource*)DOMImplementationImpl::getDOMImplementationImpl());
+
+    len = getDOMImplSrcVector()->size();
+
+    for (unsigned int i = len; i > 0; i--) {
+        DOMImplementationSource* source = getDOMImplSrcVector()->elementAt(i-1);
+        DOMImplementationList* oneList = source->getDOMImplementationList(features);
+        XMLSize_t oneListLen=oneList->getLength();
+        for(XMLSize_t j=0; j<oneListLen; j++)
+            list->add(oneList->item(j));
+        oneList->release();
+    }
+
+    return list;
 }
 
 void DOMImplementationRegistry::addSource (DOMImplementationSource* source) {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org