Xalan-C++ API Documentation

The Xalan C++ XSLT Processor Version 1.9

Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

XalanSourceTreeElement.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright 1999-2004 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 #if !defined(XALANSOURCETREEELEMENT_HEADER_GUARD_1357924680)
00017 #define XALANSOURCETREEELEMENT_HEADER_GUARD_1357924680
00018 
00019 
00020 
00021 #include <xalanc/XalanSourceTree/XalanSourceTreeDefinitions.hpp>
00022 
00023 
00024 
00025 #include <xalanc/XalanDOM/XalanDOMString.hpp>
00026 #include <xalanc/XalanDOM/XalanElement.hpp>
00027 #include <xalanc/XalanDOM/XalanNamedNodeMap.hpp>
00028 
00029 
00030 
00031 XALAN_CPP_NAMESPACE_BEGIN
00032 
00033 
00034 
00035 class XalanSourceTreeAttr;
00036 class XalanSourceTreeComment;
00037 class XalanSourceTreeDocument;
00038 class XalanSourceTreeDocumentFragment;
00039 class XalanSourceTreeProcessingInstruction;
00040 class XalanSourceTreeText;
00041 
00042 
00043 
00044 class XALAN_XALANSOURCETREE_EXPORT XalanSourceTreeElement : public XalanElement
00045 {
00046 public:
00047 
00060     XalanSourceTreeElement(
00061             MemoryManagerType&          theManager,
00062             const XalanDOMString&       theTagName,
00063             XalanSourceTreeDocument*    theOwnerDocument,
00064             XalanNode*                  theParentNode = 0,
00065             XalanNode*                  thePreviousSibling = 0,
00066             XalanNode*                  theNextSibling = 0,
00067             IndexType                   theIndex = 0);
00068 
00069     virtual
00070     ~XalanSourceTreeElement();
00071 
00072     MemoryManagerType& 
00073     getMemoryManager()
00074     {
00075         return m_memoryManager;
00076     }
00080     virtual const XalanDOMString&
00081     getNodeName() const;
00082 
00086     virtual const XalanDOMString&
00087     getNodeValue() const;
00088 
00092     virtual NodeType
00093     getNodeType() const;
00094 
00104     virtual XalanNode*
00105     getParentNode() const;
00106 
00120     virtual const XalanNodeList*
00121     getChildNodes() const;
00122 
00128     virtual XalanNode*
00129     getFirstChild() const;
00130 
00136     virtual XalanNode*
00137     getLastChild() const;
00138 
00144     virtual XalanNode*
00145     getPreviousSibling() const;
00146 
00152     virtual XalanNode*
00153     getNextSibling() const;
00154 
00159     virtual const XalanNamedNodeMap*
00160     getAttributes() const = 0;
00161 
00171     virtual XalanDocument*
00172     getOwnerDocument() const;
00173 
00175 
00177 
00196 #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
00197     virtual XalanNode*
00198 #else
00199     virtual XalanSourceTreeElement*
00200 #endif
00201     cloneNode(bool deep) const = 0;
00202 
00204 
00206 
00223     virtual XalanNode*
00224     insertBefore(
00225             XalanNode*  newChild,
00226             XalanNode*  refChild);
00227 
00241     virtual XalanNode*
00242     replaceChild(
00243             XalanNode*  newChild,
00244             XalanNode*  oldChild);
00245 
00253     virtual XalanNode*
00254     removeChild(XalanNode*  oldChild);
00255 
00267     virtual XalanNode*
00268     appendChild(XalanNode*  newChild);
00269 
00271 
00273 
00281     virtual bool
00282     hasChildNodes() const;
00283 
00284 
00286 
00288 
00289 
00303     virtual void
00304     setNodeValue(const XalanDOMString&      nodeValue);
00305 
00307 
00309 
00326     virtual void
00327     normalize();
00328 
00342     virtual bool
00343     isSupported(
00344             const XalanDOMString&   feature,
00345             const XalanDOMString&   version) const;
00346 
00360     virtual const XalanDOMString&
00361     getNamespaceURI() const = 0;
00362 
00367     virtual const XalanDOMString&
00368     getPrefix() const = 0;
00369 
00377     virtual const XalanDOMString&
00378     getLocalName() const = 0;
00379 
00409     virtual void
00410     setPrefix(const XalanDOMString& prefix);
00411 
00412     virtual bool
00413     isIndexed() const;
00414 
00415     virtual IndexType
00416     getIndex() const;
00417 
00419 
00420     // These interfaces are inherited from XalanElement...
00421 
00430     virtual const XalanDOMString&
00431     getTagName() const;
00432 
00440     virtual const XalanDOMString&
00441     getAttribute(const XalanDOMString&      name) const = 0;
00442 
00450     virtual XalanAttr*
00451     getAttributeNode(const XalanDOMString&      name) const = 0;
00452 
00463     virtual XalanNodeList*
00464     getElementsByTagName(const XalanDOMString&  name) const;
00465 
00467 
00469 
00491     virtual void
00492     setAttribute(
00493             const XalanDOMString&   name, 
00494             const XalanDOMString&   value);
00495 
00515     virtual XalanAttr*
00516     setAttributeNode(XalanAttr*     newAttr);
00517 
00519 
00521     
00537     virtual XalanAttr*
00538     removeAttributeNode(XalanAttr*  oldAttr);
00539 
00552     virtual void
00553     removeAttribute(const XalanDOMString&   name);
00554 
00556 
00558 
00569     virtual const XalanDOMString&
00570     getAttributeNS(
00571             const XalanDOMString&   namespaceURI,
00572             const XalanDOMString&   localName) const = 0;
00573 
00614     virtual void
00615     setAttributeNS(
00616             const XalanDOMString&   namespaceURI,
00617             const XalanDOMString&   qualifiedName,
00618             const XalanDOMString&   value);
00619 
00634     virtual void
00635     removeAttributeNS(
00636             const XalanDOMString&   namespaceURI,
00637             const XalanDOMString&   localName);
00638 
00649     virtual XalanAttr*
00650     getAttributeNodeNS(
00651             const XalanDOMString&   namespaceURI,
00652             const XalanDOMString&   localName) const = 0;
00653 
00673     virtual XalanAttr*
00674     setAttributeNodeNS(XalanAttr*   newAttr);
00675 
00691     virtual XalanNodeList*
00692     getElementsByTagNameNS(
00693             const XalanDOMString&   namespaceURI,
00694             const XalanDOMString&   localName) const;
00695 
00697 
00698 
00699     // public interfaces not inherited from XalanElement...
00700 
00701     XalanSourceTreeDocument*
00702     getDocument() const
00703     {
00704         return m_ownerDocument;
00705     }
00706 
00707     void
00708     setParent(XalanSourceTreeElement*   theParent)
00709     {
00710         m_parentNode = theParent;
00711     }
00712 
00713     void
00714     setParent(XalanSourceTreeDocumentFragment*  theParent);
00715 
00716     void
00717     setPreviousSibling(XalanSourceTreeComment*  thePreviousSibling);
00718 
00719     void
00720     setPreviousSibling(XalanSourceTreeElement*  thePreviousSibling);
00721 
00722     void
00723     setPreviousSibling(XalanSourceTreeProcessingInstruction*    thePreviousSibling);
00724 
00725     void
00726     setPreviousSibling(XalanSourceTreeText*     thePreviousSibling);
00727 
00728     void
00729     appendSiblingNode(XalanSourceTreeComment*   theSibling);
00730 
00731     void
00732     appendSiblingNode(XalanSourceTreeElement*   theSibling);
00733 
00734     void
00735     appendSiblingNode(XalanSourceTreeProcessingInstruction*     theSibling);
00736 
00737     void
00738     appendSiblingNode(XalanSourceTreeText*  theSibling);
00739 
00740     void
00741     appendChildNode(XalanSourceTreeComment*     theChild);
00742 
00743     void
00744     appendChildNode(XalanSourceTreeElement*     theChild);
00745 
00746     void
00747     appendChildNode(XalanSourceTreeProcessingInstruction*   theChild);
00748 
00749     void
00750     appendChildNode(XalanSourceTreeText*    theChild);
00751 
00752     void
00753     setIndex(IndexType  theIndex)
00754     {
00755         m_index = theIndex;
00756     }
00757 
00763     void
00764     clearChildren()
00765     {
00766         m_firstChild = 0;
00767     }
00768 
00769 protected:
00770 
00771     XalanSourceTreeElement(
00772             MemoryManagerType&              theManager,
00773             const XalanSourceTreeElement&   theSource,
00774             bool                            deep = false);
00775 
00776     static const XalanDOMString     s_emptyString;
00777 
00778     // Data members...
00779     const XalanDOMString&       m_tagName;
00780 
00781 private:
00782 
00783     // Not implemented...
00784     XalanSourceTreeElement&
00785     operator=(const XalanSourceTreeElement&     theSource);
00786 
00787     bool
00788     operator==(const XalanSourceTreeElement&    theRHS) const;
00789 
00790 
00791     // Data members...
00792     MemoryManagerType&          m_memoryManager;
00793 
00794     XalanSourceTreeDocument*    m_ownerDocument;
00795 
00796     XalanNode*                  m_parentNode;
00797 
00798     XalanNode*                  m_previousSibling;
00799 
00800     XalanNode*                  m_nextSibling;
00801 
00802     XalanNode*                  m_firstChild;
00803 
00804     IndexType                   m_index;
00805 };
00806 
00807 
00808 
00809 XALAN_CPP_NAMESPACE_END
00810 
00811 
00812 
00813 #endif  // !defined(XALANSOURCETREEELEMENT_HEADER_GUARD_1357924680)

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.9
Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.