#include "wx/string.h"
#include "wx/object.h"
#include "wx/list.h"
+#include "wx/versioninfo.h"
#ifdef WXMAKINGDLL_XML
#define WXDLLIMPEXP_XML WXEXPORT
class WXDLLIMPEXP_FWD_BASE wxInputStream;
class WXDLLIMPEXP_FWD_BASE wxOutputStream;
-
// Represents XML node type.
enum wxXmlNodeType
{
: 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; }
public:
wxXmlNode()
: m_attrs(NULL), m_parent(NULL), m_children(NULL), m_next(NULL),
- m_lineNo(-1)
+ m_lineNo(-1), m_noConversion(false)
{
}
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; }
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 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 );
wxString m_content;
wxXmlAttribute *m_attrs;
wxXmlNode *m_parent, *m_children, *m_next;
- int m_lineNo; // line number in original file, or -1
+ 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);
};
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; }
void SetEncoding(const wxString& enc) { m_encoding = enc; }
#endif
+ static wxVersionInfo GetLibraryVersionInfo();
+
private:
wxString m_version;
wxString m_fileEncoding;