Dependency mapping for C++ (C++ code)
For each Dependency, ACS can generate #includes for the header and implementation files created for the Package, Class, Data Type, Interface or Signal at the source end of the Dependency. The target of the #include is the header file generated for the Package, Class, Data Type, Interface or Signal at the target end of the Dependency.
The generation of the #include is derived from the properties of the Dependency and the values set for the Tag Definitions applied by the «C++ Dependency» stereotype.
Properties:
• If the Type is set to Interface Realization (dependee is an interface), ACS generates the Dependency as public inheritance from the dependee.
Reverser Notes: When reverse engineering, if a class is reverse engineered as an Interface, inheritance from that Interface is modeled in Modeler through Dependencies of type Interface Realization.
Tag Definitions:
The following tag definitions are applied to a Dependency by the «C++ Dependency» stereotype:
• If the tagged value of the C++ Actual Template Parameters tag definition has been set, the value is used to generate the text between the angle brackets when the class is implementing a templated interface.
• If the tagged value of the C++ In Implementation tag definition is set to FALSE, a #include is generated in the header file. If the tag definition is set to TRUE, a #include is generated in the implementation files.
• If the tagged value of the
C++ Is System tag definition is set to TRUE, the #include uses angle brackets rather than inverted commas.
Example code • If the tagged value of the
C++ Is Usingtag definition is set to TRUE, ACS generates a using declaration or using directive instead of or in addition to a #include.
Example code • The C++ Specialization Parameters tag definition is ignored when generating code.
Reverser Notes: When reverse engineering a specialized version of a template class, the tagged value of the C++ Specialization Parameters tag definition may be set. The use of this tag definition is reserved for future use.
Tell me more... If the «C++ Ignore» stereotype is applied to a Dependency, no #include statements are generated for that Dependency.
Reverser Notes: When reverse engineering #includes, the Reverser records the #includes through the C++ Header Include and C++ Implementation Include tag definitions.