
h1(#pivot). **@pivot@**


h2(#OCLExpression). **@OCLExpression@**

*Associations*

@AddStatement : qvtimperative::AddStatement[?]@

@BufferStatement : qvtimperative::BufferStatement[?]@

@CheckStatement : qvtimperative::CheckStatement[?]@

@DeclareStatement : qvtimperative::DeclareStatement[?]@

@MappingLoop : qvtimperative::MappingLoop[?]@

@NewStatement : qvtimperative::NewStatement[?]@

@SetStatement : qvtimperative::SetStatement[?]@

@SimpleParameterBinding : qvtimperative::SimpleParameterBinding[?]@

h2(#Property). **@Property@**

*Attributes*

@ObservableStatement : Bag(qvtimperative::ObservableStatement)@

@SetStatement : Bag(qvtimperative::SetStatement)@

h2(#VariableDeclaration). **@VariableDeclaration@**

*Attributes*

@SetStatement : Bag(qvtimperative::SetStatement)@

h1(#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.


h2(#AddStatement). **@AddStatement@**

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

syntax: @add connection := expression;@

conformsTo "@MappingStatement@":#MappingStatement, "@ObservableStatement@":#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.

h2(#AppendParameter). **@AppendParameter@**

An AppendParameter of a Mapping defines an output connection to which values may be appended.

syntax: @append name : type;@

conformsTo "@ConnectionVariable@":#ConnectionVariable, "@MappingParameter@":#MappingParameter

h2(#AppendParameterBinding). **@AppendParameterBinding@**

An AppendParameterBinding binds an AppendParameter of an invoked Mapping to a connection of the invoker.
Execution of the mapping may append to the connection.

syntax: @formalName appendsTo connection;@

conformsTo "@MappingParameterBinding@":#MappingParameterBinding

*Associations*

@value : ::ConnectionVariable[1]@

The value or collection of values to bind to boundVariable

h2(#BufferStatement). **@BufferStatement@**

A BufferStatement declares a connection buffer and optionally assigns initial content.

syntax: @buffer name : type := expression;@

@type@ or @expression@ but not both may be omitted. An omitted type is deduced from the initial expression values.

conformsTo "@ConnectionVariable@":#ConnectionVariable, "@VariableStatement@":#VariableStatement, "@ObservableStatement@":#ObservableStatement

*Associations*

@ownedExpression : OCLExpression[?]@

The optional expression computing initial content values.

h2(#CheckStatement). **@CheckStatement@**

A CheckStatement evaluates a predicate. If the evaluation is false, the mapping execution
terminates fails and does nothing.

syntax: @check expression;@

conformsTo "@ObservableStatement@":#ObservableStatement

*Associations*

@ownedExpression : OCLExpression[1]@

h2(#ConnectionVariable). **@ConnectionVariable@**

A ConnectionVariable identifes a variable used as a connection buffer.

conformsTo "@VariableDeclaration@":#VariableDeclaration

*Attributes*

@AddStatement : Bag(qvtimperative::AddStatement)@

@AppendParameterBinding : Bag(qvtimperative::AppendParameterBinding)@

@GuardParameterBinding : Bag(qvtimperative::GuardParameterBinding)@

h2(#DeclareStatement). **@DeclareStatement@**

A DeclareStatement declares a variable and initial value.

syntax: @check var name : type := expression;@

@type@ or @expression@ but not both may be omitted. An omitted type is deduced from the initial expression values.

@check@ may be omitted when the expression type is necessarily conformant.

conformsTo "@VariableStatement@":#VariableStatement, "@ObservableStatement@":#ObservableStatement

*Attributes*

@isCheck : Boolean[?]@

True if the initial expression's type must be  checked for conformance with the variable's type.
A non-conforming vlaue is a predicate failure causing the mapping to fail without doing anything.
This is a derivation of not ownedInit.type.conformsTo(self.type).

*Associations*

@ownedExpression : OCLExpression[1]@

The expression computing the variable's value.

h2(#GuardParameter). **@GuardParameter@**

A GuardParameter of a Mapping defines a input at which a value is consumed from a connection.

syntax: @guard:typedModel name : type;@

conformsTo "@MappingParameter@":#MappingParameter

*Associations*

@referredTypedModel : ::ImperativeTypedModel[1]@

The TypedModel that contains the passed value.

h2(#GuardParameterBinding). **@GuardParameterBinding@**

A GuardParameterBinding binds a guard parameter of an invoked Mapping to a value of a connection.
Execution of the mapping may use the value. A distinct Mapping invocation occurs for each value
in the connection.

syntax: @formalName consumes expression;@

conformsTo "@MappingParameterBinding@":#MappingParameterBinding

*Attributes*

@isCheck : Boolean[?]@

True if each consumed value must be checked for conformance with the variable's type.
A non-conforming vlaue is a predicate failure causing the mapping invocation to fail without doing anything.
This is a derivation of not ownedInit.type.conformsTo(self.type).

*Associations*

@value : ::ConnectionVariable[1]@

The connection providing the invocation values.

h2(#ImperativeModel). **@ImperativeModel@**

The Model of an Imperative QVT transformation.

conformsTo "@BaseModel@":#BaseModel

h2(#ImperativeTransformation). **@ImperativeTransformation@**

An ImperativeTransfornmation distinguishes a QVTi transformation from other transformations.

conformsTo "@Transformation@":#Transformation

h2(#ImperativeTypedModel). **@ImperativeTypedModel@**

An ImperativeTypedModel defines an input,middle or output modek for the transformation.

conformsTo "@TypedModel@":#TypedModel

*Attributes*

@GuardParameter : Bag(qvtimperative::GuardParameter)@

@NewStatement : Bag(qvtimperative::NewStatement)@

@SimpleParameter : Bag(qvtimperative::SimpleParameter)@

@isChecked : Boolean[?]@

True for an input model.

@isEnforced : Boolean[?]@

True for an output model.

h2(#LoopParameterBinding). **@LoopParameterBinding@**

A LoopParameterBinding binds a guard parameter of an invoked Mapping to the value of a loop variable
in the invoker. Execution of the mapping may use the value.

syntax: @formalName iterates expression;@

Deprecated - WIP for a consuming stream

conformsTo "@MappingParameterBinding@":#MappingParameterBinding

*Attributes*

@isCheck : Boolean[?]@

Whether the variable initialization needs to be checked as a predicate. This is a derivation of not ownedInit.type.conformsTo(self.type).

*Associations*

@value : ::LoopVariable[1]@

The value or collection of values to bind to boundVariable

h2(#LoopVariable). **@LoopVariable@**

A LoopVariable defines the iterator of a MappingLoop.

conformsTo "@VariableDeclaration@":#VariableDeclaration

*Attributes*

@LoopParameterBinding : Bag(qvtimperative::LoopParameterBinding)@

*Associations*

@owningMappingLoop : ::MappingLoop[1]@

h2(#Mapping). **@Mapping@**

An Imperative Mapping extends the abstract declarative mapping to support
explicit nested invocation of mappings with bindings for the invoked mapping's
bound variables.

conformsTo "@Rule@":#Rule

*Attributes*

@MappingCall : Bag(qvtimperative::MappingCall)@

@ownedParameters : Set(qvtimperative::MappingParameter)[*|1]@

@ownedStatements : OrderedSet(qvtimperative::Statement)[*|1]@

h2(#MappingCall). **@MappingCall@**

A MappingCall specifies the invocation of a referredMapping with a set of bindings.
An installed mapping is invoked asynchronously whenever suitable values are available on consumed connections.
An invoked mapping is invoked synchronously with values provided by the caller.

conformsTo "@MappingStatement@":#MappingStatement, "@ReferringElement@":#ReferringElement

*Attributes*

@binding : OrderedSet(qvtimperative::MappingParameterBinding)[*|1]@

The Set of bindings of variables or expressions to forma parameters.

@isInfinite : Boolean[?]@

An infinite MappingCall requires re-invocation of the called mapping to be suppressed to avoid an infinite loop.

Deprecated ?? not needed once install works.

@isInstall : Boolean[?]@

An install MappingCall declares a MappingCall that consumes one or more connections and appends to zero or more connections.
Invocations of the mapping are driven by the availability of values in the connection.

@isInvoke : Boolean[?]@

An invoke MappingCall invokes a Mapping that uses one or more values and appends to zero or more connections.
Invocations of the mapping is requested by the caller.

*Associations*

@referredMapping : ::Mapping[1]@

The Mapping invoked by the MappingCall.

h2(#MappingLoop). **@MappingLoop@**

A MappingLoop supports an iteration of mapping invocations.

syntax: @for name : type in expression {...}@

conformsTo "@MappingStatement@":#MappingStatement, "@ObservableStatement@":#ObservableStatement

*Attributes*

@ownedIterators : OrderedSet(qvtimperative::LoopVariable)[*|1]@

The iterator loop variable.

@ownedMappingStatements : OrderedSet(qvtimperative::MappingStatement)[*|1]@

The statements to be iterated, typically a single MappingCall.

*Associations*

@ownedExpression : OCLExpression[1]@

The expression whose values provide the iterator values.

h2(#MappingParameter). **@MappingParameter@**

A MappingParameter defines a formal parameter of a mapping. The parameter is bound by the
mapping invocation to satisfy the requirements of the derived parameter class.

conformsTo "@VariableDeclaration@":#VariableDeclaration

*Attributes*

@MappingParameterBinding : Bag(qvtimperative::MappingParameterBinding)@

*Associations*

@Mapping : ::Mapping[?]@

h2(#MappingParameterBinding). **@MappingParameterBinding@**

A MappingCallBinding specifies the binding of a single variable or value to
the formal parameter of a mapping as part of its inviocatuon or installation.

conformsTo "@Element@":#Element

*Associations*

@boundVariable : ::MappingParameter[1]@

The formal parameter bound by the call.

@mappingCall : ::MappingCall[?]@

The containing MappingCall.

h2(#MappingStatement). **@MappingStatement@**

A MappingCall specifies the invocation of a referredMapping with a set of bindings
of the bound variables of the referredMapping to values provided in the invocation.
Where Collections of values are provided for isLoop bindings, a distinct invocation
is performed for each distinct permutation of Collection elements.

conformsTo "@Statement@":#Statement

*Associations*

@MappingLoop : ::MappingLoop[?]@

h2(#NewStatement). **@NewStatement@**

A NewStatement creates an instance of a class and binds a name to it.

syntax: @new:typedModel name : type := expression;@

If expression is omitted, a new instance if the tyope is created. If expression is provided, it
computes the 'new' object, typically a singlton supervisor fpr a QVTr key.

conformsTo "@VariableStatement@":#VariableStatement, "@ObservableStatement@":#ObservableStatement

*Associations*

@ownedExpression : OCLExpression[?]@

Optional expression that constructs the new object.

@referredTypedModel : ::ImperativeTypedModel[1]@

The TypedModel to which the new object is added.

h2(#ObservableStatement). **@ObservableStatement@**

An ObservableStatement may involve evaluation of an expression that accesses object properties whose
values may not be available. If not ready,the mapping execution is suspended until the required value
is made available by a notifying SetStatement.

syntax: @observe class::property ...@

conformsTo "@Statement@":#Statement

*Attributes*

@observedProperties : Set(Property)[*|1]@

The properties whose accesses must be checked for readiness.

h2(#SetStatement). **@SetStatement@**

A SetStatement sets an object property to a computed value.

syntax: @notify set name : type := expression;@

If @notify@ is specified, execution defines the property as ready enabling
mappings whose ObservableStatements are waiting for the value to resume.

conformsTo "@ObservableStatement@":#ObservableStatement

*Attributes*

@isNotify : Boolean[?]@

@isOpposite : Boolean[?]@

*Associations*

@ownedExpression : OCLExpression[1]@

@targetProperty : Property[1]@

@targetVariable : VariableDeclaration[1]@

h2(#SimpleParameter). **@SimpleParameter@**

A SimpleParameter of a Mapping defines an input at which a value is passed to the mapping.

syntax: @in:typedModel name : type;@

conformsTo "@MappingParameter@":#MappingParameter

*Associations*

@referredTypedModel : ::ImperativeTypedModel[1]@

The TypedModel that contains the passed value.

h2(#SimpleParameterBinding). **@SimpleParameterBinding@**

A SimpleParameterBinding binds a simple parameter of an invoked Mapping to the value of an expression
computed by the invoker. Execution of the mapping may use the value.

syntax: @formalName uses expression;@

conformsTo "@MappingParameterBinding@":#MappingParameterBinding

*Attributes*

@isCheck : Boolean[?]@

Whether the variable initialization needs to be checked as a predicate. This is a derivation of not ownedInit.type.conformsTo(self.type).

*Associations*

@value : OCLExpression[1]@

The value or collection of values to bind to boundVariable

h2(#Statement). **@Statement@**

A Statement is the basis for all execution by a Mapping.

conformsTo "@NamedElement@":#NamedElement

*Associations*

@Mapping : ::Mapping[?]@

h2(#VariableStatement). **@VariableStatement@**

A VariableStatement is the basis for a Mapping execution that makes a name available to subsequent starements.

conformsTo "@VariableDeclaration@":#VariableDeclaration, "@Statement@":#Statement
