From e70f0b4de81d24d22a29a2af03c669368fce6af2 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Sat, 24 Nov 2018 20:38:48 +0100 Subject: wanda: initial commit --- src/setting.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/setting.cpp (limited to 'src/setting.cpp') diff --git a/src/setting.cpp b/src/setting.cpp new file mode 100644 index 0000000..9ddbfe8 --- /dev/null +++ b/src/setting.cpp @@ -0,0 +1,29 @@ +#include "setting.hpp" + +namespace wanda { + +namespace literals { + key operator""_key(char const * str, std::size_t len) { + return key{{str, len}}; + } + + std::optional operator""_setting(char const * str, std::size_t len) { + auto source = g_settings_schema_source_get_default(); + auto schema = g_settings_schema_source_lookup(source, str, true); + if(schema) { + g_settings_schema_unref(schema); + return setting{::wanda::schema{{str, len}}}; + } + return std::nullopt; + } +} + +setting::setting(schema schema) : m_value{g_settings_new(schema.get().c_str())} { } + +setting::setting(setting const & other) : m_value{reinterpret_cast(g_object_ref(other.m_value))} { } + +setting::~setting() { + g_clear_object(&m_value); +} + +} \ No newline at end of file -- cgit v1.2.3