#ifndef SCIQLOP_VARIABLECACHESTRATEGYFACTORY_H #define SCIQLOP_VARIABLECACHESTRATEGYFACTORY_H #include #include #include "VariableCacheStrategy.h" #include "ProportionalCacheStrategy.h" #include "SingleThresholdCacheStrategy.h" #include #include enum class CacheStrategy { Proportional, SingleThreshold, TwoThreshold }; class VariableCacheStrategyFactory { using cacheStratPtr = std::unique_ptr; public: static cacheStratPtr createCacheStrategy(CacheStrategy specificStrategy) { switch (specificStrategy) { case CacheStrategy::Proportional: { return std::unique_ptr{ new ProportionalCacheStrategy{}}; } case CacheStrategy::SingleThreshold: { return std::unique_ptr{ new SingleThresholdCacheStrategy{}}; } case CacheStrategy::TwoThreshold: { SCIQLOP_ERROR(VariableCacheStrategyFactory, "CacheStrategy::TwoThreshold not implemented yet"); break; } default: SCIQLOP_ERROR(VariableCacheStrategyFactory, "Unknown cache strategy"); break; } return nullptr; } }; #endif // VARIABLECACHESTRATEGYFACTORY_H