public class LineToSourceSectionMap extends java.lang.Object implements Probe.ProbeListener
LineLocation
(a line number in a specific piece of Source
code) to
a collection of SourceSection
s that exist on that line. This class assumes that all nodes
are instrumented as it uses the Probe.ProbeListener
interface to determine the source sections
that exist in the file.Constructor and Description |
---|
LineToSourceSectionMap() |
Modifier and Type | Method and Description |
---|---|
protected void |
addSourceSectionToLine(LineLocation line,
SourceSection sourceSection)
Adds a source section to the given line.
|
void |
endASTProbing(Source source)
Notifies that the application of all registered
ASTProber s to a newly constructed
AST has completed. |
java.util.Collection<SourceSection> |
getSourceSectionsAtLine(LineLocation line)
Returns a collection of
SourceSection s at the given LineLocation , an empty
list if none. |
java.util.Collection<SourceSection> |
getSourceSectionsAtLineNumber(int lineNumber)
Convenience method to get source sections according to a int line number.
|
void |
newProbeInserted(Probe probe)
Notifies that a
Probe has been newly attached to an AST via
ProbeNode.Instrumentable.probe() . |
void |
probeTaggedAs(Probe probe,
SyntaxTag tag,
java.lang.Object tagValue)
Notifies that a
SyntaxTag has been newly added to the set of tags associated with
a Probe via Probe.tagAs(SyntaxTag, Object) . |
void |
startASTProbing(Source source)
Notifies that all registered
ASTProber s are about to be applied to a newly
constructed AST. |
public void startASTProbing(Source source)
Probe.ProbeListener
ASTProber
s are about to be applied to a newly
constructed AST.startASTProbing
in interface Probe.ProbeListener
source
- source code from which the AST was constructedpublic void newProbeInserted(Probe probe)
Probe.ProbeListener
Probe
has been newly attached to an AST via
ProbeNode.Instrumentable.probe()
.
There can be no more than one Probe
at a node; this notification will only be
delivered the first time probe() is called at a
particular AST node. There will also be no notification when the AST to which the Probe
is attached is cloned.
newProbeInserted
in interface Probe.ProbeListener
public void probeTaggedAs(Probe probe, SyntaxTag tag, java.lang.Object tagValue)
Probe.ProbeListener
SyntaxTag
has been newly added to the set of tags associated with
a Probe
via Probe.tagAs(SyntaxTag, Object)
.
The tags at a Probe
are a set; this notification
will only be delivered the first time a particular tag is added at
a Probe
.
An optional value supplied with tagAs(SyntaxTag, Object) is reported to all listeners, but not stored. As a consequence, the optional value will have no effect at all if the tag had already been added.
probeTaggedAs
in interface Probe.ProbeListener
probe
- where a tag has been addedtag
- the tag that has been newly added (subsequent additions of the tag are
unreported).tagValue
- an optional value associated with the tag for the purposes of reporting.public void endASTProbing(Source source)
Probe.ProbeListener
ASTProber
s to a newly constructed
AST has completed.endASTProbing
in interface Probe.ProbeListener
source
- source code from which the AST was constructedprotected void addSourceSectionToLine(LineLocation line, SourceSection sourceSection)
If the line already exists in the internal lineToSourceSectionsMap
, this source
section will be added to the existing collection. If no line already exists in the internal
map, then a new key is added along with a new collection containing the source section.
This class does not check if a source section has already been added to a line.
line
- The LineLocation
to attach the source section to.sourceSection
- The SourceSection
to attach for that line location.public java.util.Collection<SourceSection> getSourceSectionsAtLine(LineLocation line)
SourceSection
s at the given LineLocation
, an empty
list if none.line
- The line to check.public java.util.Collection<SourceSection> getSourceSectionsAtLineNumber(int lineNumber)
SourceSection
s at the given line number. If there are no source
sections at that line, an empty list is returned.lineNumber
- The line number to check.