24 #ifndef GAMMARAY_VARIANTHANDLER_H
25 #define GAMMARAY_VARIANTHANDLER_H
27 #include "gammaray_core_export.h"
34 namespace VariantHandler
37 template <
typename RetT>
struct Converter
39 virtual RetT operator() (
const QVariant &v) = 0;
42 template <
typename RetT,
typename InputT,
typename FuncT>
struct ConverterImpl :
public Converter<RetT>
44 explicit inline ConverterImpl(FuncT converter) : f(converter) {}
45 inline RetT operator() (
const QVariant &v) {
return f(v.value<InputT>()); }
57 GAMMARAY_CORE_EXPORT QString
displayString(
const QVariant &value);
65 GAMMARAY_CORE_EXPORT QVariant
decoration(
const QVariant &value);
77 template <
typename T,
typename FuncT>
80 Converter<QString> *converter =
new ConverterImpl<QString, T, FuncT>(f);
87 #endif // GAMMARAY_VARIANTHANDLER_H