/** * File: Generator.cc * Copyright (C) 2025 Tyler Triplett * License: GNU GPL 3.0 or later <https://www.gnu.org/licenses/gpl-3.0.html> * * This is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include "generators/Generator.hh" #include "utils/safeJsonParse.hh" namespace ty { std::vector<Setting> Generator::getSettings() { return { { "width" , &width_ }, { "height", &height_ }, }; } void Generator::applyJson(const json& j, const std::vector<Setting>& settings) { for (const auto& [key, ptr] : settings) { std::visit([&key, &j](auto* const ptr) { if (auto r = jsonValue<BaseT<decltype(ptr)>>(j, key)) *ptr = *r; }, ptr); } } void Generator::init(const json& j) { const auto settings = Generator::getSettings(); applyJson(j, settings); } } /// ty