public IIntermediateForestNode AddOrGetExistingIntermediateNode(IState trigger, int origin, int location) { var hash = trigger.GetHashCode(); IIntermediateForestNode intermediateNode = null; if (_intermediateNodes.TryGetValue(hash, out intermediateNode)) return intermediateNode; intermediateNode = new IntermediateForestNode(trigger, origin, location); _intermediateNodes.Add(hash, intermediateNode); return intermediateNode; }
public IIntermediateForestNode AddOrGetExistingIntermediateNode(DottedRule dottedRule, int origin, int location) { var key = (dottedRule, origin, location); if (this._intermediateNodes.TryGetValue(key, out var intermediateNode)) { return(intermediateNode); } intermediateNode = new IntermediateForestNode(dottedRule, origin, location); this._intermediateNodes.Add(key, intermediateNode); return(intermediateNode); }
public IIntermediateForestNode AddOrGetExistingIntermediateNode(IDottedRule dottedRule, int origin, int location) { int hash = ComputeHashCode(dottedRule, origin, location); if (_intermediateNodes.TryGetValue(hash, out IIntermediateForestNode intermediateNode)) { return(intermediateNode); } intermediateNode = new IntermediateForestNode(dottedRule, origin, location); _intermediateNodes.Add(hash, intermediateNode); return(intermediateNode); }
public IIntermediateForestNode AddOrGetExistingIntermediateNode(IState trigger, int origin, int location) { var hash = trigger.GetHashCode(); IIntermediateForestNode intermediateNode = null; if (_intermediateNodes.TryGetValue(hash, out intermediateNode)) { return(intermediateNode); } intermediateNode = new IntermediateForestNode(trigger, origin, location); _intermediateNodes.Add(hash, intermediateNode); return(intermediateNode); }