71 static constexpr void init(
Pred& p,
Tree const& t)
75 template <
class Tree,
class Node>
76 [[nodiscard]]
static constexpr bool returnable(
Pred const& p,
Tree const& t,
80 auto ls = t.labels(n.index);
81 if constexpr (Negated) {
82 return ls.find(p.label) == ls.end();
84 return ls.find(p.label) != ls.end();
88 template <
class Tree,
class Node>
89 [[nodiscard]]
static constexpr bool traversable(
Pred const& p,
Tree const& t,
92 if constexpr (Negated) {
96 auto ls = t.labels(n.index);
97 switch (t.labelsPropagationCriteria()) {
98 case LabelsPropagationCriteria::ALL: {
99 return ls.find(p.label) != ls.end();
101 case LabelsPropagationCriteria::SUMMARY: {
102 return !ls.empty() && *ls.begin() & p.label == p.label;
104 case LabelsPropagationCriteria::MIN: {
105 return !ls.empty() && *ls.begin() < p.label;
107 case LabelsPropagationCriteria::MAX: {
108 return !ls.empty() && *ls.begin() > p.label;
111 case LabelsPropagationCriteria::NONE: {