Community
Participate
Working Groups
It should be possible to write an a2b2c transformation that comprises an a2b followed by a b2c. Do we just vary a RelationCallExp a bit so that it passes Models to a referredTransformation? How does a Model relate to the single/multiple root of a user model? How is a Model variable declared? Perhaps a domain is a Model, so that we check a, enforce b, enforce c, when { A2B(a, b); B2C(b, c); }
If a TransformationCallExp is supported presumably it can be cyclic. ---- The current code handles multiple Transformations since the parent Package hierarchy may have multiples. However the code is inconsistent as to how the analysis of multiples interact. Can one TransformationCallExp really have fine grained dependencies on another transformations Relation? Perhaps each transformation is analyzed independently and joined in a separate pass. But if a Relation extends another should the base be analyzed and re-used or re-analyzed independently. Probably want to code per-Transformation for now. In due course this might be tree-ordered to support multiple transformations.
(In reply to Ed Willink from comment #0) > Do we just vary a RelationCallExp a bit so that it passes Models to a > referredTransformation? > > How does a Model relate to the single/multiple root of a user model? Onvce we reify Extent, a TransformationCallExp can be much simpler. See Bug 547723.
The new support for TypedModel cascades propbably does most of the heavy lifting and might be regarded as an inlined TransformationCallExp. See Bug 549776.
(In reply to Ed Willink from comment #1) > Probably want to code per-Transformation for now. In due course this might > be tree-ordered to support multiple transformations. The notional supporrt for this causes confusion. QVTbaseUtil.getTransformation tries to find exactly one Transformation from the passed Resource. Subsequently the ability to invoke ScheduleManager.addTransformation more than once introduces a multiple-transformation complexity that achievesprecisely nothing. As a minimum QVTbaseUtil.getTransformation should have an extra argument to select which one transformation to process. One day TransformationCallExps might do something useful with multiple transformations.