# HG changeset patch # User Chris Cannam # Date 1150386485 0 # Node ID 0f37e92e17822eb6ccb25c230bce15acceb09ce9 # Parent c1de4b4e9c29d9a63b5211fcf7e29ae44c2a3258 * 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 diff -r c1de4b4e9c29 -r 0f37e92e1782 base/XmlExportable.cpp --- 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 #include #include +#include + +void +XmlExportable::toXml(QTextStream &stream, QString indent, + QString extraAttributes) const +{ + stream << toXmlString(indent, extraAttributes); +} QString XmlExportable::encodeEntities(QString s) diff -r c1de4b4e9c29 -r 0f37e92e1782 base/XmlExportable.h --- 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 #include +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;