internal TreeOccSet this[TreeId treeId] { get { return(TreeSet.ContainsKey(treeId) ? TreeSet[treeId] : null); } }
internal IOccurrence GetFirstOccAfterSpecifiedIndex(Depth depth, TreeId treeId, PreorderIndex rootIndex, PreorderIndex specifiedIndex) { if (!ContainsRootIndex(depth, treeId, rootIndex)) { return(null); } var rOcc = this[depth][treeId][rootIndex]; return(rOcc.RightMostSet.FirstOrDefault(t => t.SecondIndex > specifiedIndex)); }
OccInduced(TreeId treeId, Depth depth, IList <int> preorderCode) { if (string.IsNullOrEmpty(treeId)) { throw new ArgumentOutOfRangeException("treeId"); } if (depth < 0) { throw new ArgumentOutOfRangeException("depth", "Depth of an occurrence should be larger than or equal to 0."); } if (preorderCode == null || preorderCode.Count <= 0) { throw new ArgumentNullException("preorderCode"); } this.treeId = treeId; this.depth = depth; this.preorderCode = new ReadOnlyCollection <int>(preorderCode); AbleToConnect = (PreorderCode.Count == 2); AbleToBeConnected = preorderCode[0] > 0; }
internal List <IOccurrence> GetRightMostOccurrences(int depth, TreeId treeId, PreorderIndex rootIndex) { return(ContainsRootIndex(depth, treeId, rootIndex) ? this[depth][treeId][rootIndex].RightMostSet : null); }
internal IOccurrence GetOccurrence(int depth, TreeId treeId, PreorderIndex rootIndex) { return(ContainsRootIndex(depth, treeId, rootIndex) ? this[depth][treeId][rootIndex].FirstOcc : null); }
internal bool ContainsRootIndex(int depth, TreeId treeId, PreorderIndex rootIndex) { return(DepthOccSet.ContainsKey(depth) && (DepthOccSet[depth].ContainsRootIndex(treeId, rootIndex))); }
internal bool ContainsTreeAtDepth(Depth depth, TreeId treeId) { return(DepthOccSet.ContainsKey(depth) && DepthOccSet[depth].ContainsTree(treeId)); }
internal bool ContainsTree(TreeId treeId) { return(TreeSet.ContainsKey(treeId)); }
internal bool ContainsRootIndex(TreeId treeId, PreorderIndex rootIndex) { return(ContainsTree(treeId) && TreeSet[treeId].ContainsRootIndex(rootIndex)); }
public RootOcc(TreeId treeId, Depth depth, PreorderIndex rootIndex) { this.treeId = treeId; this.depth = depth; this.rootIndex = rootIndex; }
internal static IOccurrence Create(TreeId treeId, Depth depth, IList <int> preorderCode) { return(new OccInduced(treeId, depth, preorderCode)); }
internal TreeOccSet(TreeId treeId) { this.treeId = treeId; }