Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Papyrus/Codegen/Cpp description"

m (C++ profile)
(Replaced content with "= Page has moved to [https://gitlab.eclipse.org/eclipse/papyrus/org.eclipse.papyrus-designer/-/wikis/Cpp_code_generation gitlab] =")
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
The C++ code generation is available in the extra plugins of Papyrus. Make sure to unselect "Group features by category" and install "Papyrus C++ profile, view and code generation (Incubation)". C++ code generation is also automatically installed with [Papyrus_Qompass Qompass].
+
= Page has moved to [https://gitlab.eclipse.org/eclipse/papyrus/org.eclipse.papyrus-designer/-/wikis/Cpp_code_generation gitlab] =
 
+
The C++ code generation comes with the following elements
+
 
+
* A C++ specific profile and a view simplifying the edition
+
* The code generator itself (enriched with the C++ profile)
+
* A CDT editor integration, allowing you to edit the code of a class in a CDT editor
+
 
+
 
+
== C++ profile ==
+
 
+
The C++ profile defines a set of stereotypes that add C++ specific information to a UML model. For instance, a parameter of an operation might be passed by value, reference or as a pointer. The latter can be specified via the stereotypes C_Cpp::Ref and C_Cpp::Ptr respectively.
+
 
+
In the sequence, we shortly describe all stereotypes in alphabetical order:
+
 
+
{| class="wikitable" style="border:1px solid #BBB"
+
|-
+
! Stereotype
+
! Metaclass extension
+
! Description
+
|-
+
| Array
+
| Parameter or Property
+
| Indicate array with a given multiplicity. Unlike the multiplicities in UML, the array size can be an arbitrary expression, it must not be directly an integer.
+
|-
+
| Const
+
| Operation, Property or Parameter
+
| Declare that an operation, property or parameter is constant. Refer to the C++ semantics
+
|-
+
| External
+
| Classifier
+
| Indicate that no code should be generated for this classifier. Other classifiers will import this classifier with the include path specified in the "definition" attribute
+
|-
+
| ExternLibrary
+
| Package
+
| Mark a package as External Library. If an element of this package is used, the associated CDT project will be configured accordingly (include and library paths)
+
|-
+
| Friend
+
| Operation or Dependency
+
| Indicate that the operation is a C++ friend
+
|-
+
| Include
+
| Class, Package or PackageImport
+
| An arbitrary string that is added to header and body file. Although primarily intended for manual #include directives, it can be used for arbitrary definitions. The contents of the attribute "preBody" is added to a C++ body file before automatic #include statements, "body" after these.
+
|-
+
| Inline
+
| Operation
+
| Indicate that generator produces an inline method inside the header file
+
|-
+
| NoCodeGen
+
| Element
+
| Do not generate code for this element
+
|-
+
| Ptr
+
| Parameter or Property
+
| Make attribute or parameter declaration a pointer.
+
|-
+
| Ref
+
| Parameter or Property
+
| Call call by references semantics to the parameter
+
|-
+
| Template
+
| Class
+
| Indicate that the class is a C++ template
+
|-
+
| Union
+
| DataType
+
| Generate a union instead of a struct for this data type
+
|-
+
| Virtual
+
| Operation
+
| Make operation virtual
+
|-
+
| Volatile
+
| Operation, Parameter or Property
+
| Indicate the storage class
+
|}
+
 
+
== Code generator ==
+
 
+
More information will be added soon.
+
 
+
== CDT integration ==
+
 
+
After installation, you can import the plugin org.eclipse.papyrus.cpp.test into your workspace. Within, you can find a sample model called "TestCDTintegration". Once opened, you should see the following screen.
+
 
+
[[File:cdt-editor.png]]
+
 
+
The CDT editor appears within a tab of Papyrus. This enables a side-by-side view of model and code. The editor can be invoked via the context menu of a class, operation or transition (within a statechart). Synchronisation is done, when the CDT editor looses focus. When model elements change, e.g. is you rename an operation, the code is regenerated and an update is done. It should not be possible to get conflicting changes, since a change in the model implies that the focus is no longer on the textual editor, i.e. changes in the texteditor should be already in the model.
+

Latest revision as of 05:13, 18 March 2024

Page has moved to gitlab

Back to the top