/* * Copyright (C) 2019 Team Kodi * This file is part of Kodi - https://kodi.tv * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSES/README.md for more information. */ #pragma once #include "settings/lib/ISettingsValueSerializer.h" #include "utils/Variant.h" #include class CSetting; class CSettingCategory; class CSettingGroup; class CSettingSection; class CSettingsValueFlatJsonSerializer : public ISettingsValueSerializer { public: explicit CSettingsValueFlatJsonSerializer(bool compact = true); ~CSettingsValueFlatJsonSerializer() = default; void SetCompact(bool compact = true) { m_compact = compact; } // implementation of ISettingsValueSerializer std::string SerializeValues(const CSettingsManager* settingsManager) const override; private: void SerializeSection(CVariant& parent, const std::shared_ptr& section) const; void SerializeCategory(CVariant& parent, const std::shared_ptr& category) const; void SerializeGroup(CVariant& parent, const std::shared_ptr& group) const; void SerializeSetting(CVariant& parent, const std::shared_ptr& setting) const; CVariant SerializeSettingValue(const std::shared_ptr& setting) const; bool m_compact; };