Package com.oracle.truffle.api.instrument.impl

## Class LineToProbesMap

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

All Implemented Interfaces:
  `Probe.ProbeListener`

    public class LineToProbesMap
    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 `Probe`s whose associated `SourceSection` starts on that line.

### Constructor Summary

Constructors
`LineToProbesMap()`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `addProbeToLine​(LineLocation line, Probe probe)` Records creation of a probe whose associated source starts on the given line.
`void` `endASTProbing​(Source source)` Notifies that the application of all registered `ASTProber`s to a newly constructed AST has completed.
`Probe` `findLineProbe​(LineLocation lineLocation)` Returns the `Probe`, if any, associated with source that starts on a specified line; if there are more than one, return the one with the first starting character location.
`void` `forget​(Source source)`
`java.util.Collection<Probe>` `getProbesAtLine​(LineLocation line)` Returns a collection of `Probe`s whose associated source begins at the given `LineLocation`, an empty list if none.
`java.util.Collection<Probe>` `getProbesAtLineNumber​(int lineNumber)` Convenience method to get probes 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

#### LineToProbesMap

    public LineToProbesMap()

### 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

#### findLineProbe

    public Probe findLineProbe​(LineLocation lineLocation)

Returns the `Probe`, if any, associated with source that starts on a specified line; if there are more than one, return the one with the first starting character location.

#### addProbeToLine

    protected void addProbeToLine​(LineLocation line,
                                  Probe probe)

Records creation of a probe whose associated source starts on the given line.

If the line already exists in the internal `lineToProbesMap`, this probe 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 probe.

This class requires that each added line/probe pair hasn't been previously added. However, attaching the same probe to a new line location is allowed.

Parameters:
  `line` - The `LineLocation` to attach the probe to.
  `probe` - The `Probe` to attach for that line location.

#### getProbesAtLine

    public java.util.Collection<Probe> getProbesAtLine​(LineLocation line)

Returns a collection of `Probe`s whose associated source begins at the given `LineLocation`, an empty list if none.

Parameters:
  `line` - The line to check.
Returns:
  A collection of probes at the given line.

#### getProbesAtLineNumber

    public java.util.Collection<Probe> getProbesAtLineNumber​(int lineNumber)

Convenience method to get probes according to a int line number. Returns a collection of `Probe`s at the given line number, an empty list if none.

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

#### forget

    public void forget​(Source source)