VariableCacheStrategyFactory.h
44 lines
| 1.3 KiB
| text/x-c
|
CLexer
Alexandre Leroux
|
r771 | #ifndef SCIQLOP_VARIABLECACHESTRATEGYFACTORY_H | ||
#define SCIQLOP_VARIABLECACHESTRATEGYFACTORY_H | ||||
#include <memory> | ||||
#include <stdexcept> | ||||
#include "VariableCacheStrategy.h" | ||||
#include "VariableSingleThresholdCacheStrategy.h" | ||||
#include <QLoggingCategory> | ||||
#include <QString> | ||||
Q_LOGGING_CATEGORY(LOG_VariableCacheStrategyFactory, "VariableCacheStrategyFactory") | ||||
enum class CacheStrategy { SingleThreshold, TwoThreashold }; | ||||
class VariableCacheStrategyFactory { | ||||
using cacheStratPtr = std::unique_ptr<VariableCacheStrategy>; | ||||
public: | ||||
static cacheStratPtr createCacheStrategy(CacheStrategy specificStrategy) | ||||
{ | ||||
switch (specificStrategy) { | ||||
case CacheStrategy::SingleThreshold: { | ||||
return std::unique_ptr<VariableCacheStrategy>{ | ||||
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"); | ||||
} | ||||
} | ||||
}; | ||||
#endif // VARIABLECACHESTRATEGYFACTORY_H | ||||