#pragma once #include #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; } };