diff data/fileio/CSVStreamWriter.h @ 1835:804dd0c06f0e

Merge from branch sensible-delimited-data-strings
author Chris Cannam
date Mon, 06 Apr 2020 13:55:44 +0100
parents 21c792334c2e
children
line wrap: on
line diff
--- a/data/fileio/CSVStreamWriter.h	Fri Apr 03 12:12:02 2020 +0100
+++ b/data/fileio/CSVStreamWriter.h	Mon Apr 06 13:55:44 2020 +0100
@@ -20,7 +20,9 @@
 #include "base/Selection.h"
 #include "base/ProgressReporter.h"
 #include "base/DataExportOptions.h"
+#include "base/StringBits.h"
 #include "data/model/Model.h"
+
 #include <QString>
 #include <algorithm>
 #include <numeric>
@@ -68,20 +70,21 @@
 
             const auto start = readPtr;
             const auto end = std::min(start + blockSize, endFrame);
-            const auto data = model.toDelimitedDataString(
-                delimiter,
+            const auto data = model.toStringExportRows(
                 options,
                 start,
                 end - start
-            ).trimmed();
+            );
 
-            if ( data != "" ) {
-                if (started) {
-                    oss << "\n";
-                } else {
-                    started = true;
+            if (!data.empty()) {
+                for (const auto &row: data) {
+                    if (started) {
+                        oss << "\n";
+                    } else {
+                        started = true;
+                    }
+                    oss << StringBits::joinDelimited(row, delimiter);
                 }
-                oss << data;
             }
 
             nFramesWritten += end - start;
@@ -120,7 +123,7 @@
     };
     MultiSelection regions;
     regions.addSelection(all);
-    return CSVStreamWriter::writeInChunks(
+    return writeInChunks(
         oss,
         model,
         regions,
@@ -141,7 +144,7 @@
               const sv_frame_t blockSize = 16384)
 {
     const Selection empty;
-    return CSVStreamWriter::writeInChunks(
+    return writeInChunks(
         oss,
         model,
         empty,