When we generate code we generate a main file that spawns these controllers.
Why xtUMLrt? (1) common core with xtUML (sort of); not final, but a starting point towards unification. (2) simpler than UML2 => simplified transformations. (3) issolate from the tool. Why C++ model? (1) avoid regeneration of source C++ files (reduce target build times) (2) automatic synch of header/implementaiton files.
More on xtUMLrt: far from a unified language; work on real unification of UML-RT and xtUML is ongoing (= not finished); work on PSCS is ongoing), but we needed something to work with; we couldn’t wait until that work was finished, so we (Zeligsoft, IncQuery, Ericsson Budapest) develop this to get the ball rolling.
Create plugin project Add dependencies to org.eclipse.papyrusrt.codegen.cpp org.eclipse.papyrusrt.xtumlrt.common org.eclipse.papyrusrt.codegen.lang.cpp Add extension to org.eclipse.papyrusrt.codegen.cpp.generator Define a subclass of oep.codegen.cpp.AbstractCppGenerator implement AbstractCppGenerator.Factory The generator extension: Type: ClassGenerator, CapsuleGenerator, etc. Class: your AbstractCppGenerator.Factory
Dealing with inter-element dependencies
Incremental generation Code for an element depends on code generated for another element