/// <summary> /// Builds CNF conditions form from the given conditions. /// </summary> /// <param name="conditions">Source conditions.</param> /// <returns>Expression in CNF.</returns> public ConditionsCNF Build(Conditions conditions) { IExpression expression = conditions.GetWrappedConditions(); if (expression == null) { return(null); } IExpression transformedExpression = ExpressionToCNFTransformer.Transform(expression); Debug.Assert(Stack.Count == 0); Stack.Clear(); transformedExpression.Accept(this); ConditionsCNF conditionsCNF = new ConditionsCNF(EvaluationManager, conditions.Parameters); while (Stack.Count != 0) { conditionsCNF.Add(Stack.Pop()); } return(conditionsCNF); }
/// <summary> /// Creates the expression CNF builder. /// </summary> /// <param name="evaluationManager">Evaluation manager.</param> public ConditionsCNFBuilder(EvaluationManager evaluationManager) { ExpressionToCNFTransformer = new ExpressionToCNFTransformer(evaluationManager); EvaluationManager = evaluationManager; }