It is clear that a QVTc launch is different to an ATC launch, since QVTc is multi-directional, with an additional direction model defining the direction. However the launcher does not understand that this is a control model and so does not change the INOUT directions to IN or OUT and so avoid VTE trying to load output files.
The launcher was originally designed as a common front end to which model transformation engines could be bound. Either we make it more flexible or we create specific launchers per language. The first option seems better.
It is suggested that the direction model is to be used by QVTc2ATC so that a unidirectional ATC transformation is created that is 'optimised' for:
* unidirectional
* create/update
* check/enforce
* exact/partial output model (missing from the QVT spec)
* in place if appropriate
* optional trace generation
Creating an ATC transformation that does all of these dynamically leads inevitably to a substantially larger and at least slightly slower transformation.
More comments made about this idea. For development convenience, Víctor Roldan's initial version of QVTc2ATC preserved the multidirectional characteristics and used the INOUT parameters to support it.
This makes QVTc2ATC much simpler: QVTc -> multi-purposeATC.
It makes ATC much harder: LEFT <> MIDDLE <> RIGHT with a little meta-interpretation of DIRECTION to work out what <> is. The ATC launcher does not have the relevant meta-interpretation to adapt to a DIRECTION model content.
If instead:
QVTc2ATC is QVTc + DIRECTION -> single-purposeATC
then ATC has the simpler behaviour of:
LEFT -> MIDDLE + RIGHT
or
LEFT + RIGHT -> MIDDLE + CHECK
or
LEFT + RIGHT -> MIDDLE + updatedRIGHT
or whatever.
-----
The above can all be done with ATC and launcher as they stand. It just needs QVTcATC to generate a DIRECTION-specific output.
-----
A QVTc launcher could offer DIRECTION and ENFORCE etc as checkboxes avoiding the need for user editing of a direction model. 'My' edit and editor plugins for the direction model are therefore just gratuitous bloat.