21#include <QRegularExpression>
35static void initFiffExplanationsResource()
37 Q_INIT_RESOURCE(fiff_explanations);
49 UnitMultiplierClass = 4,
53quint64 key(
int exclass,
int kind)
55 return (
static_cast<quint64
>(
static_cast<quint32
>(exclass)) << 32) |
static_cast<quint32
>(kind);
58const QHash<quint64, QString>& explanations()
60 static const QHash<quint64, QString> table = [] {
61 initFiffExplanationsResource();
62 QHash<quint64, QString> entries;
63 QFile file(QStringLiteral(
":/fiff/fiff_explanations.txt"));
64 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
65 qWarning(
"[FiffExplain] the built-in explanation table is missing");
69 const QRegularExpression line(QStringLiteral(R
"(^\s*(\d+)\s+(-?\d+)\s+"([^"]*)\")"));
70 QTextStream in(&file);
72 const QRegularExpressionMatch m = line.match(in.readLine());
73 const quint64 k = m.hasMatch() ? key(m.captured(1).toInt(), m.captured(2).toInt()) : 0;
74 if (m.hasMatch() && !entries.contains(k)) {
75 entries.insert(k, m.captured(3).simplified());
83QString lookup(
int exclass,
int kind)
85 return explanations().value(key(exclass, kind));
96 return lookup(TagClass, kind);
103 return lookup(BlockClass, kind);
110 return lookup(UnitClass,
unit);
117 return lookup(UnitMultiplierClass, unitMul);
124 return lookup(ChannelKindClass, kind);
Human-readable names of FIFF tag kinds, block kinds, units, unit multipliers and channel kinds.
FIFF file I/O, in-memory data structures and high-level readers/writers.
static QString tag(int kind)
static QString channelKind(int kind)
static QString unit(int unit)
static QString block(int kind)
static QString unitMultiplier(int unitMul)