51 lines
983 B
C++

#pragma once
#include <tt_hal_radio.h>
#include "Str.h"
class Preset {
struct PresetItem {
RadioParameter parameter;
float value;
PresetItem* next = nullptr;
};
Str name;
Modulation modulation;
PresetItem* first = nullptr;
PresetItem* last = nullptr;
public:
Preset(const char* const name, Modulation modulation)
: name(name)
, modulation(modulation)
{}
virtual ~Preset() {
PresetItem* n = first;
while(n) {
auto next = n->next;
delete n;
n = next;
}
}
void addParameter(RadioParameter parameter, float value) {
auto node = new PresetItem;
node->parameter = parameter;
node->value = value;
if (last) {
last->next = node;
last = node;
} else {
first = node;
last = node;
}
}
PresetItem* first() {
return first;
}
};