Expression ESolver::CreateOrExpression(const vector<Expression>& Disjuncts) { if(Disjuncts.size() == 0) { return Expression::NullObject; } if(Disjuncts.size() == 1) { return Disjuncts[0]; } Expression Current = CreateOrExpression(Disjuncts[0], Disjuncts[1]); uint32 NumDisjuncts = Disjuncts.size(); for(uint32 i = 2; i < NumDisjuncts; ++i) { Current = CreateOrExpression(Current, Disjuncts[i]); } return CreateExpression("or", Current->GetChildren()); }
Expression ESolver::CreateAndExpression(const vector<Expression>& Conjuncts) { if(Conjuncts.size() == 0) { return Expression::NullObject; } if(Conjuncts.size() == 1) { return Conjuncts[0]; } Expression Current = CreateAndExpression(Conjuncts[0], Conjuncts[1]); uint32 NumConjuncts = Conjuncts.size(); for(uint32 i = 2; i < NumConjuncts; ++i) { Current = CreateAndExpression(Current, Conjuncts[i]); } return CreateExpression("and", Current->GetChildren()); }