/// <summary> method compiles ExistCE to an exist node. It does not include rules that /// start with Exist for the first CE. /// </summary> public override BaseJoin compileJoin(ICondition condition, int position, Rule.IRule rule) { ExistCondition exc = (ExistCondition)condition; Binding[] binds = getBindings(exc, rule, position); BaseJoin joinNode = null; if (exc.HasPredicateJoin) { joinNode = new ExistPredJoin(ruleCompiler.Engine.nextNodeId()); } else if (exc.HasNotEqual) { joinNode = new ExistNeqJoin(ruleCompiler.Engine.nextNodeId()); } else { joinNode = new ExistJoin(ruleCompiler.Engine.nextNodeId()); } joinNode.Bindings = binds; return(joinNode); }
/// <summary> method compiles ExistCE to an exist node. It does not include rules that /// start with Exist for the first CE. /// </summary> public override BaseJoin compileJoin(ICondition condition, int position, Rule.IRule rule) { ExistCondition exc = (ExistCondition) condition; Binding[] binds = getBindings(exc, rule, position); BaseJoin joinNode = null; if (exc.HasPredicateJoin) { joinNode = new ExistPredJoin(ruleCompiler.Engine.nextNodeId()); } else if (exc.HasNotEqual) { joinNode = new ExistNeqJoin(ruleCompiler.Engine.nextNodeId()); } else { joinNode = new ExistJoin(ruleCompiler.Engine.nextNodeId()); } joinNode.Bindings = binds; return joinNode; }