/// <summary> /// Cached node variables so that we don't continually create new entries for basic nodes such /// as sequences, lambdas, etc... /// </summary> public IAnalysisSet GetOrMakeNodeValue(NodeEnvironmentKind kind, object node, Func <object, IAnalysisSet> maker) { IAnalysisSet result; if (!TryGetNodeValue(kind, node, out result)) { result = maker(node); AddNodeValue(kind, node, result); } return(result); }
internal bool RemoveNodeValue(NodeEnvironmentKind kind, object node) { return(_nodeValues.Remove(new NodeEnvironmentKey(kind, node))); }
public IAnalysisSet AddNodeValue(NodeEnvironmentKind kind, object node, IAnalysisSet variable) { return(_nodeValues[new NodeEnvironmentKey(kind, node)] = variable); }
public NodeEnvironmentKey(NodeEnvironmentKind kind, object key) { Kind = kind; Key = key; }
internal bool TryGetNodeValue(NodeEnvironmentKind kind, object node, out IAnalysisSet variable) { return(_nodeValues.TryGetValue(new NodeEnvironmentKey(kind, node), out variable)); }