diff options
-rw-r--r-- | options/metatype.cpp | 23 | ||||
-rw-r--r-- | options/metatype.hpp | 36 | ||||
-rw-r--r-- | options/options.hpp | 1 |
3 files changed, 60 insertions, 0 deletions
diff --git a/options/metatype.cpp b/options/metatype.cpp new file mode 100644 index 00000000..8f92f385 --- /dev/null +++ b/options/metatype.cpp @@ -0,0 +1,23 @@ +#include "slider.hpp" +#include "metatype.hpp" + +#define OPENTRACK_REGISTER_METATYPE(t) ::options::detail::custom_type_initializer::declare_for_type<t>(#t) + +namespace options { +namespace detail { + +custom_type_initializer::custom_type_initializer() +{ + OPENTRACK_REGISTER_METATYPE(slider_value); + OPENTRACK_REGISTER_METATYPE(QList<double>); + OPENTRACK_REGISTER_METATYPE(QList<float>); + OPENTRACK_REGISTER_METATYPE(QList<int>); + OPENTRACK_REGISTER_METATYPE(QList<bool>); + OPENTRACK_REGISTER_METATYPE(QList<QString>); + OPENTRACK_REGISTER_METATYPE(QList<QPointF>); +} + +const custom_type_initializer custom_type_initializer::singleton; + +} +} diff --git a/options/metatype.hpp b/options/metatype.hpp new file mode 100644 index 00000000..68480b55 --- /dev/null +++ b/options/metatype.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include <QMetaType> +#include <QList> +#include <QString> +#include <QPointF> +#include <QDataStream> +#include <QDebug> + +#include "export.hpp" + +Q_DECLARE_METATYPE(QList<double>) +Q_DECLARE_METATYPE(QList<float>) +Q_DECLARE_METATYPE(QList<int>) +Q_DECLARE_METATYPE(QList<bool>) +Q_DECLARE_METATYPE(QList<QString>) +Q_DECLARE_METATYPE(QList<QPointF>) + +namespace options { +namespace detail { + +struct custom_type_initializer final +{ + static const custom_type_initializer singleton; + + custom_type_initializer(); + + template<typename t> static inline void declare_for_type(const char* str) + { + qRegisterMetaType<t>(str); + qRegisterMetaTypeStreamOperators<t>(); + } +}; + +} +} diff --git a/options/options.hpp b/options/options.hpp index fdeb74cd..0528b0d9 100644 --- a/options/options.hpp +++ b/options/options.hpp @@ -16,4 +16,5 @@ #include "slider.hpp" #include "value.hpp" #include "tie.hpp" +#include "metatype.hpp" #include "scoped.hpp" |