コード例 #1
0
        /// <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);
        }
コード例 #2
0
 internal bool RemoveNodeValue(NodeEnvironmentKind kind, object node)
 {
     return(_nodeValues.Remove(new NodeEnvironmentKey(kind, node)));
 }
コード例 #3
0
 public IAnalysisSet AddNodeValue(NodeEnvironmentKind kind, object node, IAnalysisSet variable)
 {
     return(_nodeValues[new NodeEnvironmentKey(kind, node)] = variable);
 }
コード例 #4
0
 public NodeEnvironmentKey(NodeEnvironmentKind kind, object key)
 {
     Kind = kind;
     Key  = key;
 }
コード例 #5
0
 internal bool TryGetNodeValue(NodeEnvironmentKind kind, object node, out IAnalysisSet variable)
 {
     return(_nodeValues.TryGetValue(new NodeEnvironmentKey(kind, node), out variable));
 }