# qvtimperative

## `qvtimperative`

The Package for an Imperative QVT transformation.

An Imperative QVT trabsformation is expected to be created by an autogenerator that observes the following run-time restrictions:

A mapping that my be re-invoked must have MappingCall.isInfinite set for every possible invocation.

A mapping that reads object slots before they are guaranteed to have been assigned must declare the slots property in a corresponding ImperativeArea.checkedProperties entry.

A mapping that assigns an object slot that any mapping may access before assignment is guaranteed must declare declare the slots property in a corresponding ImperativeArea.enforcedProperties entry.

All reads by Functions/Queries must be guaranteed to succeed; i.e. the invoking mapping must check readiness before calling the query.

All writes to multi-valued properties must be guaranteed to occur before any read of the property.

## `AddStatement`

An AddStatement appends the value of an expression to a connection.

syntax: `add connection := expression;`

conformsTo `MappingStatement` , `ObservableStatement`

Attributes

`isEnforcedUnique : Boolean[?]`

True if the append is suppressed after a check for uniqueness of the value.

Associations

`ownedExpression : OCLExpression[1]`

The expression whose evaluation yields the value to append.

`targetVariable : ::ConnectionVariable[1]`

The connection to be appended.