#ifndef SCIQLOP_VARIABLECACHESTRATEGYFACTORY_H #define SCIQLOP_VARIABLECACHESTRATEGYFACTORY_H #include #include #include "VariableCacheStrategy.h" #include "VariableSingleThresholdCacheStrategy.h" #include #include Q_LOGGING_CATEGORY(LOG_VariableCacheStrategyFactory, "VariableCacheStrategyFactory") enum class CacheStrategy { SingleThreshold, TwoThreashold }; class VariableCacheStrategyFactory { using cacheStratPtr = std::unique_ptr; public: static cacheStratPtr createCacheStrategy(CacheStrategy specificStrategy) { switch (specificStrategy) { case CacheStrategy::SingleThreshold: { return std::unique_ptr{ new VariableSingleThresholdCacheStrategy{}}; break; } case CacheStrategy::TwoThreashold: { qCCritical(LOG_VariableCacheStrategyFactory()) << QObject::tr("cache strategy not implemented yet"); break; } default: qCCritical(LOG_VariableCacheStrategyFactory()) << QObject::tr("Unknown cache strategy"); } return nullptr; } }; #endif // VARIABLECACHESTRATEGYFACTORY_H