changeset 1547:32400727bcbd zoom

Merge from default branch
author Chris Cannam
date Mon, 01 Oct 2018 15:48:02 +0100
parents ca43af0dcab7 (current diff) 9c14dee72329 (diff)
children 2fec0d9bd7ac 1ae6a19464a7
files
diffstat 4 files changed, 46 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/base/RangeMapper.cpp	Fri Sep 28 18:08:04 2018 +0100
+++ b/base/RangeMapper.cpp	Mon Oct 01 15:48:02 2018 +0100
@@ -20,6 +20,7 @@
 #include <cmath>
 
 #include <iostream>
+#include <stdexcept>
 
 LinearRangeMapper::LinearRangeMapper(int minpos, int maxpos,
                                      double minval, double maxval,
@@ -33,8 +34,12 @@
     m_inverted(inverted),
     m_labels(labels)
 {
-    assert(m_maxval != m_minval);
-    assert(m_maxpos != m_minpos);
+    if (m_maxval == m_minval) {
+        throw std::logic_error("LinearRangeMapper: maxval must differ from minval");
+    }
+    if (m_maxpos == m_minpos) {
+        throw std::logic_error("LinearRangeMapper: maxpos must differ from minpos");
+    }
 }
 
 int
@@ -101,7 +106,9 @@
 //              << maxval << ", minlog " << m_minlog << ", ratio " << m_ratio
 //              << ", unit " << unit << endl;
 
-    assert(m_maxpos != m_minpos);
+    if (m_maxpos == m_minpos) {
+        throw std::logic_error("LogRangeMapper: maxpos must differ from minpos");
+    }
 
     m_maxlog = (m_maxpos - m_minpos) / m_ratio + m_minlog;
 
--- a/transform/TransformDescription.h	Fri Sep 28 18:08:04 2018 +0100
+++ b/transform/TransformDescription.h	Mon Oct 01 15:48:02 2018 +0100
@@ -13,8 +13,8 @@
     COPYING included with this distribution for more information.
 */
 
-#ifndef _TRANSFORM_DESCRIPTION_H_
-#define _TRANSFORM_DESCRIPTION_H_
+#ifndef SV_TRANSFORM_DESCRIPTION_H
+#define SV_TRANSFORM_DESCRIPTION_H
 
 #include "Transform.h"
 
@@ -77,11 +77,19 @@
     QString infoUrl;
     QString units;
     bool configurable;
+
+    // User-visible strings (name, maker etc) should be sorted in a
+    // locale-aware way
+    static bool compareUserStrings(QString s1, QString s2) {
+        return QString::localeAwareCompare(s1, s2) < 0;
+    };
     
     bool operator<(const TransformDescription &od) const {
-        return
-            (name <  od.name) ||
-            (name == od.name && identifier < od.identifier);
+        if (name == od.name) {
+            return identifier < od.identifier;
+        } else {
+            return compareUserStrings(name, od.name);
+        }
     };
 };
 
--- a/transform/TransformFactory.cpp	Fri Sep 28 18:08:04 2018 +0100
+++ b/transform/TransformFactory.cpp	Mon Oct 01 15:48:02 2018 +0100
@@ -32,6 +32,7 @@
 
 #include <iostream>
 #include <set>
+#include <functional>
 
 #include <QRegExp>
 #include <QTextStream>
@@ -111,19 +112,17 @@
     populateTransforms();
 
     std::set<TransformDescription> dset;
