8 struct data_service_factory_i;
11 template <
typename OperationType = scorum::protocol::operation>
class evaluator
15 virtual void apply(
const OperationType& op) = 0;
18 template <
typename DataServices,
typename EvaluatorType,
typename OperationType = scorum::protocol::operation>
27 virtual void apply(
const OperationType& o)
final override
29 auto* eval =
static_cast<EvaluatorType*
>(
this);
30 const auto& op = o.template get<typename EvaluatorType::operation_type>();
34 DataServices&
db()
const
40 DataServices& _services;
46 #define DEFINE_EVALUATOR(X) \
47 class X##_evaluator : public scorum::chain::evaluator_impl<data_service_factory_i, X##_evaluator> \
50 typedef X##_operation operation_type; \
52 X##_evaluator(data_service_factory_i& db) \
53 : scorum::chain::evaluator_impl<data_service_factory_i, X##_evaluator>(db) \
57 void do_apply(const X##_operation& o); \
DataServices & db() const
virtual void apply(const OperationType &o) final override
evaluator_impl(DataServices &d)
virtual void apply(const OperationType &op)=0
virtual ~evaluator()=default