Mercurial > hg > svcore
changeset 123:0f37e92e1782
* 1502816 file export is too slow and memory-hungry
Use text stream when writing to file instead of accumulating into a string.
* 1500625 Auto-align in MIDI layer confusing
Make value extents convert to Hz in return value
* 1494623: Duplicate display of frame 0 from vamp plugin output
author | Chris Cannam |
---|---|
date | Thu, 15 Jun 2006 15:48:05 +0000 |
parents | c1de4b4e9c29 |
children | 4ab844784152 |
files | base/XmlExportable.cpp base/XmlExportable.h |
diffstat | 2 files changed, 27 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/base/XmlExportable.cpp Thu Jun 15 12:28:47 2006 +0000 +++ b/base/XmlExportable.cpp Thu Jun 15 15:48:05 2006 +0000 @@ -17,6 +17,14 @@ #include <map> #include <QMutex> #include <QMutexLocker> +#include <QTextStream> + +void +XmlExportable::toXml(QTextStream &stream, QString indent, + QString extraAttributes) const +{ + stream << toXmlString(indent, extraAttributes); +} QString XmlExportable::encodeEntities(QString s)
--- a/base/XmlExportable.h Thu Jun 15 12:28:47 2006 +0000 +++ b/base/XmlExportable.h Thu Jun 15 15:48:05 2006 +0000 @@ -19,11 +19,30 @@ #include <QString> #include <QColor> +class QTextStream; + class XmlExportable { public: virtual ~XmlExportable() { } + /** + * Stream this exportable object out to XML on a text stream. + * + * The default implementation calls toXmlString and streams the + * resulting string. This is only appropriate for objects with + * short representations. Bigger objects should override this + * method so as to write to the stream directly and override + * toXmlString with a method that calls this one, so that the + * direct streaming method can be used when appropriate. + */ + virtual void toXml(QTextStream &stream, + QString indent = "", + QString extraAttributes = "") const; + + /** + * Convert this exportable object to XML in a string. + */ virtual QString toXmlString(QString indent = "", QString extraAttributes = "") const = 0;