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;