diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-11-26 20:47:47 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-11-26 20:47:47 +0100 |
| commit | bae92cea3bcbacd7883499da61a0e54f13da6d23 (patch) | |
| tree | fc6c44d8d52ef57ee0b154ab97257db5fa542c6a /src/variant.hpp | |
| parent | 817a09c2192953b72cd1b5fbc0c4f9c96ae44776 (diff) | |
| download | wanda-bae92cea3bcbacd7883499da61a0e54f13da6d23.tar.xz wanda-bae92cea3bcbacd7883499da61a0e54f13da6d23.zip | |
wanda: architecture rework
Diffstat (limited to 'src/variant.hpp')
| -rw-r--r-- | src/variant.hpp | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/variant.hpp b/src/variant.hpp deleted file mode 100644 index 8a5fb03..0000000 --- a/src/variant.hpp +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef WANDA_VARIANT_HPP -#define WANDA_VARIANT_HPP - -#include <gio/gio.h> - -#include <optional> -#include <string> -#include <type_traits> - -namespace wanda { - -struct variant { - - explicit variant(GVariant * variant); - - ~variant(); - - template<typename Type> std::optional<Type> get() const { - if(!m_value) { - return std::nullopt; - } - - if constexpr(std::is_same_v<Type, bool>) { - if(is_of_type(G_VARIANT_TYPE_BOOLEAN)) { - return static_cast<bool>(g_variant_get_boolean(m_value)); - } - } else if constexpr(std::is_same_v<Type, std::string>) { - if(is_of_type(G_VARIANT_TYPE_STRING)) { - auto length = gsize{}; - auto value = g_variant_get_string(m_value, &length); - return std::string(value, static_cast<std::size_t>(length)); - } - } - - return std::nullopt; - } - - -private: - bool is_of_type(GVariantType const * const type) const; - - GVariant * const m_value; -}; - -} - -#endif
\ No newline at end of file |
