00001 /* 00002 Copyright 1996-2001 00003 Simon Whiteside 00004 00005 * $Id: skNode_h-source.html,v 1.2 2001/11/05 19:22:33 sdw Exp $ 00006 */ 00007 #ifndef skNODE_H 00008 #define skNODE_H 00009 00010 #include "skAlist.h" 00011 00015 class CLASSEXPORT skNode 00016 { 00017 public: 00021 enum NodeType {ELEMENT_NODE,CDATA_SECTION_NODE, TEXT_NODE}; 00026 virtual skString getNodeValue() const; 00031 virtual void setNodeValue(const skString& s); 00036 virtual NodeType getNodeType() const=0; 00041 virtual skNode * clone()=0; 00046 virtual void write(ostream& out) const=0; 00047 protected: 00049 skNode(); 00050 skNode(const skNode&); 00051 skNode& operator=(const skNode& other); 00052 }; 00053 EXTERN_TEMPLATE template class CLASSEXPORT skTAList<skNode>; 00054 00058 class CLASSEXPORT skNodeList : public skTAList<skNode>{ 00059 }; 00060 00064 class CLASSEXPORT skTextNode : public skNode 00065 { 00066 public: 00070 skTextNode(const skString& text); 00075 virtual skString getNodeValue() const; 00080 virtual void setNodeValue(const skString& s); 00085 virtual NodeType getNodeType() const; 00090 virtual skNode * clone(); 00095 virtual void write(ostream& out) const; 00096 protected: 00098 skString m_Text; 00099 }; 00103 class CLASSEXPORT skCDataNode : public skTextNode 00104 { 00105 public: 00110 skCDataNode(const skString& text); 00120 00127