#include "macro-import-prompts.hpp" namespace advss { static void saveStrings(obs_data_t *obj, const char *name, const std::vector &strings) { obs_data_array_t *array = obs_data_array_create(); for (auto &string : strings) { obs_data_t *entry = obs_data_create(); obs_data_set_string(entry, "value", string.c_str()); obs_data_array_push_back(array, entry); obs_data_release(entry); } obs_data_set_array(obj, name, array); obs_data_array_release(array); } static std::vector loadStrings(obs_data_t *obj, const char *name) { std::vector result; obs_data_array_t *array = obs_data_get_array(obj, name); size_t count = obs_data_array_count(array); for (size_t i = 0; i < count; i++) { obs_data_t *entry = obs_data_array_item(array, i); result.emplace_back(obs_data_get_string(entry, "value")); obs_data_release(entry); } obs_data_array_release(array); return result; } void SaveImportPrompts(obs_data_t *obj, const std::vector &prompts) { obs_data_array_t *array = obs_data_array_create(); for (auto &prompt : prompts) { obs_data_t *entry = obs_data_create(); obs_data_set_string(entry, "label", prompt.label.c_str()); obs_data_set_int(entry, "type", static_cast(prompt.type)); saveStrings(entry, "placeholders", prompt.placeholders); obs_data_set_string(entry, "defaultValue", prompt.defaultValue.c_str()); saveStrings(entry, "options", prompt.options); obs_data_array_push_back(array, entry); obs_data_release(entry); } obs_data_set_array(obj, "importPrompts", array); obs_data_array_release(array); } std::vector LoadImportPrompts(obs_data_t *obj) { std::vector result; obs_data_array_t *array = obs_data_get_array(obj, "importPrompts"); size_t count = obs_data_array_count(array); for (size_t i = 0; i < count; i++) { obs_data_t *entry = obs_data_array_item(array, i); ImportPrompt prompt; prompt.label = obs_data_get_string(entry, "label"); prompt.type = static_cast( obs_data_get_int(entry, "type")); prompt.placeholders = loadStrings(entry, "placeholders"); prompt.defaultValue = obs_data_get_string(entry, "defaultValue"); prompt.options = loadStrings(entry, "options"); result.emplace_back(std::move(prompt)); obs_data_release(entry); } obs_data_array_release(array); return result; } } // namespace advss