@Override public <Col extends Column, N extends Number> boolean traverseI( ColumnHome<N, Col> columnHome, AdjEnumModel<Col> iterationModel, T token, InterNode node) throws IOException { if (intersectionSet.isSubSetOf(node.unionPattern())) { return super.traverseI(columnHome, iterationModel, token, node); } return true; }
public <Col extends Column, N extends Number> boolean traverseL( ColumnHome<N, Col> columnHome, AdjEnumModel<Col> iterationModel, T token, LeafNode node) throws IOException { if (intersectionSet.isSubSetOf(node.unionPattern())) { final int start = node.getLeafColumnStart(); final int end = node.getLeafColumnEnd(); final SortableMemory<Col> mem = iterationModel.getMemory(memoryPartId); for (int i = start; i < end; i++) { if (i != ignoreColumn) { final IBitSet superCandidate = mem.getColumn(i).bitValues(); if (intersectionSet.isSubSetOf(superCandidate)) { superSetFound = true; return false; } } } } return true; }
@Override public IBitSet filterAdjacentPairs( IBitSet filterCutPattern, SortableMemory<Column> cols, AdjCandidates<Column> adjCandidates) throws IOException { for (int i = 0; i < children.length && filterCutPattern != null; i++) { final Node<T> child = children[i]; if (child != null && filterCutPattern.isSubSetOf(child.unionPattern)) { filterCutPattern = child.filterAdjacentPairs(filterCutPattern, cols, adjCandidates); } } return filterCutPattern; }