The plugins of papyrus sofware designer have the following structure

## languages

Top-level folder for all code generators (and associated elements) for a certain programming language

### common

Contains parts that are common to all code generators

- oepd.languages.common.base - set of base utilities in the context of code generation
- oepd.languages.common.codegen.ui - UI part, registering of common menu
- oepd.languages.common.extensionpoints - A set of extension points used by the code generators.
- oepd.languages.common.profile - A common code generation profile that provides hints which generator should be used or that no code should be generated for a specific element.
- oepd.languages.common.profile.ui - UI part that depends on Papyrus extensions points. It makes the profile visible via "Apply registered library"
- oepd.languages.common.testutils - common utilities for testing code generators (comparing expect code with actually generated code)
- oepd.languages.common.texteditor.model - Support possibility to add textual editors as views
- oepd.languages.common.texteditor.modelexplorer - Support possibility to add textual editors as views (model-explorer support)

### java

- oepd.languages.java.codegen - code generator itself, registers generator with extension point defined in oepd.languages.common.extensionpoints
- oepd.languages.java.codegen.ui - UI part (context menu) that contains the handlers that invoke the code generator directly
- oepd.languages.java.generator.jdtsynchronizer - synchronization with JDT (not in build)
- oepd.languages.java.generator.metamodel.jdt - JDT meta-model, generated model plugin (not in build)
- oepd.languages.java.generator.metamodel.jdt.edit - JDT meta-model, generated edit plugin (not in build)
- oepd.languages.java.generator.metamodel.jdt.editor - JDT meta-model, generated editor plugin (not in build)
- oepd.languages.java.generator.ui - UI part of generator (context menu) that contains the handlers that invoke the code generator directly
- oepd.languages.java.jdt.project - Create JDT projects
- oepd.languages.java.library - a model library defining primitive Java types (int. char, ...) as well as the corresponding java.language classes (Integer, Character, ...)
- oepd.languages.java.library.ui - UI part that depends on Papyrus extensions points. It makes the library visible via "Import registered library"
- oepd.languages.java.profile - A static profile for Java
- oepd.languages.java.profile.ui - UI part that depends on Papyrus extensions points. It makes the profile visible via "Apply registered profile"
- oepd.languages.java.reverse - Reverse engineering plugin
- oepd.languages.java.reverse.ui - UI part (context menu) that contains the handlers that invoke the reverse engineering

### cpp

c++ code generation related folder. Besides the code generator itself, the

- oepd.languages.cpp.cdt.project - support for creating CDT projects
- oepd.languages.cpp.cdt.texteditor - possibility to open a CDT editor on model
- oepd.languages.cpp.codegen - code generator itself, registers generator with extension point defined in oepd.languages.common.extensionpoints
- oepd.languages.cpp.codegen.ui - UI part (context menu) that contains the handlers that invoke the code generator directly
- oepd.languages.cpp.examples - a set of example models (currently, only HelloWorldOO)
- oepd.languages.cpp.library - a set of model libraries for C++, notable a library with Ansi-C primitive types
- oepd.languages.cpp.library.ui - UI part that depends on Papyrus extensions points. It makes the library visible via "Import registered library"
- oepd.languages.cpp.profile - A static profile for C/C++
- oepd.languages.cpp.profile.ui - UI part that depends on Papyrus extensions points. It makes the profile visible via "Apply registered profile"
- oepd.languages.cpp.reverse - Reverse C++ models
- oepd.languages.cpp.reverse.ui - UI part (context menu) that contains the handlers that invoke the reverse engineering
- oepd.languages.cpp.tests - Tests of the code generator (test model along with expected code)
- oepd.languages.cpp.view - A dedicated C++ view. It's considered as deprecated compared to XWT based tab within the property view, but still more powerful

### idl

Generation of DDS IDL from the model

