public void Find(Action <OuterJoinNode <T1, T2> > callback) { if (_node == null) { OuterJoinNode <T1, T2> joinNode = _left.Successors .OfType <OuterJoinNode <T1, T2> >() .Where(node => _matchRight(node.RightActivation)) .FirstOrDefault(); if (joinNode != null) { _node = joinNode; } else { RightActivation <T2> rightActivation = _rightActivation(); _node = _configurator.Outer <T1, T2>(rightActivation); _left.AddActivation(_node); } } if (_node != null) { callback(_node); } }
public void Find(Action <LeftJoinNode <T, TDiscard> > callback) { if (_node == null) { LeftJoinNode <T, TDiscard> joinNode = _left.Successors .OfType <LeftJoinNode <T, TDiscard> >() .Where(node => _matchRight(node.RightActivation)) .FirstOrDefault(); if (joinNode != null) { _node = joinNode; } else { RightActivation <T> rightActivation = _rightActivation(); _node = _configurator.Left <T, TDiscard>(rightActivation); _left.AddActivation(_node); } } if (_node != null) { callback(_node); } }
public static OuterJoinNode <T1, T2> Outer <T1, T2>(this RuntimeConfigurator configurator, RightActivation <T2> rightActivation) where T1 : class where T2 : class { return(configurator.CreateNode(id => new OuterJoinNode <T1, T2>(id, rightActivation))); }
bool MatchNode(RightActivation <T2> node) { RightActivation <T2> rightActivation = _rightActivation(); if (rightActivation == null) { throw new InternalRulesEngineException("Unexpected null right activation cast"); } return(rightActivation.Equals(node)); }
static bool MatchConstantNode(RightActivation <T> x) { return(x.GetType().IsGenericType&& x.GetType() == typeof(ConstantNode <T>)); }
static bool MatchNode(RightActivation <T> node, MemoryNode <T> right) { return(right.Equals(node)); }
public JoinNode(RightActivation <T> rightActivation) { _rightActivation = rightActivation; _betaMemory = new BetaMemory <T>(); }
public JoinNode(RightActivation <T> rightActivation) { _rightActivation = rightActivation; _successors = new SuccessorSet <T>(); }
public JoinNode(long id, RightActivation <TContext> rightActivation) { _id = id; _rightActivation = rightActivation; }
public static JoinNode <T> Join <T>(this RuntimeConfigurator configurator, RightActivation <T> rightActivation) where T : class { return(configurator.CreateNode(id => new JoinNode <T>(id, rightActivation))); }
public static LeftJoinNode <T1, T2> Left <T1, T2>(this RuntimeConfigurator configurator, RightActivation <T1> rightActivation) where T1 : class { return(configurator.CreateNode(id => new LeftJoinNode <T1, T2>(id, rightActivation))); }
public LeftJoinNode(int id, RightActivation <T> rightActivation) : base(id) { _rightActivation = rightActivation; }
public OuterJoinNode(int id, RightActivation <TRight> rightActivation) : base(id) { _rightActivation = rightActivation; }
public static JoinNode <T> CreateJunction <T>(this IEnumerable <AlphaNode <T> > nodes, RightActivation <T> rightActivation) { var junction = new JoinNode <T>(rightActivation); // junction.AddSuccessor(nodes.CreateJunction()); throw new NotImplementedException(); }
public bool RightActivate(RuleContext <T> context) { RightActivation <T> betaMemory = context.GetBetaMemory(GetHashCode(), () => new BetaMemory <T>(_successors)); return(betaMemory.RightActivate(context)); }