##// END OF EJS Templates
Add satic method to compute vector of in or not in ranges between...
Add satic method to compute vector of in or not in ranges between two ranges

File last commit:

r308:d6942e8f24d6
r816:97f935302b90
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