4#include <yaml-cpp/yaml.h>
17 enum class Unit { Auto, Hz, kHz, MHz, GHz };
40 bool parse(
const QString &value, Qt::CaseSensitivity caseSensitivity = Qt::CaseInsensitive);
70friend struct Frequency;
164 typedef QList<QPair<Frequency, T>> container;
165 typedef typename container::const_iterator const_iterator;
181 if (
_items.begin() == lower)
184 auto upper = lower--;
185 if (
_items.end() == upper)
188 if ((f.
inHz()-lower->first.inHz()) < (upper->first.inHz()-f.
inHz()))
196 return find(f)->second;
201 return find(f)->first;
206 inline static bool compItem(
const QPair<Frequency, T> &a,
const QPair<Frequency, T> &b) {
207 return a.first < b.first;
233 return Node(rhs.
format().toStdString());
238 if (! node.IsScalar())
240 return rhs.
parse(QString::fromStdString(node.as<std::string>()), Qt::CaseSensitive);
T value(const Frequency &f) const
Returns the value associated with the nearest item for the given frequency.
Definition frequency.hh:195
static bool compItemValue(const QPair< Frequency, T > &a, const Frequency &b)
Comparison of item and frequency.
Definition frequency.hh:211
Frequency key(const Frequency &f) const
Returns the frequency of the nearest item for the given frequency.
Definition frequency.hh:200
container _items
All items.
Definition frequency.hh:217
const_iterator find(const Frequency &f) const
Searches for the nearest item to the given frequency.
Definition frequency.hh:178
MapNearest(const QList< QPair< Frequency, T > > &items)
Constructs a nearest frequency mapping.
Definition frequency.hh:169
static bool compItem(const QPair< Frequency, T > &a, const QPair< Frequency, T > &b)
Comparison of items by frequency.
Definition frequency.hh:206
Common base for all frequencies.
Definition frequency.hh:14
bool isMultipleOf(Unit unit) const
Checks if frequency is a multiple of unit.
Definition frequency.cc:153
FrequencyBase & operator=(const FrequencyBase &other)
Assignment.
Definition frequency.cc:21
FrequencyBase(qint64 hz)
Hidden constructor from offset in Hz.
Definition frequency.hh:21
bool isZero() const
Returns true of the frequency is zero.
Definition frequency.hh:35
double inkHz() const
Unit conversion.
Definition frequency.hh:43
qint64 _frequency
The actual frequency in Hz.
Definition frequency.hh:61
Unit unitFromString(const QString &input) const
Returns unit as type base on string input.
Definition frequency.cc:133
Unit
Frequency units.
Definition frequency.hh:17
long long inHz() const
Unit conversion.
Definition frequency.hh:42
QString format(Unit unit=Unit::Auto) const
Format the frequency.
Definition frequency.cc:27
static QString unitName(Unit unit)
Helper for string conversion of unit.
Definition frequency.cc:165
Unit unit() const
Returns the most appropriate unit for the frequency value.
Definition frequency.cc:121
double inMHz() const
Unit conversion.
Definition frequency.hh:44
bool isNegative() const
Returns true of the frequency is negative.
Definition frequency.hh:31
bool isPositive() const
Returns true of the frequency is positive.
Definition frequency.hh:33
double inGHz() const
Unit conversion.
Definition frequency.hh:45
bool parse(const QString &value, Qt::CaseSensitivity caseSensitivity=Qt::CaseInsensitive)
Parses a frequency.
Definition frequency.cc:56
Helper type to represent frequency differences aka offsets.
Definition frequency.hh:69
FrequencyOffset()
Default constructor.
Definition frequency.cc:181
static FrequencyOffset fromHz(qint64 Hz)
Unit conversion.
Definition frequency.hh:95
static FrequencyOffset fromkHz(double kHz)
Unit conversion.
Definition frequency.hh:96
static FrequencyOffset fromMHz(double MHz)
Unit conversion.
Definition frequency.hh:97
FrequencyOffset abs() const
Returns a positive frequency offset.
Definition frequency.hh:88
FrequencyOffset invert() const
Invert an offset.
Definition frequency.hh:85
FrequencyOffset(qint64 Hz)
Hidden constructor.
Definition frequency.hh:73
static FrequencyOffset fromString(const QString &freq)
Parses an offset.
Definition frequency.cc:200
static FrequencyOffset fromGHz(double GHz)
Unit conversion.
Definition frequency.hh:98
FrequencyOffset & operator=(const FrequencyOffset &other)
Assignment.
Definition frequency.cc:194
Helper type to encode frequencies without any rounding error.
Definition frequency.hh:107
static Frequency fromkHz(double kHz)
Unit conversion.
Definition frequency.hh:154
static Frequency fromString(const QString &freq)
Pareses a frequency.
Definition frequency.cc:250
bool operator<(const Frequency &other) const
Definition frequency.hh:121
bool operator>=(const Frequency &other) const
Definition frequency.hh:136
quint64 inHz() const
Unit conversion.
Definition frequency.hh:151
bool operator!=(const Frequency &other) const
Definition frequency.hh:130
static Frequency fromMHz(double MHz)
Unit conversion.
Definition frequency.hh:155
Frequency()
Default constructor.
Definition frequency.cc:219
bool operator>(const Frequency &other) const
Definition frequency.hh:133
Frequency(quint64 hz)
Hidden constructor from frequency in Hz.
Definition frequency.cc:213
static Frequency fromHz(quint64 Hz)
Unit conversion.
Definition frequency.hh:153
Frequency & operator=(const Frequency &other)
Assignment.
Definition frequency.cc:232
FrequencyOffset operator-(const Frequency &other) const
Frequency arithmetic.
Definition frequency.cc:245
Frequency & operator+=(const FrequencyOffset &offset)
Frequency arithmetic.
static Frequency fromGHz(double GHz)
Unit conversion.
Definition frequency.hh:156
bool operator==(const Frequency &other) const
Definition frequency.hh:127
Frequency operator+(const FrequencyOffset &offset) const
Frequency arithmetic.
Definition frequency.cc:238
bool operator<=(const Frequency &other) const
Definition frequency.hh:124
static Node encode(const Frequency &rhs)
Serializes the frequency.
Definition frequency.hh:232
static bool decode(const Node &node, Frequency &rhs)
Parses the frequency.
Definition frequency.hh:237