diff options
Diffstat (limited to 'options/metatype.cpp')
| -rw-r--r-- | options/metatype.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/options/metatype.cpp b/options/metatype.cpp index ed12821b..7430c00a 100644 --- a/options/metatype.cpp +++ b/options/metatype.cpp @@ -1,22 +1,26 @@ -#include "metatype.hpp" - -#define OPENTRACK_REGISTER_METATYPE(t) ::options::detail::custom_type_initializer::declare_for_type<t>(#t) +#include <QMetaType> -namespace options { -namespace detail { +namespace options::detail { -custom_type_initializer::custom_type_initializer() +template<typename t> +void declare_metatype_for_type(const char* str) { - OPENTRACK_REGISTER_METATYPE(options::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>); + qRegisterMetaType<t>(str); + qRegisterMetaTypeStreamOperators<t>(); } -const custom_type_initializer custom_type_initializer::singleton; +} // ns options::detail -} -} +#define OPENTRACK_DEFINE_METATYPE3(t, ctr) \ + static \ + const char init_##ctr = /* NOLINT(misc-definitions-in-headers) */ \ + (::options::detail::declare_metatype_for_type<t>(#t), 0); \ + +#define OPENTRACK_DEFINE_METATYPE2(t, ctr) \ + OPENTRACK_DEFINE_METATYPE3(t, ctr) + +#define OPENTRACK_DEFINE_METATYPE(t) \ + OPENTRACK_DEFINE_METATYPE2(t, __COUNTER__) + +#define OPENTRACK_METATYPE_(x) OPENTRACK_DEFINE_METATYPE(x) +#include "metatype.hpp" |
