use current_group() helper

This commit is contained in:
Ari Lazier 2015-11-25 18:34:36 -08:00
parent be2a3fab47
commit 6ac6f39894
1 changed files with 7 additions and 7 deletions

View File

@ -154,20 +154,20 @@ struct ParserState
void apply_or() void apply_or()
{ {
Predicate &group = *group_stack.back(); Predicate *group = current_group();
if (group.type == Predicate::Type::Or) { if (group->type == Predicate::Type::Or) {
return; return;
} }
// convert to OR // convert to OR
group.type = Predicate::Type::Or; group->type = Predicate::Type::Or;
if (group.cpnd.sub_predicates.size() > 2) { if (group->cpnd.sub_predicates.size() > 2) {
// split the current group into an AND group ORed with the last subpredicate // split the current group into an AND group ORed with the last subpredicate
Predicate new_sub(Predicate::Type::And); Predicate new_sub(Predicate::Type::And);
new_sub.cpnd.sub_predicates = std::move(group.cpnd.sub_predicates); new_sub.cpnd.sub_predicates = std::move(group->cpnd.sub_predicates);
group.cpnd.sub_predicates = { new_sub, std::move(new_sub.cpnd.sub_predicates.back()) }; group->cpnd.sub_predicates = { new_sub, std::move(new_sub.cpnd.sub_predicates.back()) };
group.cpnd.sub_predicates[0].cpnd.sub_predicates.pop_back(); group->cpnd.sub_predicates[0].cpnd.sub_predicates.pop_back();
} }
} }