eclipse-qvtd / org.eclipse.qvtd

Eclipse Public License 2.0
0 stars 0 forks source link

[evaluator] Add MappingCall::isInfinite #104

Closed eclipse-qvtd-bot closed 18 hours ago

eclipse-qvtd-bot commented 18 hours ago

| --- | --- | | Bugzilla Link | 465688 | | Status | RESOLVED FIXED | | Importance | P3 normal | | Reported | Apr 28, 2015 09:20 EDT | | Modified | Jan 02, 2016 13:42 EDT | | Reporter | Ed Willink |

Description

When the compile time scheduler cannot guarantee to invoke mappings just once, repeated invocation may be necessary to pick up new objects or just tolerate the absence of a termination condition.

This can be represented by a Boolean isInfinite flag in the MappingCall.

When this flag is set, the runtime must \ a) track all nested invocations so that repeated invocations are suppressed.\ b) terminate the infinite loop once all further invocations are suppressed re-invocations.

Simple examples:

A recursion over a composition tree can use a looping mapping call and guarantee termination. isInfinite = false.

A recursion over a reference cycle can use a looping mapping call but cannot guarantee termination. isInfinite = true to visit each node just once.

A flat schedule loops over everything till done. The root therefore invokes every mapping once on every object, then invokes itself to loop till done. isInfinite = true to stop when nothing left to do.

eclipse-qvtd-bot commented 18 hours ago

By Ed Willink on Jan 02, 2016 13:42

Fixed long ago.