10 template <
typename OperationType,
typename DbType = data_service_factory_i>
class evaluator_registry
18 for (
int i = 0; i < OperationType::count(); i++)
24 _op_evaluators[OperationType::template tag<typename EvaluatorType::operation_type>::value].reset(
25 new EvaluatorType(
_db, std::forward<Args>(args)...));
30 _op_evaluators[OperationType::template tag<typename EvaluatorType::operation_type>::value].reset(e);
35 int i_which = op.which();
36 uint64_t u_which = uint64_t(i_which);
38 assert(
"Negative operation tag" &&
false);
40 assert(
"No registered evaluator for this operation" &&
false);
41 std::unique_ptr<evaluator<OperationType>>& eval =
_op_evaluators[u_which];
43 assert(
"No registered evaluator for this operation" &&
false);
void register_evaluator(Args &&... args)
std::vector< std::unique_ptr< evaluator< OperationType > > > _op_evaluators
evaluator< OperationType > & get_evaluator(const OperationType &op)
void register_evaluator(EvaluatorType *e)
OperationType operation_type
evaluator_registry(DbType &d)