-    for (TransformDescriptionMap::const_iterator i = m_transforms.begin();
-         i != m_transforms.end(); ++i) {
+    for (auto i = m_transforms.begin(); i != m_transforms.end(); ++i) {
 #ifdef DEBUG_TRANSFORM_FACTORY
-        cerr << "inserting transform into set: id = " << i->second.identifier << endl;
+        cerr << "inserting transform into set: id = " << i->second.identifier << " (" << i->second.name << ")" << endl;
 #endif
         dset.insert(i->second);
     }
 
     TransformList list;
-    for (std::set<TransformDescription>::const_iterator i = dset.begin();
-         i != dset.end(); ++i) {
+    for (auto i = dset.begin(); i != dset.end(); ++i) {
 #ifdef DEBUG_TRANSFORM_FACTORY
-        cerr << "inserting transform into list: id = " << i->identifier << endl;
+        cerr << "inserting transform into list: id = " << i->identifier << " (" << i->name << ")" << endl;
 #endif
         list.push_back(*i);
     }
@@ -157,7 +156,7 @@
     populateUninstalledTransforms();
     
     std::set<TransformDescription> dset;
-    for (TransformDescriptionMap::const_iterator i = m_uninstalledTransforms.begin();
+    for (auto i = m_uninstalledTransforms.begin();
          i != m_uninstalledTransforms.end(); ++i) {
 #ifdef DEBUG_TRANSFORM_FACTORY
         cerr << "inserting transform into set: id = " << i->second.identifier << endl;
@@ -166,8 +165,7 @@
     }
 
     TransformList list;
-    for (std::set<TransformDescription>::const_iterator i = dset.begin();
-         i != dset.end(); ++i) {
+    for (auto i = dset.begin(); i != dset.end(); ++i) {
 #ifdef DEBUG_TRANSFORM_FACTORY
         cerr << "inserting transform into uninstalled list: id = " << i->identifier << endl;
 #endif
@@ -247,13 +245,12 @@
     populateTransforms();
 
     std::set<TransformDescription::Type> types;
-    for (TransformDescriptionMap::const_iterator i = m_transforms.begin();
-         i != m_transforms.end(); ++i) {
+    for (auto i = m_transforms.begin(); i != m_transforms.end(); ++i) {
         types.insert(i->second.type);
     }
 
     std::vector<TransformDescription::Type> rv;
-    for (std::set<TransformDescription::Type>::iterator i = types.begin(); i != types.end(); ++i) {
+    for (auto i = types.begin(); i != types.end(); ++i) {
         rv.push_back(*i);
     }
 
@@ -265,9 +262,10 @@
 {
     populateTransforms();
 
-    std::set<QString> categories;
-    for (TransformDescriptionMap::const_iterator i = m_transforms.begin();
-         i != m_transforms.end(); ++i) {
+    std::set<QString, std::function<bool(QString, QString)>>
+        categories(TransformDescription::compareUserStrings);
+    
+    for (auto i = m_transforms.begin(); i != m_transforms.end(); ++i) {
         if (i->second.type == transformType) {
             categories.insert(i->second.category);
         }
@@ -276,8 +274,7 @@
     bool haveEmpty = false;
     
     std::vector<QString> rv;
-    for (std::set<QString>::iterator i = categories.begin(); 
-         i != categories.end(); ++i) {
+    for (auto i = categories.begin(); i != categories.end(); ++i) {
         if (*i != "") rv.push_back(*i);
         else haveEmpty = true;
     }
@@ -292,9 +289,10 @@
 {
     populateTransforms();
 
-    std::set<QString> makers;
-    for (TransformDescriptionMap::const_iterator i = m_transforms.begin();
-         i != m_transforms.end(); ++i) {
+    std::set<QString, std::function<bool(QString, QString)>>
+        makers(TransformDescription::compareUserStrings);
+
+    for (auto i = m_transforms.begin(); i != m_transforms.end(); ++i) {
         if (i->second.type == transformType) {
             makers.insert(i->second.maker);
         }
@@ -303,8 +301,7 @@
     bool haveEmpty = false;
     
     std::vector<QString> rv;
-    for (std::set<QString>::iterator i = makers.begin(); 
-         i != makers.end(); ++i) {
+    for (auto i = makers.begin(); i != makers.end(); ++i) {
         if (*i != "") rv.push_back(*i);
         else haveEmpty = true;
     }
@@ -414,7 +411,7 @@
     
     if (m_exiting) return;
 
-    for (int i = 0; i < (int)plugs.size(); ++i) {
+    for (int i = 0; in_range_for(plugs, i); ++i) {
 
         QString pluginId = plugs[i];
 
@@ -504,7 +501,7 @@
 
     static QRegExp unitRE("[\\[\\(]([A-Za-z0-9/]+)[\\)\\]]$");
 
-    for (int i = 0; i < (int)plugs.size(); ++i) {
+    for (int i = 0; in_range_for(plugs, i); ++i) {
         
         QString pluginId = plugs[i];
 
--- a/transform/TransformFactory.h	Fri Sep 28 18:08:04 2018 +0100
+++ b/transform/TransformFactory.h	Mon Oct 01 15:48:02 2018 +0100
@@ -13,8 +13,8 @@
     COPYING included with this distribution for more information.
 */
 
-#ifndef _TRANSFORM_FACTORY_H_
-#define _TRANSFORM_FACTORY_H_
+#ifndef SV_TRANSFORM_FACTORY_H
+#define SV_TRANSFORM_FACTORY_H
 
 #include "TransformDescription.h"