com.oracle.truffle.api.instrument.impl

## Class LineToSourceSectionMap

- java.lang.Object
- - com.oracle.truffle.api.instrument.impl.LineToSourceSectionMap

All Implemented Interfaces:
  Probe.ProbeListener

    public class LineToSourceSectionMap
    extends java.lang.Object
    implements Probe.ProbeListener

A mapping from `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 Summary

Constructors
Constructor and Description
`LineToSourceSectionMap()`

### Method Summary

Methods
`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.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### LineToSourceSectionMap

    public LineToSourceSectionMap()

### Method Detail

#### startASTProbing

    public void startASTProbing(Source source)

Description copied from interface: `Probe.ProbeListener`
Notifies that all registered `ASTProber`s are about to be applied to a newly constructed AST.

Specified by:
  `startASTProbing` in interface `Probe.ProbeListener`
Parameters:
  `source` - source code from which the AST was constructed

#### newProbeInserted

    public void newProbeInserted(Probe probe)

Description copied from interface: `Probe.ProbeListener`
Notifies that a `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.

Specified by:
  `newProbeInserted` in interface `Probe.ProbeListener`

#### probeTaggedAs

    public void probeTaggedAs(Probe probe,
                     SyntaxTag tag,
                     java.lang.Object tagValue)

Description copied from interface: `Probe.ProbeListener`
Notifies that a `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.

Specified by:
  `probeTaggedAs` in interface `Probe.ProbeListener`
Parameters:
  `probe` - where a tag has been added
  `tag` - 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.

#### endASTProbing

    public void endASTProbing(Source source)

Description copied from interface: `Probe.ProbeListener`
Notifies that the application of all registered `ASTProber`s to a newly constructed AST has completed.

Specified by:
  `endASTProbing` in interface `Probe.ProbeListener`
Parameters:
  `source` - source code from which the AST was constructed

#### addSourceSectionToLine

    protected void addSourceSectionToLine(LineLocation line,
                              SourceSection sourceSection)

Adds a source section to the given line.

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.

Parameters:
  `line` - The `LineLocation` to attach the source section to.
  `sourceSection` - The `SourceSection` to attach for that line location.

#### getSourceSectionsAtLine

    public java.util.Collection<SourceSection> getSourceSectionsAtLine(LineLocation line)

Returns a collection of `SourceSection`s at the given `LineLocation`, an empty list if none.

Parameters:
  `line` - The line to check.
Returns:
  the source sections at the given line.

#### getSourceSectionsAtLineNumber

    public java.util.Collection<SourceSection> getSourceSectionsAtLineNumber(int lineNumber)

Convenience method to get source sections according to a int line number. Returns a collection of `SourceSection`s at the given line number. If there are no source sections at that line, an empty list is returned.

Parameters:
  `lineNumber` - The line number to check.
Returns:
  A collection of source sections at the given line.