// function to retrieve an ASTNode instance given an id public ASTNode retrieveASTNodethroughID(int id) { if (IdToNodeMap.ContainsKey(id)) { return(IdToNodeMap[id]); } else { return(null); } }
public bool TryGetParent(TimelineRecord record, [NotNullWhen(true)] out TimelineRecord?parent) { if (IdToNodeMap.TryGetValue(record.Id, out var node) && node.ParentNode is object) { parent = node.ParentNode.TimelineRecord; return(true); } parent = null; return(false); }
private bool TryFindUp(string id, Func <TimelineNode, bool> predicate, [NotNullWhen(true)] out TimelineNode?node) { node = null; if (!IdToNodeMap.TryGetValue(id, out var current)) { return(false); } do { if (predicate(current)) { node = current; return(true); } current = current.ParentNode; } while (current is object); return(false); }
public ASTNode GetASTNodeById(int id) { Debug.Assert(IdToNodeMap.ContainsKey(id), $"Unknown id: {id}"); return(IdToNodeMap[id]); }
public bool HasASTNodeId(int id) { return(IdToNodeMap.ContainsKey(id)); }
public bool TryGetNode(TimelineRecord record, [NotNullWhen(true)] out TimelineNode?node) => IdToNodeMap.TryGetValue(record.Id, out node);
public bool TryGetNode(string id, [NotNullWhen(true)] out TimelineNode?node) => IdToNodeMap.TryGetValue(id, out node);
public bool IsPhase(string id) => IdToNodeMap.TryGetValue(id, out var node) && node.TimelineRecord.Type == "Phase";