- oepd.languages.idl.codegen - code generator itself, registers generator with extension point defined in oepd.languages.common.extensionpoints
- oepd.languages.idl.codegen.opensplice - hybrid code generator - produces IDL first and then uses the open-splice generator to generate C++ files from the IDL.
- oepd.languages.idl.codegen.ui - UI part (context menu) that contains the handlers that invoke the code generator directly
- oepd.languages.idl.library - A model library with IDL basic types (long, unsigned char, wchar, ...) and a very small profile that enables to declare an attribute as "Key" attribute for IDL. TODO: the profile should not be in this plugin and eventually be replaced in favor of other ways to designate the key attribute (generic annotation mechanisms?).

## transformation

A set of transformation related plugins (to be detailed)

- oepd.transformation.base - Basic utility functions related to transformations
- oepd.transformation.core - Main transformation functions: a lazy copier and the possibility to execute a transformation chain
- oepd.transformation.export - Export a set of selected elements into a new file. Part of transformation folder, since it requires functionality of the lazy copier
- oepd.transformation.extensions - extension points that must be implemented by a model-to-model transformation chain
- oepd.transformation.library - model library with predefined model-to-model transformations as well as a transformation chain
- oepd.transformation.profile - a simple profile that allows to tag model-to-model transformations
- oepd.transformation.tests - a set of tests
- oepd.transformation.ui - UI part (context menu) and handlers
- oepd.transformation.vsl - a small set of utility functions that enables the evaluation of MARTE VSL expressions

### languages

This folder contains programming language specific model-to-model transformations.

#### cpp

- oepd.transformation.languages.cpp.library - a model library with C++ specific transformations. The plugin contains a set of examples as well (HelloWorld and State-machine)
- oepd.transformation.languages.cpp.tests - tests related to M2M transformations for C++

#### java

- oepd.transformation.languages.java.library - a model library with Java specific transformations (e.g. BootLoader creation). The plugin contains a set of examples as well (HelloWorld)

## deployment

A deployment profile and associated utility classes. The deployment profile contains the DeploymentPlan stereotype as well as instance-related ones.

- oepd.deployment.profile - deployment profile
- oepd.deployment.tools - set of utility classes for the deployment profile and deployment plan

## components

A set of plugins related to component-based design, including suitable M2M transformations for generating code from these models

- oepd.components.fcm.profile - flexible component model profile. A component profile that has been developed in the context of the project Flex-eWare. Will probably be replace by the OMG unified component model (UCM) in the future
- oepd.components.modellibs.core - a set of model libraries for component based model-to-model transformations. Contains some examples as well.
- oepd.components.tests - tests related to component based transformations and examples
- oepd.components.transformation - some helper classes for component-based model-to-model transformations
- oepd.components.transformation.cpp - C++ specific model-to-model transformations
- oepd.components.transformation.java - Java specific model-to-model transformations
- oepd.components.transformation.ui - UI part (context menu) for component based applications
- oepd.components.validation - Validation rules for component-based applications

## monitoring

Monitor the execution of a program that has been instrumented during code generation

- oepd.monitoring.sm - support for state machine monitoring: runtime mechanisms for communication between development environment and generated code.

## docs

A set of documentation plugins

## ucm

A Papyrus customization of the OMG Unified Component Model (UCM)

- oepd.ucm.core - core plugin with UCM (semantic) element-types and edit helper advices
- oepd.ucm.css - CSS (cascading style sheet)
- oepd.ucm.diagrams - architecture, diagram specific element types and palettes for UCM diagrams
- oepd.ucm.library - a small model library
- oepd.ucm.modelexplorer - model explorer (new child) customization
- oepd.ucm.profile - UCM core profile
- oepd.ucm.profile.ui - UI part (profile registration)
- oepd.ucm.properties - XWT based property view
- oepd.ucm.supplement.profile - Supplement profile for UCM
- oepd.ucm.supplement.profile.ui - UI part (profile registration)
- oepd.ucm.types.profile - Type definition for UCM
- oepd.ucm.types.profile.ui - UI part (profile registration)
- oepd.ucm.ui - UI (context menu)
- oepd.ucm.wizards - Wizard for creation of new UCM models