dbertoni 01/10/29 20:08:06 Added: c/src/XSLT ResultTreeFrag.cpp ResultTreeFrag.hpp Log: Moved here from XPath. Revision Changes Path 1.1 xml-xalan/c/src/XSLT/ResultTreeFrag.cpp Index: ResultTreeFrag.cpp =================================================================== /* * The Apache Software License, Version 1.1 * * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xalan" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 1999, International * Business Machines, Inc., http://www.ibm.com. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ // Class header file. #include "ResultTreeFrag.hpp" #include <XalanDOM/XalanDOMException.hpp> #include <XalanSourceTree/XalanSourceTreeDocumentFragment.hpp> const XalanDOMString ResultTreeFrag::s_emptyString; ResultTreeFrag::ResultTreeFrag(XalanSourceTreeDocumentFragment* theDocumentFragment) : ResultTreeFragBase(), m_documentFragment(theDocumentFragment), XalanNodeList() { } ResultTreeFrag::ResultTreeFrag( const ResultTreeFrag& theSource, bool deepClone) : ResultTreeFragBase(theSource), m_documentFragment(theSource.m_documentFragment == 0 ? 0 : theSource.m_documentFragment->clone(deepClone)) { } ResultTreeFrag::~ResultTreeFrag() { } void ResultTreeFrag::clear() { if (m_documentFragment != 0) { m_documentFragment->clearChildren(); } } const XalanDOMString& ResultTreeFrag::getNodeName() const { return s_emptyString; } const XalanDOMString& ResultTreeFrag::getNodeValue() const { return s_emptyString; } ResultTreeFrag::NodeType ResultTreeFrag::getNodeType() const { return DOCUMENT_FRAGMENT_NODE; } XalanNode* ResultTreeFrag::getParentNode() const { return 0; } const XalanNodeList* ResultTreeFrag::getChildNodes() const { return this; } XalanNode* ResultTreeFrag::getFirstChild() const { if (m_documentFragment != 0) { return m_documentFragment->getFirstChild(); } else { return 0; } } XalanNode* ResultTreeFrag::getLastChild() const { if (m_documentFragment != 0) { return m_documentFragment->getLastChild(); } else { return 0; } } XalanNode* ResultTreeFrag::getPreviousSibling() const { return 0; } XalanNode* ResultTreeFrag::getNextSibling() const { return 0; } const XalanNamedNodeMap* ResultTreeFrag::getAttributes() const { return 0; } XalanDocument* ResultTreeFrag::getOwnerDocument() const { if (m_documentFragment != 0) { return m_documentFragment->getOwnerDocument(); } else { return 0; } } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) XalanNode* #else ResultTreeFrag* #endif ResultTreeFrag::cloneNode(bool deep) const { #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) return new ResultTreeFrag( *this, deep); #else return clone(deep); #endif } XalanNode* ResultTreeFrag::insertBefore( XalanNode* /* newChild */, XalanNode* /* refChild */) { throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR); // Dummy return value... return 0; } XalanNode* ResultTreeFrag::replaceChild( XalanNode* /* newChild */, XalanNode* /* oldChild */) { throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR); // Dummy return value... return 0; } XalanNode* ResultTreeFrag::appendChild(XalanNode* /* newChild */) { throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR); } XalanNode* ResultTreeFrag::removeChild(XalanNode* /* oldChild */) { throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR); } bool ResultTreeFrag::hasChildNodes() const { if (m_documentFragment != 0) { return m_documentFragment->hasChildNodes(); } else { return false; } } void ResultTreeFrag::setNodeValue(const XalanDOMString& /* nodeValue */) { throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR); } void ResultTreeFrag::normalize() { throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR); } bool ResultTreeFrag::supports( const XalanDOMString& /* feature */, const XalanDOMString& /* version */) const { return false; } const XalanDOMString& ResultTreeFrag::getNamespaceURI() const { return s_emptyString; } const XalanDOMString& ResultTreeFrag::getPrefix() const { return s_emptyString; } const XalanDOMString& ResultTreeFrag::getLocalName() const { return s_emptyString; } void ResultTreeFrag::setPrefix(const XalanDOMString& /* prefix */) { throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR); } bool ResultTreeFrag::isIndexed() const { return false; } unsigned long ResultTreeFrag::getIndex() const { return 0; } #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) ResultTreeFragBase* #else ResultTreeFrag* #endif ResultTreeFrag::clone(bool deep) const { return new ResultTreeFrag(*this, deep); } XalanNode* ResultTreeFrag::item(unsigned int index) const { assert(index < getLength()); if (m_documentFragment == 0) { return 0; } else { XalanNode* theCurrentChild = m_documentFragment->getFirstChild(); for(unsigned int i = 0; i < index && theCurrentChild != 0; ++i) { theCurrentChild = theCurrentChild->getNextSibling(); } return theCurrentChild; } } unsigned int ResultTreeFrag::getLength() const { if (m_documentFragment == 0) { return 0; } else { unsigned int theLength = 0; XalanNode* theCurrentChild = m_documentFragment->getFirstChild(); while(theCurrentChild != 0) { ++theLength; theCurrentChild = theCurrentChild->getNextSibling(); } return theLength; } } 1.1 xml-xalan/c/src/XSLT/ResultTreeFrag.hpp Index: ResultTreeFrag.hpp =================================================================== /* * The Apache Software License, Version 1.1 * * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xalan" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 1999, International * Business Machines, Inc., http://www.ibm.com. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ #if !defined(RESULTTREEFRAG_HEADER_GUARD_1357924680) #define RESULTTREEFRAG_HEADER_GUARD_1357924680 // Base include file. Must be first. #include <XSLT/XSLTDefinitions.hpp> #include <XalanDOM/XalanNodeList.hpp> #include <XPath/ResultTreeFragBase.hpp> class XalanSourceTreeDocumentFragment; /** * The holder of result tree fragments. */ class XALAN_XSLT_EXPORT ResultTreeFrag : public ResultTreeFragBase, private XalanNodeList { public: /** * Construct a result tree fragment object from a DOM document. */ explicit ResultTreeFrag(XalanSourceTreeDocumentFragment* theDocumentFragment = 0); /** * Construct a result tree fragment object from another. * * @param theSource source to copy * @param deepClone true if subobjects should be copied, default is false */ ResultTreeFrag( const ResultTreeFrag& theSource, bool deepClone = false); virtual ~ResultTreeFrag(); // These interfaces are new... void clear(); // These interfaces are inherited from XalanDocumentFragment... virtual const XalanDOMString& getNodeName() const; virtual const XalanDOMString& getNodeValue() const; virtual NodeType getNodeType() const; virtual XalanNode* getParentNode() const; virtual const XalanNodeList* getChildNodes() const; virtual XalanNode* getFirstChild() const; virtual XalanNode* getLastChild() const; virtual XalanNode* getPreviousSibling() const; virtual XalanNode* getNextSibling() const; virtual const XalanNamedNodeMap* getAttributes() const; virtual XalanDocument* getOwnerDocument() const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual XalanNode* #else virtual ResultTreeFrag* #endif cloneNode(bool deep) const; virtual XalanNode* insertBefore( XalanNode* newChild, XalanNode* refChild); virtual XalanNode* replaceChild( XalanNode* newChild, XalanNode* oldChild); virtual XalanNode* removeChild(XalanNode* oldChild); virtual XalanNode* appendChild(XalanNode* newChild); virtual bool hasChildNodes() const; virtual void setNodeValue(const XalanDOMString& nodeValue); virtual void normalize(); virtual bool supports( const XalanDOMString& feature, const XalanDOMString& version) const; virtual const XalanDOMString& getNamespaceURI() const; virtual const XalanDOMString& getPrefix() const; virtual const XalanDOMString& getLocalName() const; virtual void setPrefix(const XalanDOMString& prefix); virtual bool isIndexed() const; virtual unsigned long getIndex() const; #if defined(XALAN_NO_COVARIANT_RETURN_TYPE) virtual ResultTreeFragBase* #else virtual ResultTreeFrag* #endif clone(bool deep) const; XalanSourceTreeDocumentFragment* getDocumentFragment() const { return m_documentFragment; } void setDocumentFragment(XalanSourceTreeDocumentFragment* theDocumentFragment) { m_documentFragment = theDocumentFragment; } private: // These methods are inherited from XalanNodeList... virtual XalanNode* item(unsigned int index) const; virtual unsigned int getLength() const; // Not defined ResultTreeFrag& operator=(const ResultTreeFrag& theRHS); bool operator==(const ResultTreeFrag& theRHS) const; // Data members... XalanSourceTreeDocumentFragment* m_documentFragment; static const XalanDOMString s_emptyString; }; #endif // RESULTTREEFRAG_HEADER_GUARD_1357924680
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
