##// END OF EJS Templates
Removed forgotten files form previous impl of VC, fixed wrong submodules...
Removed forgotten files form previous impl of VC, fixed wrong submodules init (was always erasing changes :( ) Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r0:86b06c4cec3c
r31:dec007be0b03
Show More
MetaTypes.h
46 lines | 1.4 KiB | text/x-c | CLexer
#ifndef SCIQLOP_METATYPES_H
#define SCIQLOP_METATYPES_H
#include <QMetaType>
/**
* Struct used to create an instance that registers a type in Qt for signals / slots mechanism
* @tparam T the type to register
*/
template <typename T>
struct MetaTypeRegistry {
explicit MetaTypeRegistry() { qRegisterMetaType<T>(); }
};
/**
* This macro can be used to :
* - declare a type as a Qt meta type
* - and register it (through a static instance) at the launch of SciQlop, so it can be passed in
* Qt signals/slots
*
* It can be used both in .h or in .cpp files
*
* @param NAME name of the instance under which the type will be registered (in uppercase)
* @param TYPE type to register
*
* Example:
* ~~~cpp
* // The following macro :
* // - declares std::shared_ptr<Variable> as a Qt meta type
* // - registers it through an instance named VAR_SHARED_PTR
* SCIQLOP_REGISTER_META_TYPE(VAR_SHARED_PTR, std::shared_ptr<Variable>)
*
* // The following macro :
* // - declares a raw pointer of Variable as a Qt meta type
* // - registers it through an instance named VAR_RAW_PTR
* SCIQLOP_REGISTER_META_TYPE(VAR_RAW_PTR, Variable*)
* ~~~
*
*/
// clang-format off
#define SCIQLOP_REGISTER_META_TYPE(NAME, TYPE) \
Q_DECLARE_METATYPE(TYPE) \
const auto NAME = MetaTypeRegistry<TYPE>{}; \
// clang-format on
#endif // SCIQLOP_METATYPES_H