/// <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);
        }
Пример #2
0
 /// <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;
 }