Package org.eclipse.m2m.atl.emftvm.impl

## Class RuleImpl.UniqueOnState

- java.lang.Object
- - org.eclipse.m2m.atl.emftvm.impl.RuleImpl.UniqueState
  - - org.eclipse.m2m.atl.emftvm.impl.RuleImpl.UniqueOnState

Enclosing class:
  RuleImpl

    protected class RuleImpl.UniqueOnState
    extends RuleImpl.UniqueState

`RuleImpl.UniqueState` class for rules with `Rule.isUnique()` set to `true`.

### Constructor Summary

Constructors
`protected` `UniqueOnState()`

### Method Summary

All Methods Instance Methods Concrete Methods
`java.lang.Object` `applyOne​(StackFrame frame, TraceLink trace)` Applies `#getRule()` to `trace`
`void` `checkAndCreateUniqueMapping​(TracedRule tr, org.eclipse.emf.common.util.EList<SourceElement> ses)` Checks for existence and creates a unique trace mapping entry for the source values in `ses`, if applicable.
`void` `createUniqueMapping​(TraceLink trace)` Creates a unique trace mapping entry for the source values in `trace`, if applicable.
`TraceLink` `getUniqueTrace​(StackFrame frame, java.lang.Object[] values)` Returns the unique rule application trace for `values`, if applicable.
`boolean` `matchFor​(StackFrame frame, java.lang.Object[] values)` Matches this rule against `values`, and records a match in `ExecEnv.getMatches()` in case of a match.
`boolean` `matchFor​(StackFrame frame, java.util.Map<java.lang.String,​java.lang.Object> valuesMap, java.lang.Object[] values)` Matches this rule against `values`, and records a match in `ExecEnv.getMatches()` in case of a match.

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

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

### Constructor Detail

#### UniqueOnState

    protected UniqueOnState()

### Method Detail

#### createUniqueMapping

    public void createUniqueMapping​(TraceLink trace)

Creates a unique trace mapping entry for the source values in `trace`, if applicable.

Specified by:
  `createUniqueMapping` in class `RuleImpl.UniqueState`
Parameters:
  `trace` - the trace element with source values

#### checkAndCreateUniqueMapping

    public void checkAndCreateUniqueMapping​(TracedRule tr,
                                            org.eclipse.emf.common.util.EList<SourceElement> ses)

Checks for existence and creates a unique trace mapping entry for the source values in `ses`, if applicable.

Specified by:
  `checkAndCreateUniqueMapping` in class `RuleImpl.UniqueState`
Parameters:
  `tr` - the traced rule to add the unique traces to
  `ses` - the source values that serve as a the unique trace key

#### matchFor

    public boolean matchFor​(StackFrame frame,
                            java.lang.Object[] values)

Matches this rule against `values`, and records a match in `ExecEnv.getMatches()` in case of a match. In case of a unique rule, this method will not match if the rule has already matched against `values` before.

Specified by:
  `matchFor` in class `RuleImpl.UniqueState`
Parameters:
  `frame` - the stack frame context
  `values` - the source values to match against
Returns:
  `true` iff this rule matches against `values`

#### matchFor

    public boolean matchFor​(StackFrame frame,
                            java.util.Map<java.lang.String,​java.lang.Object> valuesMap,
                            java.lang.Object[] values)

Matches this rule against `values`, and records a match in `ExecEnv.getMatches()` in case of a match. In case of a unique rule, this method will not match if the rule has already matched against `values` before.

Specified by:
  `matchFor` in class `RuleImpl.UniqueState`
Parameters:
  `frame` - the stack frame context
  `valuesMap` - the map of all values, including super-rule elements
  `values` - the source values to match against
Returns:
  `true` iff this rule matches against `values`

#### getUniqueTrace

    public TraceLink getUniqueTrace​(StackFrame frame,
                                    java.lang.Object[] values)

Returns the unique rule application trace for `values`, if applicable.

Overrides:
  `getUniqueTrace` in class `RuleImpl.UniqueState`
Parameters:
  `frame` - the stack frame context
  `values` - the source values for the trace
Returns:
  the unique rule application trace, or `null`

#### applyOne

    public java.lang.Object applyOne​(StackFrame frame,
                                     TraceLink trace)

Applies `#getRule()` to `trace`

Overrides:
  `applyOne` in class `RuleImpl.UniqueState`
Parameters:
  `frame` - the stack frame in which to execute the applier and post-apply
  `trace` - the trace link with values to which to apply the rule
Returns:
  the rule application result