summaryrefslogtreecommitdiffstats
path: root/src/bm/bmmisc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bm/bmmisc.h')
-rw-r--r--src/bm/bmmisc.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/bm/bmmisc.h b/src/bm/bmmisc.h
index a3d711a..057adac 100644
--- a/src/bm/bmmisc.h
+++ b/src/bm/bmmisc.h
@@ -27,6 +27,7 @@
#include <QVector>
#include <QString>
#include <QStringList>
+#include <QPair>
#include <QImage>
#include <QDateTime>
#include <QSqlQuery>
@@ -52,9 +53,12 @@ public:
static bool getMultiOption(
const QStringList &args, const QString &option, QStringList *values, QString *error,
bool unique = true);
+ static bool getMultiOption2(
+ const QStringList &args, const QString &option, QList<QStringList> *values, int n,
+ QString *error);
static bool hasOption(const QStringList &args, const QString &option);
static qreal median(const QList<qreal> &values);
-
+ static int medianPos(const QList<qreal> &values, bool lastDuplicate = true);
static qreal v2y(
const qreal v, const qreal ymax, const qreal vmin, const qreal yfact, const qreal ydefault);
static QDateTime createCurrDateTime(int timestamp);
@@ -69,6 +73,33 @@ public:
static qreal log2diff(qreal val1, qreal val2, const QString &metric);
static bool normalize(QList<qreal> &v);
static QString compactDateString(int timestamp);
+
+ // ### 2 B DOCUMENTED!
+ // (Note that a function template cannot be compiled and linked independently, so its
+ // definition needs to go here)
+ template <typename T> static void insertRankedId(
+ QList<QPair<T, qreal> > *ranked, int limit, T t, qreal value)
+ {
+ Q_ASSERT(limit >= 0);
+
+ int i;
+ for (i = 0; (i < limit) && (i < ranked->size()); ++i) {
+ if (value > ranked->at(i).second)
+ break;
+ }
+
+ if (i == limit)
+ return;
+
+ Q_ASSERT(i <= ranked->size());
+ ranked->insert(i, qMakePair(t, value));
+
+ if (ranked->size() > limit) {
+ Q_ASSERT(ranked->size() == (limit + 1));
+ ranked->removeLast();
+ Q_ASSERT(ranked->size() == limit);
+ }
+ }
};
#endif // BMMISC_H