3 #ifndef GRAIL_MAX_SELECTOR_H
4 #define GRAIL_MAX_SELECTOR_H
8 #include "SelectionOption.hh"
9 #include "SelectionResult.hh"
10 #include "../../GrailEvaluators/Consideration.hh"
19 namespace max_selector
21 template <
typename ContextType>
31 std::function<
bool(
const std::size_t&)> validator)
33 float bestWeight = std::numeric_limits<float>::min();
34 int bestRank = std::numeric_limits<int>::min();
36 for(std::size_t i = 0; i < options.size(); ++i)
43 auto& option = options[i];
45 int rank = option.rank;
46 evaluator::CacheConsiderationEvaluations(option.evaluator, option.context);
47 float weight = option.evaluator->EvaluateContext(option.context,
49 FetchNextEvaluatorSnapshot(option.
51 option.evaluatedObjectMetadata,
54 if(rank > bestRank || (rank == bestRank && weight > bestWeight))
66 #endif //GRAIL_MAX_SELECTOR_H