X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/288b6107e1060b57ec50048d06cfc3f22bc11e0c..0bb84570cea789202aa26409a4879202a9810b70:/include/wx/xml/xml.h diff --git a/include/wx/xml/xml.h b/include/wx/xml/xml.h index 030f4d34c1..95fa3cfb2c 100644 --- a/include/wx/xml/xml.h +++ b/include/wx/xml/xml.h @@ -69,8 +69,8 @@ public: : m_name(name), m_value(value), m_next(next) {} virtual ~wxXmlAttribute() {} - wxString GetName() const { return m_name; } - wxString GetValue() const { return m_value; } + const wxString& GetName() const { return m_name; } + const wxString& GetValue() const { return m_value; } wxXmlAttribute *GetNext() const { return m_next; } void SetName(const wxString& name) { m_name = name; } @@ -103,10 +103,16 @@ class WXDLLIMPEXP_XML wxXmlNode { public: wxXmlNode() - : m_attrs(NULL), m_parent(NULL), m_children(NULL), m_next(NULL) {} + : m_attrs(NULL), m_parent(NULL), m_children(NULL), m_next(NULL), + m_lineNo(-1), m_noConversion(false) + { + } + wxXmlNode(wxXmlNode *parent, wxXmlNodeType type, const wxString& name, const wxString& content = wxEmptyString, - wxXmlAttribute *attrs = NULL, wxXmlNode *next = NULL); + wxXmlAttribute *attrs = NULL, wxXmlNode *next = NULL, + int lineNo = -1); + virtual ~wxXmlNode(); // copy ctor & operator=. Note that this does NOT copy syblings @@ -118,14 +124,14 @@ public: // user-friendly creation: wxXmlNode(wxXmlNodeType type, const wxString& name, - const wxString& content = wxEmptyString); + const wxString& content = wxEmptyString, + int lineNo = -1); virtual void AddChild(wxXmlNode *child); - virtual bool InsertChild(wxXmlNode *child, wxXmlNode *before_node); + virtual bool InsertChild(wxXmlNode *child, wxXmlNode *followingNode); + virtual bool InsertChildAfter(wxXmlNode *child, wxXmlNode *precedingNode); virtual bool RemoveChild(wxXmlNode *child); - virtual void AddAttribute(const wxString& name, const wxString& value) - { AddProperty(name, value); } - virtual bool DeleteAttribute(const wxString& name) - { return DeleteProperty(name); } + virtual void AddAttribute(const wxString& name, const wxString& value); + virtual bool DeleteAttribute(const wxString& name); // access methods: wxXmlNodeType GetType() const { return m_type; } @@ -149,9 +155,11 @@ public: wxXmlAttribute *GetAttributes() const { return m_attrs; } bool GetAttribute(const wxString& attrName, wxString *value) const; wxString GetAttribute(const wxString& attrName, - const wxString& defaultVal) const; + const wxString& defaultVal = wxEmptyString) const; bool HasAttribute(const wxString& attrName) const; + int GetLineNumber() const { return m_lineNo; } + void SetType(wxXmlNodeType type) { m_type = type; } void SetName(const wxString& name) { m_name = name; } void SetContent(const wxString& con) { m_content = con; } @@ -161,8 +169,11 @@ public: void SetChildren(wxXmlNode *child) { m_children = child; } void SetAttributes(wxXmlAttribute *attr) { m_attrs = attr; } - virtual void AddAttribute(wxXmlAttribute *attr) - { AddProperty(attr); } + virtual void AddAttribute(wxXmlAttribute *attr); + + // If true, don't do encoding conversion to improve efficiency - node content is ACII text + bool GetNoConversion() const { return m_noConversion; } + void SetNoConversion(bool noconversion) { m_noConversion = noconversion; } #if WXWIN_COMPATIBILITY_2_8 wxDEPRECATED( inline wxXmlAttribute *GetProperties() const ); @@ -202,6 +213,8 @@ private: wxString m_content; wxXmlAttribute *m_attrs; wxXmlNode *m_parent, *m_children, *m_next; + int m_lineNo; // line number in original file, or -1 + bool m_noConversion; // don't do encoding conversion - node is plain text void DoCopy(const wxXmlNode& node); }; @@ -255,10 +268,10 @@ public: const wxString& encoding = wxT("UTF-8"), int flags = wxXMLDOC_NONE); virtual bool Load(wxInputStream& stream, const wxString& encoding = wxT("UTF-8"), int flags = wxXMLDOC_NONE); - + // Saves document as .xml file. - virtual bool Save(const wxString& filename, int indentstep = 1) const; - virtual bool Save(wxOutputStream& stream, int indentstep = 1) const; + virtual bool Save(const wxString& filename, int indentstep = 2) const; + virtual bool Save(wxOutputStream& stream, int indentstep = 2) const; bool IsOk() const { return m_root != NULL; }