public LeafIterator(AbstractTraceRegion root) { current = root; expectedOffset = root.getMyOffset(); expectedLine = root.getMyLineNumber(); }
protected boolean isConsistentWithParent() { AbstractTraceRegion parent = getParent(); if (parent == null) return true; if (parent.getMyOffset() > getMyOffset()) return false; if (parent.getMyOffset() + parent.getMyLength() < getMyOffset() + getMyLength()) return false; if (parent.getMyLineNumber() > getMyLineNumber()) return false; if (parent.getMyEndLineNumber() < getMyEndLineNumber()) return false; List<AbstractTraceRegion> siblings = parent.getNestedRegions(); if (siblings.size() >= 2 && siblings.get(siblings.size() - 1) == this) { AbstractTraceRegion prev = siblings.get(siblings.size() - 2); if (prev.getMyEndLineNumber() > getMyLineNumber()) { return false; } } return true; }
protected AbstractTraceRegion firstLeafOfCurrent() { while(!current.getNestedRegions().isEmpty()) { AbstractTraceRegion next = current.getNestedRegions().get(0); if (next.getMyOffset() != current.getMyOffset()) { AbstractTraceRegion result = new TemporaryTraceRegion( current.getMyOffset(), next.getMyOffset() - current.getMyOffset(), current.getMyLineNumber(), next.getMyLineNumber(), current.getAssociatedLocations(), current); traversalIndizes.add(-1); expectedOffset = next.getMyOffset(); expectedLine = next.getMyLineNumber(); return result; } traversalIndizes.add(0); current = next; } expectedOffset = current.getMyOffset() + current.getMyLength(); expectedLine = current.getMyEndLineNumber(); return current; } }
protected Set<Integer> createSmapInfo(AbstractTraceRegion targetRegion, Set<LineMapping> lineMappings) { Set<Integer> mapped = newHashSet(); for (AbstractTraceRegion nested : targetRegion.getNestedRegions()) { mapped.addAll(createSmapInfo(nested, lineMappings)); } if (targetRegion.isUseForDebugging()) { ILocationData location = targetRegion.getMergedAssociatedLocation(); if (location != null) { final URI path = targetRegion.getAssociatedPath(); if (path != null) { int myLineNumber = targetRegion.getMyLineNumber(); int myEndLineNumber = targetRegion.getMyEndLineNumber(); for (int i = myLineNumber; i <= myEndLineNumber; i++) { if (!mapped.contains(i)) { final LineMapping e = new LineMapping(location.getLineNumber() + 1, i, i, path); lineMappings.add(e); mapped.add(i); } } } } } return mapped; }
public ITextRegionWithLineInformation getMyRegion() { return new TextRegionWithLineInformation(getMyOffset(), getMyLength(), getMyLineNumber(), getMyEndLineNumber()); }
public LocationData createLocationData(AbstractTraceRegion region, URI myPath) { return new LocationData(region.getMyOffset(), region.getMyLength(), region.getMyLineNumber(), region.getMyEndLineNumber(), myPath); }
ITextRegionWithLineInformation associated = ITextRegionWithLineInformation.EMPTY_REGION; for(AbstractTraceRegion child: result) { rootLocation = rootLocation.merge(new TextRegionWithLineInformation(child.getMyOffset(), child.getMyLength(), child.getMyLineNumber(), child.getMyEndLineNumber())); ILocationData childAssociation = child.getMergedAssociatedLocation(); if (childAssociation != null)
public void writeRegion(AbstractTraceRegion region, Callback<AbstractTraceRegion, ILocationData> callback) throws IOException { callback.doWriteRegion(region.getMyOffset(), region.getMyLength(), region.getMyLineNumber(), region.getMyEndLineNumber(), region.getAssociatedLocations(), region.getNestedRegions()); }
AbstractTraceRegion result = new TemporaryTraceRegion( expectedOffset, next.getMyOffset() - expectedOffset, expectedLine, next.getMyLineNumber(), current.getAssociatedLocations(), parent); traversalIndizes.add(idx); expectedOffset = next.getMyOffset(); expectedLine = next.getMyLineNumber(); return result;